twilio - 如果用户不接听外拨电话,则发送带有一些预录消息的语音邮件
问题描述
我是新手,如果我的问题没有意义,请原谅我。如果用户不接听/拒绝外拨电话,我想发送带有一些消息的语音邮件。
遵循的步骤:
我正在使用“textPlus”移动应用程序并获得了美国号码。我可以成功拨打我在 textPlus 应用程序中获得的美国号码。我还注意到,如果用户未接听/拒绝呼叫,则 twilio 将发送语音邮件,其中包含用于向 textPlus 应用程序号码进行绑定呼叫的相同消息。
如果出站电话已接听与未接听/拒绝,我想更改案例的响应。
我尝试过的方法:
我尝试订阅“statusCallbackEvent”事件并使用“修改正在进行的呼叫”API 来更改出站呼叫“忙/无应答/拒绝”的文本。不幸的是,它通常显示“已完成”状态,而不是文章中提到的“忙碌、无应答、拒绝” 。警告:由于 twilio 出站呼叫,如果未应答/拒绝,它自己正在发送语音邮件,它正在发送已应答状态。所以我无法区分接听的电话和发送的语音邮件。
我确实尝试过这种方法并理解这将适用于绑定调用
我什至尝试通过“MachineDetection: Enable”订阅 AMD。显然,当它检测到呼叫移动到“完成”阶段时。参考文章。
需要帮助
- 如何区分忙碌/无应答/拒绝状态
- 建议我用正确的方法来实现上述要求。如果缺少任何东西,请告诉我。
解决方案
我终于找到了解决上述问题的方法。我相信这将是一种解决我可以接受的解决方案的工作。我观察到,当我在进行出站呼叫时发送“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);
};
推荐阅读
- c# - 匹配图像上的不规则网格而不剪切对象
- python - 在python中安装街机包的问题
- django - Django:来自另一个模型的参考模型字段
- d3.js - 是否可以使用 ElasticY 左轴和定义的右轴域?
- azure - Azure 数据工厂无法检索输出
- python - face_recognition 库需要很长时间执行,我也尝试使用 Numba 但我无法执行,如何优化以下代码?
- python - Python statsmodels Probit 和 Logit 产生错误,而 OLS 工作正常?
- c# - 如果在数组中找到 C# Linq 表达式,则从字符串中删除
- python - 如何对没有来源的图像进行网络抓取?
- python - 如何使 tkinter Toplevel 窗口依赖于另一个 Toplevel 窗口