之前已经问过这个问题(请参阅Twilio - forward call after 2 rings和Twilio 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;存储电话号码列表。
我对这个解决方案并不是特别满意。它比我想要的复杂得多。
答案 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>