如何将Twilio记录的消息URL发送给第三方API

时间:2019-05-21 22:33:33

标签: twilio twilio-functions

您好,我正在尝试通过Twilio Functions为传入电话设置语音邮件 并将带有记录的URL的呼叫信息发送到外部Webhook 感谢您提出的实施建议

exports.handler = function(context, event, callback) {
    let twiml = new Twilio.twiml.VoiceResponse();
    //twiml.say("Welcome We are not available at this moment. Please leave a message, and we will call you back.");
    twiml.record({ maxLength: 20,});
    twiml.hangup();

    callback(null, twiml);
};

1 个答案:

答案 0 :(得分:0)

您已经关闭,除了twiml.record()之后什么都不能做,只能返回callback(null, twiml);

所以,您可以做的是:

  1. 创建一个TwiML Bin,以便在录制结束时挂断电话。
    这是bin的代码,它将仅返回一个空响应,这将挂断该呼叫。

<?xml version="1.0" encoding="UTF-8"?>
<Response />

保存垃圾箱时,可以复制垃圾箱的URL,然后在功能中需要它。该网址看起来像https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


  1. 将您的函数代码更改为类似的内容(您可以添加更多可在文档中找到的选项,我将链接放在此答案的结尾)。

exports.handler = function(context, event, callback) {

    let twiml = new Twilio.twiml.VoiceResponse();

    // twiml.say("Welcome... Please leave a message, and we will call you back.");

    twiml.record({ 
        maxLength: 20, 
        action: 'https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
        recordingStatusCallback: 'https://your_webhook_url',
        recordingStatusCallbackMethod: 'POST',
        recordingStatusCallbackEvent: 'in-progress, completed, absent'

    });

    callback(null, twiml);
};

如果您查看代码,则可以看到action指向您创建的TwiML Bin,这是录制完成后Twilio的引擎将运行的位置。如果您省略action URL,则在记录完成后,Twilio将返回此功能,并且您将最终陷入循环(您可以尝试使用它)。

接下来,由于可能已完成录制,但是可能无法访问录制文件,因此您需要使用recordingStatusCallback(服务器上的URL,Webhook),Twilio将在其中通知您。请求参数之一将是RecordingUrl,“已录制音频的URL”。 (文档:https://www.twilio.com/docs/voice/twiml/record#attributes-recording-status-callback-parameters

接下来,您设置希望Twilio碰到您的Webhook时使用的方法POSTGET

接下来,您告诉您希望Twilio攻击哪些事件。


您可以在以下Twilio的文档中了解所有这些信息:

https://www.twilio.com/docs/voice/twiml/record#attributes


注意:如果您认为可以等待一段时间才能使用录制URL,则只能为action提供网络挂钩,并处理挂断电话(通过TwiML进行响应)从您的应用程序),而无需TwiML bin和recordingStatusCallback... thingsRecordingUrl也是对action的请求的参数,除了,就像我说的那样,该文件可能不会立即可用。


如何获取“主叫号码”:

RecordingUrl一起,您会得到CallSid之类的CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,您可以使用它来获取(从您的应用程序发出另一个请求)有关呼叫的信息,包括{{1} }的代码如下:

from

https://www.twilio.com/docs/voice/api/call?code-sample=code-fetch-a-call&code-language=Node.js&code-sdk-version=3.x