首页 > 解决方案 > 如果用户不接听外拨电话,则发送带有一些预录消息的语音邮件

问题描述

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

遵循的步骤:

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

如果出站电话已接听与未接听/拒绝,我想更改案例的响应。

我尝试过的方法:

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

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

  3. 我什至尝试通过“MachineDetection: Enable”订阅 AMD。显然,当它检测到呼叫移动到“完成”阶段时。参考文章

需要帮助

  1. 如何区分忙碌/无应答/拒绝状态
  2. 建议我用正确的方法来实现上述要求。如果缺少任何东西,请告诉我。

标签: twiliotwilio-apitwilio-click-to-call

解决方案


我终于找到了解决上述问题的方法。我相信这将是一种解决我可以接受的解决方案的工作。我观察到,当我在进行出站呼叫时发送“MachineDetection:Enable”时,我看到在出站呼叫 api 的响应中,正在返回“MachineDetectionDuration”值。

在针对跨多个设备的许多已接听、未接听和已拒绝的呼叫调查该值后,我全面发现如果“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'

网址:Twilio 函数

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);
};

推荐阅读