4

从 twilio 文档和教程中,代理不会知道有人在队列中,所以这只有在队列中总是有人并且代理只是坐在那里并整天进行现场呼叫时才有效。

客观的:

当有人打电话时,我想将呼叫连接到代理。如果代理不可用,请将呼叫者添加到队列中。如果第二个人或第三个人来电,请继续将他们添加到队列中。当座席完成他们的第一个电话并挂断时,让下一个排队呼叫并实际拨打座席的电话与座席通话。

我对 twilio 真的很陌生,所以这个 twiml 很糟糕,我已经知道这不起作用,但这是我目前正在尝试的:

<?xml version="1.0" encoding="UTF-8" ?>
<Response>
     <Enqueue waitUrl="contactagent.php">myqueue</Enqueue>
</Response> 

联系代理.php:

<?php
// Get the PHP helper library from twilio.com/docs/php/install
require_once('../callapp/Services/Twilio.php'); // Loads the library

$sid = "(MYID)";
$token = "(MyToken)";
$client = new Services_Twilio($sid, $token);
$call = $client->account->calls->create($_REQUEST['the caller that's in the queue'], "(the agent's phone number)", "connectagent.xml", array());
echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<Response>
   <Say>Your are number ".$_REQUEST['QueuePosition']." in line for a representative.</Say>
   <Play>http://com.twilio.sounds.music.s3.amazonaws.com/MARKOVICHAMP-Borghestral.mp3</Play>
</Response>"
?>

连接代理.xml

<?xml version='1.0' encoding='utf-8' ?>
<Response>
   <Dial>myqueue</Dial>
</Response>
4

1 回答 1

3

我认为您应该将所有客户呼叫都放入队列(无论是否是第一个客户)。使用 Enqueue 来完成。那很好。

接下来,您需要向代理发起呼叫。您可以指示 Twilio 呼叫代理的电话号码。在该指令中定义一个回调 url “dial_agent_callback”和一个状态回调 url “dial_agent_status_callback”。一旦“dial_agent_callback”回调发生(表明该代理已接听),您指示 Twilio 拨打您的队列:

<Response>
   <Dial>
      <Queue url="dial_queue_callback">
         myqueue
      </Queue>
   </Dial>
<Response>

您可以在 dial_queue_status_callback 中知道代理何时完成与客户端的通话(或者代理是否未接听,或者是否发生任何问题)。回调状态将指示发生了什么。

最后,您需要确定何时触发对代理的调用。我建议在发生客户呼叫时触发事件。致电您的下一个可用代理(如果有的话)。如果客户端多于代理,您可以使用 Twilio API 检查队列大小。然后,您可以在新座席加入或忙碌座席处理完客户呼叫时触发对座席的新呼叫。

我希望这会有所帮助。

于 2013-08-25T18:54:43.693 回答