Twilio 函数:如果录制以挂断结束,则忽略记录回调的 TwiML 响应



我正在编写一个Twilio函数,该函数记录呼叫者的语音邮件,然后将带有录音URL的SMS发送到恒定的电话号码。当呼叫者通过按任何onFinishKey键结束语音邮件录制时,它会按预期工作。但是,如果用户通过挂断电话结束语音邮件录制,则代码仍会到达控制台.log但文本消息永远不会发送。我TwiML响应被忽略了,因为调用者已经挂断了。我尝试让Recordaction指向 TwiML 垃圾箱,但 TwiML 垃圾箱似乎不支持短信/消息命令作为对语音呼叫的响应 (https://support.twilio.com/hc/en-us/articles/360017437774-Combining-Voice-SMS-and-Fax-TwiML-in-the-Same-Response(。我还尝试让Recordaction指向一个不同的函数,该函数只发送短信,但当短信代码位于同一函数中时,会导致相同的结果。

伪代码:

exports.handler = function(context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
if (!event.RecordingUrl) {
twiml.say('Starting to record...');
twiml.record();
} else {
twiml.sms(`${event.RecordingUrl}`, {to: '+1-222-333-4444'});
console.log('Prepared TwiML to send text message!');
}
callback(null, twiml);
}

有没有办法解决这个问题?

您应该使用消息资源而不是 TwiML 发送短信。

exports.handler = function(context, event, callback) {
const twilioClient = context.getTwilioClient();

twilioClient.messages
.create({
body: 'Hello World',
to: '+15555555555',
from: '+1802123456 ',
}).then(message =>  {
console.log(message.sid);
callback();
})
.catch(error => {
console.log(error);
callback("error");
});
};

最新更新