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