Twilio:一次呼叫多个 phone 号码并连接到第一个接听的号码
Twilio: call multiple phone numbers at once and get connected to the first one which answers
我想拨打多个号码并连接到第一个接听的号码。另外,只要有人接听,其他号码就会停止响铃。
我知道这里描述的解决方案:https://www.twilio.com/blog/2009/05/dialing-multiple-numbers-simultaneously-with-twilio.html
基本上由一个 Dial
动词和多个 Number
组成:
<Response>
<Dial action="/handleDialStatus.php" method="GET">
<Number>877-555-1212</Number>
<Number>877-999-1234</Number>
<Number>877-123-4567</Number>
</Dial>
</Response>
但正如他们所说:
in the case of calling a phone that automatically goes to voicemail or
an automated answering system, it’s likely the call will be picked up
faster by one of these machines than any human being can answer.
这对我来说是个大问题,他们没有提供解决方案!
我实施了呼叫筛选 as described here。这个想法是要求被叫方在连接到呼叫方之前按任意键以避免应答机。
然而,一旦开始筛选一个号码,其他电话就停止响铃了!基本上它就像被叫方已经连接一样,所以它根本没有解决问题。
还有其他解决方案吗?
这里是 Twilio 开发人员布道者。
与其尝试通过 <Dial>
连接到每个存在您描述的问题的呼叫者,不如 make and control each of the calls separately through the REST API.
这样,您就可以为每个要拨打的号码创建一个呼叫。然后当 phone 被接听时,提出呼叫筛选挑战,如果呼叫成功,则将其连接到原始呼叫并取消您拨打的所有其他呼叫。
这里的缺点是您需要为每个呼叫 register for callback events 以便您可以判断其中 none 是否已成功接听,然后再对您的原始呼叫进行处理.
如果有帮助请告诉我。
如 philnash 所述,关于存储 SID 并根据状态处理未答复的解决方案肯定适用于理想世界,但不适用于现实生活。我只是不得不处理这种情况,这就是我的处理方式:
通过 API 创建 2+ 拨出电话,为了克服语音信箱问题,我添加了一个带耳语的收集选项,如果对方不按任何键(很可能是语音信箱),则不要接通电话,如果第一步的 none 个呼叫将接听并按下按键,则转到第 2 步,将触发另一组 2+ 个具有相同收集选项的呼叫,然后如果没有接听,或接听但没有按键,转到语音信箱。
最初按照该线程中的建议,我专注于根据 SID 和 CallStatus 终止未应答的呼叫,但不幸的是 phone 行具有随机行为,同时触发的相同 phone 呼叫将开始响铃大在不同 phones/carriers 上相互延迟,因此我不能真正依赖 CallStatus。
经过多次尝试后,我只是使用了一个肮脏的解决方案,即在第一次调用结束后创建一个空的 txt 文件并触发 StatusCallBack url(相同的 url 在所有触发的调用中共享)如果此文件存在则不会' 是相同 url 的第二个 运行 会搞乱 killing/keeping 调用。
可能会有更优雅的方法来实现这一点,但对于我的用例,这证明是最好的解决方案。
我想拨打多个号码并连接到第一个接听的号码。另外,只要有人接听,其他号码就会停止响铃。
我知道这里描述的解决方案:https://www.twilio.com/blog/2009/05/dialing-multiple-numbers-simultaneously-with-twilio.html
基本上由一个 Dial
动词和多个 Number
组成:
<Response>
<Dial action="/handleDialStatus.php" method="GET">
<Number>877-555-1212</Number>
<Number>877-999-1234</Number>
<Number>877-123-4567</Number>
</Dial>
</Response>
但正如他们所说:
in the case of calling a phone that automatically goes to voicemail or an automated answering system, it’s likely the call will be picked up faster by one of these machines than any human being can answer.
这对我来说是个大问题,他们没有提供解决方案!
我实施了呼叫筛选 as described here。这个想法是要求被叫方在连接到呼叫方之前按任意键以避免应答机。
然而,一旦开始筛选一个号码,其他电话就停止响铃了!基本上它就像被叫方已经连接一样,所以它根本没有解决问题。
还有其他解决方案吗?
这里是 Twilio 开发人员布道者。
与其尝试通过 <Dial>
连接到每个存在您描述的问题的呼叫者,不如 make and control each of the calls separately through the REST API.
这样,您就可以为每个要拨打的号码创建一个呼叫。然后当 phone 被接听时,提出呼叫筛选挑战,如果呼叫成功,则将其连接到原始呼叫并取消您拨打的所有其他呼叫。
这里的缺点是您需要为每个呼叫 register for callback events 以便您可以判断其中 none 是否已成功接听,然后再对您的原始呼叫进行处理.
如果有帮助请告诉我。
如 philnash 所述,关于存储 SID 并根据状态处理未答复的解决方案肯定适用于理想世界,但不适用于现实生活。我只是不得不处理这种情况,这就是我的处理方式:
通过 API 创建 2+ 拨出电话,为了克服语音信箱问题,我添加了一个带耳语的收集选项,如果对方不按任何键(很可能是语音信箱),则不要接通电话,如果第一步的 none 个呼叫将接听并按下按键,则转到第 2 步,将触发另一组 2+ 个具有相同收集选项的呼叫,然后如果没有接听,或接听但没有按键,转到语音信箱。 最初按照该线程中的建议,我专注于根据 SID 和 CallStatus 终止未应答的呼叫,但不幸的是 phone 行具有随机行为,同时触发的相同 phone 呼叫将开始响铃大在不同 phones/carriers 上相互延迟,因此我不能真正依赖 CallStatus。 经过多次尝试后,我只是使用了一个肮脏的解决方案,即在第一次调用结束后创建一个空的 txt 文件并触发 StatusCallBack url(相同的 url 在所有触发的调用中共享)如果此文件存在则不会' 是相同 url 的第二个 运行 会搞乱 killing/keeping 调用。 可能会有更优雅的方法来实现这一点,但对于我的用例,这证明是最好的解决方案。