来自通话中的Twilio呼叫转接

时间:2013-07-10 22:17:16

标签: twilio

我没有从Twilio文档中找到明确答案。我正在尝试建立一个电话系统,可以在通话时将另一方置于保持状态,并且只能通过电话进行。示例:有两个代理人在现场与我合作。我在手机上打电话(远离电脑),发现其他代理人需要和我打电话的人说话。我希望能够将某些东西压入手机,直接将另一个人转移到代理,或将它们放入队列中。然后我可以调用其他代理,他可以从队列中检索该人。所有这些都需要通过我们的手机进行。

我已经找到了一些关于此的文档,但似乎都要求我在计算机上,这是不可能的。

这对Twilio来说是否可能?

2 个答案:

答案 0 :(得分:5)

Twilio福音传教士在这里。

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

让我们定义场景中的角色:Agent1,Agent2,Field。

让我们说Field调用Agent1。您可以将<Dial>字段<Dial>字段转换为<Conference>(让我们称之为ConferenceA),而不是将两者直接与<Dial>连接,然后使用REST API启动对Agent1的出站调用。当他们将<Conference>回复到同一<Conference>时。系统需要获取Agent1和Field的CallSid以及<Conference>的Sid,将它们保存在某种类型的存储中以便以后使用。

在此方案中使用<Dial>可以让您更灵活地操作呼叫的每个分支,而不是使用<Conference>连接Field和Agent1时的其他分支。

所以现在Agent2调用Field。 Agent2将完成相同的过程,反过来。 Agent2将被拨入<Dial>(我们称之为ConferenceB),您的系统将使用REST API来调用Field。当Field回答时,他们会将<Conference>加入与Agent2相同的会议中。同样,系统需要获取Agent2和Field的CallSid以及<Dial>的Sid,将它们保存在某种类型的存储中以便以后使用。

现在,Field需要一种告诉系统将Agent2与Agent1连接的方法。为此,您可以在将Field拨入ConferenceB时使用TwiML中的<Dial>的hangupOnStar属性。 <Dial hangupOnStar="true" action="[process_hangup_url]"> <Conference>ConferenceB</Conference> </Dial> 动词看起来像:

<Dial>

hangupOnStar告诉Twilio断开调用者(字段)与他们<Dial>编辑的人(会议),但仍然请求<Response> <Gather action=[gather_handler]> <Say>Press 1 to connect this caller to another<Say> </Gather> </Response> 动词操作属性中定义的URL。这很重要,因为当Field需要告诉系统将Agent2重定向到带有Agent1的ConferenceA时,对s action属性中的URL的请求使系统有机会提示Field查看他是否想要做什么。所以你可能让Twilio像这样执行一些TwiML:

{{1}}

如果Field按一个,系统(知道此处涉及的所有各方的所有CallSids和会议sid)可以使用REST API将Agent2重定向到ConferenceB并进入ConferenceA。

它使系统更复杂,但它应该适合你。

希望有所帮助

答案 1 :(得分: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>