2013-07-10 186 views
4

我没有从Twilio文档找到明确的答案。我正在尝试构建一个电话系统,可以在通话时和通过电话暂停对方。例如:有两名特工在现场陪我一起工作。我接到手机上的电话(远离计算机),发现其他座席需要与正在通话的人通话。我希望能够将某些东西压入电话中,直接将其他人转移到座席,或将他们放入队列中。然后,我可以打电话给其他代理人,他可以从队列中检索这个人。所有这些都需要从我们的手机中发生。Twilio呼叫转移来电

我发现了一些这方面的文档,但它似乎都需要我在一台计算机,这是不可能的。

这是甚至可能与Twilio?

回答

5

Twilio福音传教士在这里。

这听起来像它可能是use some <Conference>s的好地方。

让我们来定义场景中的参与者:Agent1,Agent2,Field。

可以说现场调用Agent1。您可以将<Dial>字段直接连接到<Conference>(我们称之为ConferenceA),然后使用REST API启动对Agent1的出站呼叫,而不是直接与<Dial>连接。当他们回答<Dial>他们到相同的<Conference>。系统需要获取Agent1和Field的CallSid以及<Conference>的Sid,并将它们保留在稍后使用的某种类型的存储中。

在这种情况下使用<Conference>可让您更灵活地操纵呼叫的每一个独立于其他呼叫的路径,而不是使用<Dial>连接Field和Agent1。

所以现在Agent2调用Field。 Agent2会经历相同的过程,恰恰相反。 Agent2将被拨入<Conference>(让我们称它为ConferenceB),你的系统将使用REST API调用Field。当Field应答时,他们将<Dial>编入与Agent2相同的会议中。同样,系统需要获取Agent2和Field的CallSid以及<Conference>的Sid,然后将它们保留在稍后使用的某种类型的存储中。

现在,Field需要一种方法来告诉系统将Agent2与Agent1连接起来。要做到这一点,您可以在Twiio中使用TwiML中的<Dial>的hangupOnStar属性,当您将Field拨入ConferenceB时。该<Dial>动词看起来是这样的:

<Dial hangupOnStar="true" action="[process_hangup_url]"> 
    <Conference>ConferenceB</Conference> 
</Dial> 

hangupOnStar告诉Twilio,断开谁,他们<Dial> ED(会议),但仍使在<Dial>动词动作属性定义的URL请求调用者(现场) 。这很重要,因为当Field需要告诉系统使用Agent1将Agent2重定向到ConferenceA时,并且对s action属性中的URL的请求使系统有机会提示Field以查看他是否想要执行此操作。所以,你可能有Twilio执行一些TwiML这样的:

<Response> 
    <Gather action=[gather_handler]> 
     <Say>Press 1 to connect this caller to another<Say> 
    </Gather> 
</Response> 

如果现场按下一个,系统(谁知道所有的CallSids所有这里涉及各方的,以及会议SIDS),可以使用REST API将Agent2从ConferenceB重定向到ConferenceA。

它使一个系统更复杂一点,但它应该为你工作。

希望帮助

0
Redirect an incoming call to new url:  

<?php 
// Get the PHP helper library from twilio.com/docs/php/install 
require_once '/path/to/vendor/autoload.php'; // Loads the library 
use Twilio\Rest\Client; 
// Your Account Sid and Auth Token from twilio.com/user/account 
$sid = "ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 
$token = "your_auth_token"; 
$client = new Client($sid, $token); 
// Get an object from its sid. If you do not have a sid, 
$call = $client 
    ->calls("CAe1644a7eed5088b159577c5802d8be38") 
    ->update(
     array(
      "url" => "your_url/test.xml", 
      "method" => "POST" 
     ) 
    ); 

echo $call->to; 

XML Code: 
--------- 
<Response> 
    <Redirect method="POST">url goes here</Redirect> 
</Response> 
+0

你能解释一下为什么这个代码工作,以帮助未来的读者? – WhatsThePoint