背景
我正在尝试为我的 twilio 应用程序实施呼叫筛选 - 即一个人按下一个键来接听电话。我已经看到了一些这样的例子(例如,如何使用 twilio 来保证实时应答或语音邮件?)但是,对于将呼叫转发到多个号码的情况,给出的答案使用循环法。
问题
有没有办法让每个人同时打电话,第一个通过挑战的人说话,而所有其他电话都断开?
为什么?
我想这样做是因为如果呼叫仅由循环赛中的最后一个人接听,则来电者可能需要等待相当长的时间。
背景
我正在尝试为我的 twilio 应用程序实施呼叫筛选 - 即一个人按下一个键来接听电话。我已经看到了一些这样的例子(例如,如何使用 twilio 来保证实时应答或语音邮件?)但是,对于将呼叫转发到多个号码的情况,给出的答案使用循环法。
问题
有没有办法让每个人同时打电话,第一个通过挑战的人说话,而所有其他电话都断开?
为什么?
我想这样做是因为如果呼叫仅由循环赛中的最后一个人接听,则来电者可能需要等待相当长的时间。
Twilio 布道者在这里,
当您接到最初的电话(我们称其为客户)时,使用 向他们询问一些信息<Gather>
,或者播放一些手持音乐,无论您认为什么效果最好:
<Response>
<Play loop="0">/my_music.mp3</Play>
</Response>
然后,使用 REST API 向我们将调用的代理发起 3 个出站调用。您需要注意Twilio 的速率限制。这些调用中的每一个都将具有以下方面的 TwiML:
<Response>
<Gather numDigits="1" action="/accepted">
<Say>Incoming call from +X YYY ZZZZ ZZZZ</Say>
</Gather
<Response>
现在,只要其中一个代理按下一个键(您当然可能想要添加拒绝等选项),他们就会被重定向到action
URL。在您的服务器上,您需要通过以下方式响应第一个代理:
<Response>
<Dial>
<Conference>some-unique-room-name</Conference>
</Dial>
</Response>
然后,您需要向 REST API 发出请求并更改客户的入站呼叫(例如仍在听音乐的客户),并使用上述 TwiML 将客户置于与代理相同的会议室中。
当任何后续代理决定接受呼叫时,他们将被重定向到/accepted
URL,但是由于您的应用程序已经知道客户已连接到另一个代理,因此您可以向他们播放一条消息,说明呼叫已经得到响应。
您可以通过多种方式对此进行扩展。例如,使用<Queue>
TwiML 动词来更轻松地处理多个传入呼叫。
您可能还想使用带有动词url
属性的“耳语”来看看。<Number>
这允许您添加仅在代理端执行的额外 TwiML 文档。尽管您使用多个<Number>
动词,但只有第一个回答的代理人会听到耳语。
<Response>
<Dial>
<Number url="/whisper">+AGENTNUMBER</Number>
</Dial>
</Response>
TwiML/whisper
可以包含一个<Gather>
请求代理接受呼叫。一旦调用到达 TwimL 文档的末尾,它就会将它们连接到调用的客户。否则,您可以使用<Hangup>
拒绝。
在提供的链接上,大部分都有 Python 代码。恐怕我不是 Python 编码员,但我猜 TwiML 有帮助吗?
祝你好运!
这是 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>
这将一次拨打所有号码,并在一个人接听时挂断其他号码。