[英]Twilio sends call completed status for all calls
我正在为 nodeJS 中的调用设置状态回调。 我在电话号码配置中设置了“呼叫状态更改”以向我的节点发出 POST 请求。 但是 twilio 似乎正在发送所有呼叫的呼叫状态已完成,无论答案是“忙”、“未应答”还是“已完成”。
这是我的节点代码,用于显示 Twilio 发送的呼叫状态:
app.post("/status", (req, res) => {
res.sendStatus(200);
console.log(req.body);
});
Output 忙音:
{
ApiVersion: '2010-04-01',
Called: '',
CallStatus: 'completed',
Duration: '15',
From: 'client:AbrasiveHannahLiberty',
CallDuration: '15',
Direction: 'inbound',
Timestamp: 'Fri, 20 Mar 2020 05:43:09 +0000',
AccountSid: 'ACxxxxxxxx',
CallbackSource: 'call-progress-events',
ApplicationSid: 'APxxxxxxxx',
Caller: 'client:AbrasiveHannahLiberty',
SequenceNumber: '0',
To: '',
CallSid: 'CAxxxxxxxx'
}
Twilio 客户端调用有两个调用段。 当 Twilio 客户端发出出站呼叫时,这是父分支。 Twilio 会自动应答该呼叫分支,因此可以访问与您的语音请求 URL 关联的 TwiML,所有呼叫都将导致完成呼叫。
一旦发出客户端调用,您定义的 TwiML 应用程序(并通过访问令牌传送到您的 Twilio 客户端)有一个用于获取 TwiML 的请求 URL,因此 Twilio 知道如何处理调用,例如,放置一个出站呼叫到公共交换电话网 (PSTN),子腿。
该请求 URL 中的 TwiML 应该使用带有 Number 名词和 statusCallback URL 的拨号动词来获取您正在查找的状态。
我认为您应该检查$dial->number()
中的 statusCallback URL 必须与您在 TwiML App 中配置的 statusCallback 的 URL 不同?
示例:如果您在 TwiML 应用程序中配置的 statusCallback URL 是..../status
,那么您必须在$dial->number()
中设置为..../events
(或您喜欢的任何 URL ),如下所示:
$response = new VoiceResponse();
$dial = $response->dial('');
$dial->number('+12349013030',
['statusCallbackEvent' => 'initiated ringing answered completed',
'statusCallback' => '..../events',
'statusCallbackMethod' => 'POST']);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.