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