如果用户不应答出站呼叫,则发送带有一些预先录制的邮件的语音邮件



我是新手,如果我的问题没有意义,请原谅我。 如果用户不接听/拒绝出站呼叫,我想发送带有一些消息的语音邮件。

遵循的步骤:

我正在使用"textPlus"移动应用程序,并获得了一个美国号码。我可以成功地拨打我在textPlus应用程序中获得的美国号码的出站电话。我还注意到,如果用户未接听/拒绝呼叫,twilio 将发送一封语音邮件,其中包含用于向 textPlus 应用程序号码拨打绑定呼叫的相同消息。

我想更改出站呼叫已应答与未应答/拒绝的情况的响应。

我尝试过的方法:

  1. 我尝试订阅"statusCallbackEvent"事件,并在出站呼叫为"忙/无应答/拒绝"时使用"修改正在进行的呼叫"API 来更改文本。不幸的是,它通常显示"已完成"状态,而不是文章中提到的"忙碌,无答案,拒绝"。警告:由于 twilio 出站称呼它自己正在发送语音邮件,如果未应答/拒绝,它正在发送已应答状态。所以我无法区分接听的电话和传递的语音邮件。

  2. 我确实尝试了这种方法,并了解这将适用于绑定调用

  3. 我甚至尝试通过"机器检测:启用"订阅AMD。显然,当它检测到呼叫移动到"已完成"阶段时。参考文章。

需要帮助

  1. 如何区分忙/无应答/已拒绝状态
  2. 建议我采用正确的方法来实现上述要求。如果我错过了什么,请告诉我。

我终于找到了上述解决方案。我相信这将是我能接受的解决方案的一种解决方法。我观察到,当我在进行出站调用时发送"机器检测:启用"时,我看到在出站调用 API 的响应中,返回了"机器检测持续时间"值。

在调查多个设备上的许多应答与未应答与拒绝呼叫的值后,我全面发现如果"MachineDetectionDuration"超过 1000,它恰好是应答呼叫。否则,它未得到答复/拒绝。

以下是示例代码片段,我认为应该会有所帮助:

出站 API:

curl --location --request POST 'https://api.twilio.com/2010-04-01/Accounts/<account sid>/Calls.json' 
--header 'Authorization: Basic <Account sid:token>' 
--header 'Content-Type: application/x-www-form-urlencoded' 
--data-urlencode 'Url=https://jasper-jackal-xxx.twil.io/sendVoiceMail' 
--data-urlencode 'To=+<to num>' 
--data-urlencode 'From=+<from num>' 
--data-urlencode 'MachineDetection=Enable'

网址:特威利奥函数

exports.handler = function(context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
if (event.MachineDetectionDuration > 1000)
twiml.say("Call answered case message");
else
twiml.say("This is a voice mail. Text has been updated successfully"); //sends voice mail
callback(null, twiml);
};

最新更新