Twilio:当目标忙或关闭单元时使用<dial>进行来电处理

时间:2016-07-01 01:09:25

标签: twilio

之前已经问过这个问题(请参阅Twilio - forward call after 2 ringsTwilio call busy status),但是他们没有回答我的情况。

我们有一个简单的狩猎清单,连接到Twilio提供的电话号码:

<Response>
<Dial timeout="20"><!--cellphone #1--></Dial>
<Dial timeout="20"><!--cellphone #2--></Dial>
<Dial timeout="20"><!--cellphone #3--></Dial>
</Response>

现在,这在正常情况下有效 - 如果单元格#1没有应答,它将在20秒后切换到#2。

但是,如果关闭Cell#1(飞行模式或关闭),则呼叫者会收到来自本地电话运营商的语音消息,其中包含“#34”的字样;对不起,此号码无法到达&#34 ;然后沉默,然后调用第二个数字。

所以它有效,但用户体验非常混乱,我们无法使用它。

与被叫方的忙/拒绝相同。在这些情况下,呼叫者听到忙音,然后在超时时间后,Twilio拨打列表中的下一个号码。

我们通过TwiML Bins尝试了这个,我们也尝试使用:

<Response>
<Dial action="http://callback" timeout="20"><!--cellphone #1--></Dial>
</Response>

回调提供了拨打手机#2的请求,但是回拨仅在超时后被调用,而不是在第一个被叫方不可用的时候被调用。

我们使用的其他服务似乎通过隐藏在忙音/无应答/手机关闭后的铃声中播放的声音来解决这个问题(即他们不会简单地管理被叫方通话给来电者,但播放自己的铃声)。

通过Twilio有没有机会我们可以改善主叫方在忙/不可用的情况下听到的内容?

更新

我尝试了会议和队列。通过Queue,我终于找到了大多数使用脚本的解决方案,我可以发起呼叫:

#!/usr/bin/python
import support_numbers
from twilio.rest import TwilioRestClient                                                                                                

account_sid = "AAA" # Your Account SID from www.twilio.com/console                                       
auth_token  = "YYY"  # Your secret from www.twilio.com/console                                             

numbers = support_numbers.numbers()                                                                                                     

client = TwilioRestClient(account_sid, auth_token)                                                                                      
call = client.calls.create(
        to=numbers[0],
        from_="XXXX",                                                                                                          
        method="GET",                                                                                                                   
        status_callback="http://example.com/cgi-bin/twilio/try-second.py",                                                       
        status_callback_method="GET",                                                                                                   
        status_events=["completed"],
        url="http://example.com/cgi-bin/twilio/join-support-queue.py")


print "Content-type: text/xml\n";
print """<?xml version="1.0" encoding="UTF-8"?>
<Response>  
        <Say>Please Wait</Say>
        <Play>http://com.twilio.music.classical.s3.amazonaws.com/MARKOVICHAMP-Borghestral.mp3</Play>            <Redirect/>
</Response>
"""

这将使联系人加入支持队列。如果他们没有接听电话,或拒绝接听电话,那么&#34; try-second.py&#34;叫做。然后,这将尝试排队的下一个人。

一个单独的文件&#34; support_numbers.py&#34;存储电话号码列表。

我对这个解决方案并不是特别满意。它比我想要的复杂得多。

2 个答案:

答案 0 :(得分:1)

可能的解决方案是将入站呼叫置于会议中,当您成功拨出呼出电话时,将其修补到会议中。

答案 1 :(得分:0)

<Response>
    <Say>Please wait while we're trying to connect you to the next available representative.</Say>
    <Dial timeout="20"><!--cellphone #1--></Dial>

    <Say>Please wait while we're trying to connect you to the next available representative.</Say>
    <Dial timeout="20"><!--cellphone #2--></Dial>

    <Say>Please wait while we're trying to connect you to the next available representative.</Say>
    <Dial timeout="20"><!--cellphone #3--></Dial>
</Response>