我试图在Twilio上实现以下操作,但不确定为什么我不能正确完成。我已经使用标准Twilio程序从twilio.device.connect
发起了一个呼叫。发起呼叫后,我将呼叫更新为新的URL,以便将其搁置。
$client = new Services_Twilio($accountSid, $authToken);
$call = $client->account->calls->get($call_sid);
$call->update(
array(
"Url" => "http://localhost/voice.xml",
"Method" => "POST",
)
);
现在这里,而不是把最终用户在等待它只是断开通话,并播放音乐在我这边。为什么会这样?
3条答案
按热度按时间up9lanfz1#
不,问题是因为电话有两条腿。查查通话记录你得接另一段电话。Twilio似乎不允许我们通过API查看子调用,但公共API(通过控制台)可以获取它们。
因此,您需要获取所有调用,并过滤调用的父级是您的调用sid。
因此,当将某人置于保留状态时,请获取父呼叫sid是您拥有的callSid的所有呼叫。然后使用拥有您的调用的子对象的callSid作为父对象。
我希望能够从我们的调用示例中获得子调用,但我看不出这是怎么可能的。
我是这么做的
1.如果我拨出去。然后direction是'inbound' -.-并且有另一个调用的parentSid等于我当前的调用id。因此,我们希望获得另一个调用并使用它sid。
1.如果我通过device.connect()让一个客户出队,并给出队列名称或SID。没有一个孩子不叫,直到有父母。
1.否则,如果有人直接打电话给我,那么就使用
sid
。可怕的,令人困惑的和缺乏记录。
daupos2t2#
我是Twilio布道者
我建议检查Twilio是否记录了任何错误:
https://www.twilio.com/user/account/monitor/alerts
如果你试图将Twilio重定向到“http://localhost“,那是行不通的,因为Twilio显然不知道如何到达你自己机器上运行的本地主机。
如果你想通过一个公共URL将运行在你自己本地机器上的Web服务器公开到互联网上,可以看看一个名为ngrok的工具。
eqzww0vc3#
原因是在你的“http://localhost/voice.xml”文件中的
<Play>
标记之后。没有进一步执行TwiML。解决方案是将调用重定向回其原始状态。