目标:将来电置于会议中。
我想要达到的目标是:
在来电语音通话中,我有以下代码:
$response = new Twiml();
$dial = $response->dial([
'callerId' => $input['From'],
]);
$dial->client('testagent',
[
'url' => "/twilio/conference/create"
]);
如何在创建代理商电话后立即将呼叫拨入会议,以扩展此twiml?
目前座席已成功驻留在会议中,而来电仍然响起......
答案 0 :(得分:0)
Twilio开发者传播者在这里。
了解上面生成的TwiML如何工作的几点:
<Dial>
动词告诉Twilio在我们拨打一个外拨电话时(在您的情况下为一个客户端实例)保留它刚才接听的电话。如果该出站呼叫得到应答,我们将直接将这两个呼叫连接在一起(两者之间没有会议)。 url
名词中包含的<Client>
参数返回的TwiML只会在我们拨打的出站段和之前执行 Twilio直接桥接两个人一起打电话。您可以从该网址返回一个有限的TwiML子集,但遗憾的是<Dial>
不在其中:https://www.twilio.com/docs/glossary/call-whisper
可以使用一种称为同步的技术将Twilio拨出到多个代理:https://www.twilio.com/docs/api/twiml/client#examples-2。在这种情况下,无论哪个座席应答呼叫,都将首先桥接到原始来电。这种情况没有涉及会议。它是一个直接的桥梁,但直接桥接使得很难做出诸如暂停呼叫,将其转移到另一方或添加第三人的事情。如果您不关心任何这些情况,那么这可能是您的选择。
如果您关心上述任何一项,我强烈建议您使用TaskRouter。
希望有所帮助。
答案 1 :(得分:0)
我设法通过额外的Twilio REST调用和代理路由
来完成此操作添加了&#39;动作&#39;在代理接听电话并更新其支路后执行:
$response = new Twiml();
$dial = $response->dial([
'callerId' => $input['From'],
'action' => '/twilio/conference/join',
]);
$dial->client('testagent',
[
'url' => "/twilio/conference/create"
]);
当代理商路线&#34; / twilio / conference / create&#34;在发送虚拟Twiml之前执行,我执行这个Twilio Rest调用:
$call = $client->account->calls($input['CallSid'])->fetch();
$call->update([
"url" => "/twilio/conference/join"
]);
这会将代理段放入会议,断开执行“操作”的呼叫者的连接。代表客户路线
我真的很想知道为什么在代理路线上使用Twiml响应无法做到这一点......