使用呼叫筛选将来电转接到多个号码,无需循环

2024-06-23 19:35:18 发布

您现在位置:Python中文网/ 问答频道 /正文

背景

我正在尝试为我的twilio应用程序实现呼叫筛选-即一个人按一个键来接受一个电话。我在实践中看到了一些这样的例子(例如How to use twilio to guarantee a live answer or voicemail?),但是对于将一个呼叫转发给多个号码的情况,给出的答案使用循环法。在

问题

有没有办法让所有人同时打电话,第一个通过挑战的人发言,而其他所有电话都断开?在

为什么?

我之所以这么做,是因为来电者可能需要等待相当长的一段时间,如果呼叫只由循环中的最后一个人应答。在


Tags: ortoanswerlive应用程序use例子号码
2条回答

下面是TwiML:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Dial>
    <Number>415-123-4567</Number>
    <Number>415-321-7654</Number>
    <Number>415-456-7890</Number>
  </Dial>
</Response>

这将一次拨打所有号码,当有人接听时,其他人的电话就会断开。在

Twilio福音传道者

当您接到您的第一个电话(我们称之为客户)时,使用<Gather>向他们询问一些信息,或者播放一些您认为最有效的音乐:

<Response>
  <Play loop="0">/my_music.mp3</Play>
</Response>

然后,使用restapi对我们称之为代理的东西发起3个出站调用。你需要注意Twilio's rate limit。每一个调用都会有TwiML:

^{pr2}$

现在,一旦其中一个代理按下一个键(当然您可能希望添加拒绝等选项),它们将被重定向到actionURL。在您的服务器上,您需要用以下方式响应第一个代理:

<Response>
  <Dial>
    <Conference>some-unique-room-name</Conference>
  </Dial>
</Response>

然后,您需要向restapi和change the customers inbound call(例如,他仍在听音乐)发出请求,并使用上面的TwiML将客户与代理放在同一个会议室中。在

当任何后续代理决定接受该调用时,它们将被重定向到/acceptedURL,但由于您的应用程序已经知道客户已连接到另一个代理,所以您只需向他们播放一条消息,说明该呼叫已得到响应。在

你可以用一些方法来扩展。例如,使用<Queue>TwiML动词可以更轻松地处理多个传入呼叫。在

您可能还需要使用带有<Number>动词的url属性的“whisper”来查看。这允许您添加一个只在代理端执行的额外TwiML文档。尽管您使用多个<Number>动词,但只有第一个回答的代理才会听到耳语。在

<Response>
  <Dial>
    <Number url="/whisper">+AGENTNUMBER</Number>
  </Dial>
</Response>

/whisperTwiML可以包含一个<Gather>,请求代理接受该调用。一旦呼叫到达TwimL文档的末尾,它将它们连接到呼叫的客户。否则,您可以使用<Hangup>拒绝。在

在所提供的链接上有很多Python代码。恐怕我不是一个很好的Python程序员,但我猜TwiML有帮助吗?在

祝你好运!在

相关问题 更多 >

    热门问题