【发布时间】:2013-10-13 12:27:31
【问题描述】:
我正在使用 JavaScript SDK 创建一个 Twilio 应用程序。
我想实现呼叫保持功能,但我无法实现它。
当软电话发起呼叫时,保持呼叫的过程是什么? 另外,软电话接听电话的过程是怎样的?
【问题讨论】:
标签: twilio
我正在使用 JavaScript SDK 创建一个 Twilio 应用程序。
我想实现呼叫保持功能,但我无法实现它。
当软电话发起呼叫时,保持呼叫的过程是什么? 另外,软电话接听电话的过程是怎样的?
【问题讨论】:
标签: twilio
Twilio 布道者在这里。
有多种方法可以将呼叫置于“保持”状态。通常呼叫是来自客户端还是来自 PSTN 号码都没有关系,过程通常是相同的:
现在,对于将呼叫置于“保留”状态,我可以建议以下几个选项:
一种是使用<Play> 动词并将loop 属性设置为零,这将告诉Twilio 无限期地循环该音频。当您准备好将呼叫从“保留”中移出时,您只需重定向呼叫即可。
另一种选择是使用<Enqueue> 动词并将呼叫放入呼叫队列。然后,当您准备好时,只需将该呼叫从队列中重定向到新体验。
希望对您有所帮助。
【讨论】:
use Twilio\TwiML\VoiceResponse; $response = new VoiceResponse(); $response->enqueue('support', ['waitUrl' => 'http://com.twilio.sounds.music.s3.amazonaws.com/MARKOVICHAMP-Borghestral.mp3']);当软电话的用户按下 Hold 时,您可以使用 REST API 更新该呼叫,将呼叫发送到队列。
您可以将调用重定向到带有<Enqueue> 标记的TML 文件。
要检索到软电话的呼叫,您可以使用 CallSid 更新呼叫并将其发送回软电话用户。
我已经在我的应用中实现了该功能,所以如果您需要帮助,请告诉我。
【讨论】:
theirs 呼叫的 CallSid 而不是 ours 呼叫
CallSid 是您要暂停的电话。对于每个通话段,您将获得一个CallSid,每个“连接”(您的应用程序和另一部手机)都有一个。例如,如果我拨出电话,该电话将关联 2 个CallSids,一个用于我的应用程序,另一个用于被叫号码,您必须使用被叫号码的CallSid 而不是您的。说得通?我过去遇到过这个问题,选择正确的CallSid 取决于您调用的实现。
为答案添加更多内容,
如果你连接了两个电话,
[call1] <enqueue>queue_id</enqueue>
和
[call2] <dial><queue>queue_id</queue></dial>
为任何通话添加一些暂停。喜欢,
<dial><queue>queue_id</queue></dial><Pause length="10"/>
这样,当您需要通过<Enqueue> 更新通话来保持通话时,它不会立即断开连接。您需要先将 call1 更新为 <enqueue>,然后将第二个呼叫更新为一些长时间等待的音乐。
当您需要取消保持通话时,您可以再次<dial><queue>。
【讨论】: