Twilio 函数:如果录制以挂断结束,则忽略录制回调的 TwiML 响应
Twilio Functions: Record callback's TwiML response is ignored if recording ended with hangup
我正在编写一个 Twilio 函数来记录呼叫者的语音邮件,然后将带有 URL 录音的 SMS 发送到一个常量 phone 号码。当呼叫者通过按任何 onFinishKey
键结束语音邮件录音时,它会按预期工作。但是,如果用户通过挂断电话结束语音邮件录音,代码仍会到达下面的 console.log,但不会发送短信。我猜测 TwiML 响应被忽略,因为呼叫者已经挂断电话。我尝试让 Record
的 action
指向 TwiML bin,但 TwiML bin 似乎不支持 SMS/Message 命令作为对语音呼叫 (https://support.twilio.com/hc/en-us/articles/360017437774-Combining-Voice-SMS-and-Fax-TwiML-in-the-Same-Response) 的响应。我还尝试让 Record
的 action
指向一个不同的函数,该函数只发送 SMS,但当 SMS 代码在同一个函数中时会导致相同的结果。
伪代码:
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 来发送 SMS。
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");
});
};
我正在编写一个 Twilio 函数来记录呼叫者的语音邮件,然后将带有 URL 录音的 SMS 发送到一个常量 phone 号码。当呼叫者通过按任何 onFinishKey
键结束语音邮件录音时,它会按预期工作。但是,如果用户通过挂断电话结束语音邮件录音,代码仍会到达下面的 console.log,但不会发送短信。我猜测 TwiML 响应被忽略,因为呼叫者已经挂断电话。我尝试让 Record
的 action
指向 TwiML bin,但 TwiML bin 似乎不支持 SMS/Message 命令作为对语音呼叫 (https://support.twilio.com/hc/en-us/articles/360017437774-Combining-Voice-SMS-and-Fax-TwiML-in-the-Same-Response) 的响应。我还尝试让 Record
的 action
指向一个不同的函数,该函数只发送 SMS,但当 SMS 代码在同一个函数中时会导致相同的结果。
伪代码:
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 来发送 SMS。
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");
});
};