python - 使用无循环的调用筛选将来电转接至多个号码

标签 python twilio twilio-twiml

背景

我正在尝试为我的 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/

相关文章:

python - 使用 Python 迭代文件夹时获取特定的 Excel 文件名

python - 在 Ubuntu Mate (Raspberry Pi 3) 和 python 中使用多个超声波传感器

python - 发起调用、录音并回放录音

google-calendar-api - Google 日历和 Twilio 作为 On-Call

twilio - DialCallStatus 和 CallStatus 有什么区别?

python - 如何打印具有最高值的 3 行

python - scikit-learn 中带有 BaseEstimator 的 GradientBoostingClassifier?

javascript - Twilio 视频 session 应用

twilio - <Pay> 动词引发 "Invalid content was found starting with element ' Pay'。 '{Play"之一

node.js - 如何将带有模板的 twilio twiML 转换为 node.js 代码