2013-08-24 48 views
4

从twilio文档和tutorial中,代理人不知道有人在队列中,所以这只有在队列中总有人在场且代理人只是坐在那里并且整天拨打现场电话时才有效。如何获得twilio呼叫座席将其连接到队列中的呼叫者?

目的:

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

我真正的新twilio所以这twiml不好,我已经知道这个是不行的,但这里是我想到目前为止:

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

contactagent.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>" 
?> 

connectAgent.xml

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

回答

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检查队列大小。然后,您可以在新代理加入时或在忙碌代理完成处理客户呼叫时触发代理的新呼叫。

我希望帮助。

+0

感谢您提供答案。不知何故,我认为会有一些简单的内置方式,但是我意识到这对你来说有点牵扯到实际上布置我想要做的事情。以后我会发布我的最终解决方案。 –

+0

@AuntJamaima - 你最终的解决方案是什么? –

+0

对不起,我没有发布。我设置它,以便在队列中有一个呼叫者时,它会每隔30秒钟呼叫座席直到她回答。如果他们使用手机,这对代理人来说有点烦人。我没有我为它写的剧本,因为很久以前。 –