我想拨打多个号码并连接到第一个接听的号码。此外,一旦有人回答,其他号码应该停止响铃。
我知道这里描述的解决方案:https://www.twilio.com/blog/2009/05/dialing-multiple-numbers-simultaneously-with-twilio.html
它基本上由一个Dial
动词和多个Number
s组成:
<Response>
<Dial action="/handleDialStatus.php" method="GET">
<Number>877-555-1212</Number>
<Number>877-999-1234</Number>
<Number>877-123-4567</Number>
</Dial>
</Response>
但正如他们所说:
在拨打自动转到语音信箱的电话的情况下,或 自动应答系统,很可能会接听电话 这些机器之一比任何人都能回答得更快。
这对我来说是一个大问题,他们没有为此提供解决方案!
我实现了此处所述的呼叫筛选。这个想法是要求被叫者在连接到呼叫者之前按任意键,以避免答录机。
但是,一旦筛选过程开始,其他电话就会停止响铃!基本上,它就像被叫方已经连接一样,因此根本无法解决问题。
还有其他解决方案吗?
Twilio开发者布道者在这里。
与其尝试通过具有您所描述问题的<Dial>
连接到每个调用方,不如通过 REST API 单独进行和控制每个调用。
这样,您就可以为要呼叫的每个号码创建呼叫。然后,当电话被应答时,提出呼叫筛选质询,然后如果呼叫成功,则将其连接到原始呼叫并取消您拨打的所有其他呼叫。
这里的缺点是,您需要为每个呼叫注册回调事件,以便您可以判断它们是否没有成功应答,然后对原始呼叫执行某些操作。
让我知道这是否有帮助。
关于存储 SID 和处理未回答的解决方案基于菲尔纳什描述的状态,肯定适用于理想世界,但在现实生活中则不然。我只需要处理这种情况,这就是我的做法:
通过 API 创建 2+ 拨出呼叫,以克服语音邮件问题,我添加了一个带有耳语的收集选项,如果该人不按任何键(很可能是语音邮件(不要连接呼叫,如果第一步中没有任何呼叫会接听并按键,请转到步骤 2,其中将触发另一组具有相同收集选项的 2+ 呼叫, 然后,如果未应答,或者已回答但未按下任何键,请移至语音信箱。 最初,正如此线程中所建议的那样,我专注于杀死基于 SID 和 CallStatus 未接听的呼叫,但不幸的是,电话线具有随机行为,同时触发的相同电话呼叫会开始响铃,在不同的电话/运营商上彼此之间有很大的延迟,因此我不能真正依赖 CallStatus。 经过多次尝试,我只是使用了一个肮脏的解决方案,一旦第一个调用结束,就会创建一个空的 txt 文件,如果这个文件存在,就会触发 StatusCallBack url(在所有触发的调用中共享相同的 URL(,那么就不会有第二次运行相同的 url 会搞砸杀死/保持调用。 可能会有一种更优雅的方式来实现这一目标,但对于我的用例,这被证明是最好的解决方案。