来自通话中的Twilio呼叫转接

Mil*_*e12 4 twilio

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

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

这对Twilio来说甚至可能吗?

Dev*_*der 5

Twilio福音传教士在这里.

这听起来像是一个使用某些<Conference>s的好地方.

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

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

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

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

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

<Dial hangupOnStar="true" action="[process_hangup_url]">
    <Conference>ConferenceB</Conference>
</Dial>
Run Code Online (Sandbox Code Playgroud)

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

<Response>
    <Gather action=[gather_handler]>
        <Say>Press 1 to connect this caller to another<Say>
    </Gather>
</Response>
Run Code Online (Sandbox Code Playgroud)

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

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

希望有所帮助