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

Twilio Functions: Record callback's TwiML response is ignored if recording ended with hangup

我正在编写一个 Twilio 函数来记录呼叫者的语音邮件,然后将带有 URL 录音的 SMS 发送到一个常量 phone 号码。当呼叫者通过按任何 onFinishKey 键结束语音邮件录音时,它会按预期工作。但是,如果用户通过挂断电话结束语音邮件录音,代码仍会到达下面的 console.log,但不会发送短信。我猜测 TwiML 响应被忽略,因为呼叫者已经挂断电话。我尝试让 Recordaction 指向 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) 的响应。我还尝试让 Recordaction 指向一个不同的函数,该函数只发送 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");
    });
};