首页 > 解决方案 > Twilio 将来电添加到队列并呼叫代理

问题描述

我曾在使用 PHP/laravel 处理来电的情况下运行,因此当客户端呼叫公司号码时,响应是这种方法:

 public function respondToUser()
{
    $response = new Twiml();

    $audio_file_path = trans('ivr_file_paths.welcome');
    $response->play($audio_file_path);
    $response->redirect('/ivr/call/enqueue', ['method' => 'POST']);

    return $response;
}

但是我接下来要实现的是将来电放入队列中,然后如果接线员(仅一个接线员/代理)忙,则在后台运行音乐,如果没有,则连接到他。

这就是现在的样子

 public function enqueueCall(Request $request)
 {

  $please_wait_audio_file = trans('paths.please_wait');


  $please_wait_audio_file = trans('ivr_file_paths.please_wait');

  $response = new Twiml();

  $dial = $response->dial();

  $dial->number('+number');
  $response->enqueue('support', ['waitUrl' => $please_wait_audio_file]);

  Log::info($response);
  echo $response;
}

我知道现在没有队列,但是这个方法只是结束了通话..

有什么建议么?非常感谢!

标签: phptwilio

解决方案


Twilio 开发人员布道者在这里。

我建议您首先查看将呼叫者排队的<Enqueue>TwiML 动词<Queue>,然后您可以使用它<Dial>来将下一个用户从队列中弹出并与他们交谈。

如果您需要比这更复杂的东西,请开始阅读TaskRouter

编辑一些示例代码:

将呼叫者排队并拨打您的代理。

public function enqueueCall(Request $request)
  {
  // build up the TwiML
  $please_wait_audio_file = trans('ivr_file_paths.please_wait');
  $response = new Twiml();
  $response->enqueue('support', ['waitUrl' => $please_wait_audio_file]);

  // make the call to your agent
  $client = new Client($yourTwilioAccountSid, $yourTwilioAuthToken);
  $call = $client->calls->create(
      $yourAgentNumber,
      $yourTwilioNumber,
      array("url" => "http://example.com/ivr/call/queue")
  );

  Log::info($response);
  echo $response;
}

当代理连接时,拨打队列:

public function dialQueue(Request $request)
  {
  $response = new Twiml();
  $dial = $response->dial();
  $dial->queue('support');

  echo $response;
}

推荐阅读