您好,我正在尝试通过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);
};
答案 0 :(得分:0)
您已经关闭,除了twiml.record()
之后什么都不能做,只能返回callback(null, twiml);
所以,您可以做的是:
<?xml version="1.0" encoding="UTF-8"?>
<Response />
保存垃圾箱时,可以复制垃圾箱的URL,然后在功能中需要它。该网址看起来像https://handler.twilio.com/twiml/EHXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
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时使用的方法POST
或GET
。
接下来,您告诉您希望Twilio攻击哪些事件。
您可以在以下Twilio的文档中了解所有这些信息:
(https://www.twilio.com/docs/voice/twiml/record#attributes)
action
提供网络挂钩,并处理挂断电话(通过TwiML进行响应)从您的应用程序),而无需TwiML bin和recordingStatusCallback... things
。 RecordingUrl
也是对action
的请求的参数,除了,就像我说的那样,该文件可能不会立即可用。
与RecordingUrl
一起,您会得到CallSid
之类的CAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
,您可以使用它来获取(从您的应用程序发出另一个请求)有关呼叫的信息,包括{{1} }的代码如下:
from