Я пытаюсь написать простую настройку Twilio, которая будет выполнять исходящий вызов, записывать голосовое сообщение пользователя и немедленно воспроизводить его обратно ему.Я создал две функции: startcall
и msgin
. StartCall вызывает пользователя и указывает MsgIn в параметре url
вызова. MsgIn затем имеет два основных режима работы: первоначально, когда нет прикрепленной записи, он возвращает ответ TwiML, начинающий запись, а затем, когда вызывается как webhook с соответствующим параметром, он воспроизводит запись и кладет трубку.,По крайней мере, это то, что должен сделать.
В соответствии с моим пониманием документации, я должен прикрепить веб-крючок к recordingStatusCallback
, поскольку запись может быть недоступна, когда action
webhook вызывается.Однако, хотя консоль функции указывает, что оба веб-подключения выполнены, журнал вызовов показывает только один последующий вызов msgin
с нулевым значением для event.RecordingStatus
(что соответствует action
), и вызов действительно зависает.без воспроизведения записи.Что мне здесь не хватает?
// this function's path is /msgin
exports.handler = function(context, event, callback) {
if (!event.RecordingStatus && !event.RecordingUrl) {
let twiml = new Twilio.twiml.VoiceResponse();
console.log("Initial MsgIn");
twiml.say({ voice: 'man', language: 'en-us' }, 'Leave your message');
twiml.record({
playBeep: false,
transcribe: false,
trim: "trim-silence",
timeout: 1,
recordingStatusCallback: "/msgin",
recordingStatusCallbackEvent: "completed",
action: "/msgin"
});
console.log("Recording started");
callback(null, twiml);
}
else if (event.RecordingStatus == "completed") {
let twiml = new Twilio.twiml.VoiceResponse();
console.log("Supposedly callback");
twiml.say({ voice: 'man', language: 'en-us' }, 'You said');
twiml.play(event.RecordingUrl);
twiml.hangup();
callback(null, twiml);
}
else {
console.log("Supposedly action");
callback(null, "");
}
};