在进行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();
(来自here)
我很难确定url
是在statusCallback
之前被调用还是相反?
我看到,如果在通话中启用machineDetection
(给定here),如果Answered_by
为machine_start
,则statusCallback
被称为在url
(提供twiml)之前。
在一种情况下,我发现如果启用了machineDetection
并且Answered_by
是human
(即它检测到有人接听电话),我会看到{{1} }首先调用。
那么调用url
和url
的预期顺序是什么? (假设我已经设置statusCallback
以便正在进行的通话被调用)
答案 0 :(得分:1)
这里是Twilio开发人员的传播者。
在documentation on calls中,还有关于with pd.option_context('display.multi_sparse', False):
print (df)
Count
Pclass Survived
1 0 80
1 1 136
2 0 97
2 1 87
3 0 372
3 1 119
的其他一些细节:
Twilio将在StatusCallbackEvent参数中指定的每个呼叫事件上向其发送异步Webhook请求的URL。如果未指定事件,则默认情况下Twilio将发送 completed 。
statusCallback
参数可以设置为启动,响铃,应答和完成的任何一个或多个。
由于没有事件设置,因此您正在使用默认的StatusCallbackEvent
事件。通话结束后应触发此事件。如果您在调用URL之前看到它触发了,您是否正在使用其他事件?
另一件事是,这些事件是与调用异步触发的。即使completed
事件被触发,在您的Web服务器响应该事件时,呼叫也可能已经结束。因此,我将为通话状态进行防御性编程,而不是假设通话肯定正在进行中。
更清楚:事件是异步触发的,因此不能保证在获取ringing
参数之前或之后触发answered
回调。