背景
我正在尝试为我的 twilio 应用实现调用筛选 - 即一个人按下一个键接听电话。我已经看到了几个实际的例子(例如 How to use twilio to guarantee a live answer or voicemail? ),但是对于将调用转发给多个号码的情况,给出的答案使用了循环法。
问题
有没有办法让每个人同时被调用,第一个通过挑战的人发言,所有其他调用都断开?
为什么?
我想这样做,因为如果调用仅由循环中的最后一个人接听,来电者可能需要等待相当长的时间。
最佳答案
这里是 Twilio 布道者,
当您接到最初的电话(我们称之为客户)时,使用 <Gather>
向他们询问一些信息, 或者给他们播放一些你认为最好的音乐:
<Response>
<Play loop="0">/my_music.mp3</Play>
</Response>
然后,使用 REST API 向我们称之为代理的对象发起 3 次出站调用。你需要注意Twilio's rate limit .这些调用中的每一个都将按照以下方式使用 TwiML:
<Response>
<Gather numDigits="1" action="/accepted">
<Say>Incoming call from +X YYY ZZZZ ZZZZ</Say>
</Gather
<Response>
现在,只要其中一个代理人按下一个键(您当然可能想添加拒绝选项等),他们就会被重定向到 action
网址。在您的服务器上,您需要通过以下方式响应第一个代理:
<Response>
<Dial>
<Conference>some-unique-room-name</Conference>
</Dial>
</Response>
然后您需要向 REST API 和 change the customers inbound call 发出请求(例如,谁还在听音乐)并使用上面的 TwiML 将客户放入与座席相同的 session 室。
当任何后续代理决定接受调用时,他们将重定向到 /accepted
URL,但因为您的应用程序已经知道客户已连接到另一个座席,您可以向他们播放一条消息,说明调用已得到响应。
您可以通过多种方式对此进行扩展。例如使用 <Queue>
TwiML 动词可以更轻松地处理多个来电。
您可能还想看看使用 url
的“耳语” <Number>
的属性动词。这允许您添加仅在代理端执行的额外 TwiML 文档。尽管您使用多个 <Number>
只有第一个回答的代理人才能听到耳语。
<Response>
<Dial>
<Number url="/whisper">+AGENTNUMBER</Number>
</Dial>
</Response>
/whisper
TwiML 可以包含 <Gather>
要求座席接听电话。一旦调用到达 TwimL 文档的末尾,它将它们连接到调用客户。否则你可以使用 <Hangup>
拒绝。
在所提供的链接中,大部分内容都有 Python 代码。恐怕我不是 Python 编码员,但我猜 TwiML 有帮助吗?
祝你好运!
关于python - 使用无循环的调用筛选将来电转接至多个号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19038251/