启用机器检测的 Twilio 语音 api 调用顺序 url 和 statusCallback
Twilio Voice api order of calling url and statusCallback with machine detection enabled
在进行 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
被调用 before url
(提供 twiml)。
虽然在一个案例中我发现如果 machineDetection
启用并且 Answered_by
是 human
(即它检测到有人接听电话),我看到 url
首先调用。
那么调用 url
和 statusCallback
的预期顺序是什么? (假设我已设置 statusCallback
被呼叫进行中的呼叫)
此处为 Twilio 开发人员布道师。
来自 documentation on calls,这里有一些关于 statusCallback
的其他细节:
A URL that Twilio will send asynchronous webhook requests to on every call event specified in the StatusCallbackEvent parameter. If no event is specified, Twilio will send completed by default.
StatusCallbackEvent
参数可以设置为发起、响铃、接听、完成中的任意一个或多个。
由于您没有活动设置,您正在使用默认的 completed
活动。通话结束后应触发此事件。如果您看到它在您的 URL 被调用之前触发,您是否正在使用其他事件?
另一件事是这些事件是异步触发的。即使触发了 ringing
事件,当您的 Web 服务器响应它时,调用也可能已经结束。所以我会针对通话状态进行防御性编程,而不是假设通话肯定在进行中。
更清楚:事件异步触发,因此您不能保证 answered
回调会在获取 url
参数之前或之后触发。
在进行 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
被调用 before url
(提供 twiml)。
虽然在一个案例中我发现如果 machineDetection
启用并且 Answered_by
是 human
(即它检测到有人接听电话),我看到 url
首先调用。
那么调用 url
和 statusCallback
的预期顺序是什么? (假设我已设置 statusCallback
被呼叫进行中的呼叫)
此处为 Twilio 开发人员布道师。
来自 documentation on calls,这里有一些关于 statusCallback
的其他细节:
A URL that Twilio will send asynchronous webhook requests to on every call event specified in the StatusCallbackEvent parameter. If no event is specified, Twilio will send completed by default.
StatusCallbackEvent
参数可以设置为发起、响铃、接听、完成中的任意一个或多个。
由于您没有活动设置,您正在使用默认的 completed
活动。通话结束后应触发此事件。如果您看到它在您的 URL 被调用之前触发,您是否正在使用其他事件?
另一件事是这些事件是异步触发的。即使触发了 ringing
事件,当您的 Web 服务器响应它时,调用也可能已经结束。所以我会针对通话状态进行防御性编程,而不是假设通话肯定在进行中。
更清楚:事件异步触发,因此您不能保证 answered
回调会在获取 url
参数之前或之后触发。