twilio - 启用机器检测的调用 url 和 statusCallback 的 Twilio Voice api 顺序
问题描述
在进行 twilio 调用时,我们有一个url
和一个statusCallback
像这样的参数:
client.calls
.create({
method: 'GET',
statusCallback: 'https://www.myapp.com/events',
statusCallbackMethod: 'POST',
statusCallbackEvent: ['completed', 'answered'],
url: 'http://demo.twilio.com/docs/voice.xml',
to: '+14155551212',
from: '+18668675310'
})
.then(call => console.log(call.sid))
.done();
(从这里)
我很难弄清楚是否在 theurl
之前调用了statusCallback
,反之亦然?
我看到 whenmachineDetection
在调用中启用(如此处给出)如果Answered_by
是machine_start
,则在(提供 twiml)之前statusCallback
调用。url
在一种情况下,我发现如果machineDetection
启用并且Answered_by
已启用human
(即它检测到有人接听电话),我url
首先看到了被叫。
那么调用url
and的预期顺序是statusCallback
什么?(假设我已经设置statusCallback
为正在进行的通话)
解决方案
Twilio 开发人员布道者在这里。
从关于调用的文档中,这里有一些关于的其他细节statusCallback
:
Twilio 将在 StatusCallbackEvent 参数中指定的每个调用事件上向其发送异步 Webhook 请求的 URL。如果未指定事件,Twilio 将默认发送完成。
该StatusCallbackEvent
参数可以设置为启动、振铃、应答和完成中的任何一个或多个。
由于您没有事件设置,因此您使用的是默认completed
事件。通话结束后应触发此事件。如果您在调用 URL 之前看到它触发,您是否使用其他事件?
另一件事是这些事件与调用异步触发。即使ringing
事件被触发,当您的 Web 服务器响应它时,调用可能已经结束。所以我会为通话的状态进行防御性编程,而不是假设通话肯定在进行中。
更清楚的是:事件是异步触发的,因此您不能保证answered
回调将在url
获取参数之前或之后触发。
推荐阅读
- angular - angular函数有多种返回类型选项叫什么
- c++ - 不正确的深度值
- visual-studio - 如何在 Visual Studio 2019 中启动 Blazor Webassembly 项目
- php - 如何将计算字段插入数据库?
- java - PaseclCase 字符串转大写,下划线分隔
- javascript - Snipcart V 3.0:添加带有自定义字段的项目(JavaScript SDK)
- reactjs - 受控 TreeView(Material UI)移位单击的问题
- typo3 - tx_form 中 type="time" 的字段
- c++ - 循环帮助 While 循环不能正常工作
- c - 在 Nagios 中创建自定义变量