无法将来电者加入会议

时间:2018-01-31 20:04:48

标签: twilio twilio-api twiml

目标:将来电置于会议中。

我想要达到的目标是:

  1. 向所有可用座席生成呼叫信号
  2. 将来电召入会议
  3. 当座席接听时,它连接到会议
  4. 在来电语音通话中,我有以下代码:

          $response = new Twiml();
          $dial = $response->dial([
            'callerId' => $input['From'],
          ]);
    
          $dial->client('testagent',
          [
            'url' => "/twilio/conference/create"
          ]);
    

    如何在创建代理商电话后立即将呼叫拨入会议,以扩展此twiml?

    目前座席已成功驻留在会议中,而来电仍然响起......

2 个答案:

答案 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响应无法做到这一点......