Twilio:一次拨打多个电话号码并连接到第一个接听的电话号码

时间:2017-07-23 00:35:54

标签: twilio phone-call

我想拨打多个号码并连接到第一个回答的号码。一旦有人回答,其他数字应该停止响铃。

我知道此处描述的解决方案: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>

但正如他们所说:

  

在拨打自动转到语音信箱的电话的情况下   一个自动应答系统,很可能会接听电话   这些机器中的一台比任何人都能更快地回答。

这对我来说是一个大问题,而且他们没有为此提供解决方案!

我实施了呼叫筛选as described here。这个想法是要求被叫方在连接到呼叫者之前按任意键以避免应答机。

然而,只要一个号码的筛选过程开始,其他手机就会停止响铃!基本上它就像被调用者已经连接一样,所以它根本无法解决问题。

还有其他解决方案吗?

2 个答案:

答案 0 :(得分:4)

Twilio开发者传道者在这里。

而不是尝试通过<Dial>连接到每个来电者而不是您所描述的问题,为什么不make and control each of the calls separately through the REST API

这样,您就可以为要呼叫的每个号码创建一个呼叫。然后,当电话接听时,显示呼叫筛选挑战,然后如果呼叫成功,则将其连接到原始呼叫,并取消您所做的所有其他呼叫。

这里的缺点是你需要register for callback events来进行每次通话,以便你可以判断它们是否都没有被成功回答,然后再对你的原始电话做一些事情。

让我知道这是否有帮助。

答案 1 :(得分:0)

关于存储 SID 并根据 philnash 所描述的状态处理未答复的解决方案肯定在理想世界中有效,但在现实生活中无效。我只需要处理这种情况,这就是我所做的:

通过 API 创建 2 个以上的拨出电话,以克服语音邮件问题,我添加了一个带有耳语的收集选项,如果此人不按任何键(很可能是语音邮件),请不要连接电话,如果没有任何电话在第一步将接听并按下键,转到第 2 步,其中将触发另一组具有相同收集选项的 2+ 呼叫,然后如果未接听或接听但未按下任何键,则移至语音信箱。 最初,正如在此线程中所建议的,我专注于根据 SID 和 CallStatus 终止未接听的电话,但不幸的是,电话线具有随机行为,同时触发的相同电话会开始在不同电话上彼此之间出现很大延迟/运营商,因此我不能真正依赖 CallStatus。 经过多次尝试,我只是使用了一个肮脏的解决方案,即在第一次调用结束后创建一个空的 txt 文件,并触发 StatusCallBack url(在所有触发的调用中共享相同的 url),如果此文件存在,则不会有第二次运行相同的 url 会弄乱杀死/保持呼叫。 可能会有更优雅的方法来实现这一点,但对于我的用例来说,这是最好的解决方案。