如何将Twilio录制的消息url发送到第三方API
嗨,我正在尝试通过Twilio功能为来电设置语音邮件 以及将带有记录的URL的呼叫信息发送到外部webhook 感谢您对如何实施的建议如何将Twilio录制的消息url发送到第三方API,twilio,twilio-functions,Twilio,Twilio Functions,嗨,我正在尝试通过Twilio功能为来电设置语音邮件 以及将带有记录的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
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);
};
您很接近,除了在
twiml.record()之后不能执行任何操作,而是返回callback(null,twiml)代码>
所以,你可以做的是:
创建TwiML邮箱,以便在录音结束时挂断电话。
这是bin的代码,它只会返回一个空响应,这反过来会挂断调用
当你保存垃圾桶时,你可以复制垃圾桶的URL,你需要它在你的函数中。URL看起来像https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
将您的功能代码更改为类似的内容(您可以添加更多选项,您可以在文档中找到这些选项,我将把链接放在这个答案的末尾)
exports.handler=函数(上下文、事件、回调){
让twiml=new Twilio.twiml.VoiceResponse();
//twiml.说:“欢迎……请留言,我们会给你回电话。”;
twiml.record({
最大长度:20,
行动:'https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
recordingStatusCallback:'https://your_webhook_url',
recordingStatusCallbackMethod:'POST',
recordingStatusCallbackEvent:“正在进行、已完成、缺席”
});
回调(null,twiml);
};
如果您查看代码,您可以看到操作
指向您创建的TwiML容器,即录制完成后Twilio引擎将运行的位置。如果您省略操作
URL,当记录完成时,Twilio将返回此函数,您将进入一个循环(如果您愿意,可以尝试)
接下来,由于录制可能已经完成,但录制文件可能无法访问,因此您需要使用recordingStatusCallback
,这是服务器上的一个URL,一个webhook,Twilio将在其中通知您。其中一个请求参数是RecordingUrl
,“录制音频的URL”(文档:)
接下来,设置Twilio在点击webhook时要使用的方法POST
或GET
下一步,您要告诉Twilio要针对哪些事件访问您的webhook
您可以在Twilio的文档中阅读所有这些内容:
()
注意:如果您认为在使用录制URL之前可以等待一段时间,那么您只能在webhook中提供操作
,并处理挂起的问题(从应用程序中使用TwiML进行响应),而不需要TwiML bin和recordingStatusCallback。。。事情
。RecordingUrl
也是请求action
的一个参数,但正如我所说,该文件可能无法立即使用
如何获取“来电号码”:
除了RecordingUrl
之外,您还可以获得CallSid
类似于caxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
的内容,您可以使用它来获取(从应用程序发出另一个请求)有关呼叫的信息,包括带有此代码的来自的号码:
const accountSid='ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken='your_auth_token';
const client=require('twilio')(accountSid,authToken);
客户端调用('CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
.fetch()
.then(call=>console.log(call.from));
()Alex谢谢你的详细回答。捕获录制参数时,我缺少呼叫者号码。如何将其添加到发送到服务器的信息中?