【问题标题】:Twilio Functions: Record callback's TwiML response is ignored if recording ended with hangupTwilio 函数:如果录制以挂断结束,则忽略录制回调的 TwiML 响应
【发布时间】:2020-06-24 01:02:31
【问题描述】:

我正在编写一个 Twilio 函数,它记录呼叫者的语音邮件,然后将带有录音 URL 的 SMS 发送到一个固定的电话号码。当呼叫者按任意onFinishKey 键结束语音邮件录制时,它会按预期工作。但是,如果用户通过挂断方式结束语音邮件录制,代码仍会到达下面的 console.log,但不会发送短信。我猜测 TwiML 响应被忽略了,因为调用者已经挂断了。我尝试让Recordaction 指向 TwiML 箱,但 TwiML 箱似乎不支持将 SMS/消息命令作为对语音呼叫的响应 (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);
}

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

【问题讨论】:

    标签: twilio twilio-api twilio-twiml


    【解决方案1】:

    您应该使用消息资源而不是 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");
        });
    };
    

    【讨论】:

      猜你喜欢
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 2014-07-28
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多