twilio - 显示未接来电 Twilio
问题描述
我一直在使用 Twilio 开发呼叫系统。下面是它的工作原理:
1.) 当有人呼叫它时,它会播放 IVR,他们会发送响应并重定向他们
2.) 然后我们向他们播放铃声并使用 DialCallStatus 将其转发到手机。我们使用它是因为我们不希望他们点击手机上的语音邮件。因此,如果没有人接听电话,他们会点击 twilio 语音信箱,而不是手机语音信箱。如果接线员接听电话,他们会听到“按任意键接听电话”,然后按一个键,这样 twilio 就知道有人接听了电话。
3.)我遇到的问题是当我想显示“未接来电”时它不起作用。我看到了通话状态,并尝试使用“未接来电”,但似乎几乎每个通话都被标记为“已完成”。从本质上讲,我希望能够查明没有被实际接线员接听的电话。因此,即使他们没有留下语音邮件,我们也可以给他们回电。
很抱歉这个冗长的问题,但如果您知道如何做到这一点,我们将不胜感激。
解决方案
具体到“按任意键接听电话”。您是否将Number 名词 url 参数与 Dial 动词一起使用,并使用与 Number URL 返回的Gather 动词来收集此肯定输入?如果被叫方按任意键,您将收到一个数字参数。重定向(见下文)是如果没有按下任何数字(但呼叫在拨号超时之前接听)时命中的下降。如果没有输入密钥,我将 Digits 的值设置为超时。
查看下面的 Twilio 函数代码以获取示例。在我的测试中,如果拨号方在收集 DTMF 条目超时之前应答但未按数字,则拨号操作 URL 确实正确显示无应答。
初始拨号代码:
exports.handler = function(context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
twiml.dial({action: "https://x.x.x.x/dialAction"})
.number({url: "https://x.x.x.x/gatherWhisp"}, "+15555551212");
callback(null, twiml);
};
被叫方接听电话时运行的代码:
exports.handler = function(context, event, callback) {
let twiml = new Twilio.twiml.VoiceResponse();
let digits = event.Digits || null;
if (digits === "timeout") {
// The dialed party never pressed a digit to accept call
// The DialCallStatus returned in the Dial action URL should say no-answer
twiml.hangup();
callback(null, twiml);
} else if (digits) {
twiml.say("You pressed a digit");
callback(null, twiml);
} else {
twiml.gather({numDigits: "1", finishOnKey: ""})
.say("Please press a digit to accept the call");
twiml.redirect("https://x.x.x.x/gatherWhisp?Digits=timeout");
callback(null, twiml);
}
};
推荐阅读
- containers - AWS fargate 容器的 Api 网关 URL
- java - 忽略 VS Code 中未使用的局部变量警告
- javascript - JavaScript 模板式语句
- go - 使用 Cobra/Viper 遇到问题
- c# - 更改 DataGridViewImageColumn 中的图像值不会删除以前的图像
- r - 将列表中除给定索引之外的所有内容设置为子集 (R)
- reactjs - React DOM / React Router DOM - 项目未渲染
- python - 为什么使用 xlwings 或 openpyxl 的 pyinstaller 可执行文件比 xlrd 大 30 倍以上
- ios - Sprite 物理在 Swift (SpriteKit) 中出现但没有在视觉上显示
- python - 将两列与熊猫中的if条件结合起来