Twilio - 转接呼入电话

Twilio - Transfer an Inbound Call

我在思考如何使用 Twilio 转接呼入电话时遇到了很多麻烦。思路是:

  1. 有电话进来
  2. 呼叫连接到接待员
  3. 接待员问候并拨分机 - 按#。
  4. 来电转移到指定的#/sip设备。

我已经实现了这个流程的一部分。我在初始呼叫时使用了会议标签,以强制呼叫者进入一个有保持音乐的房间,当那个呼叫进来时,我拨通了接待员,然后让接待员加入会议。这非常有效。

我想不通的是如何获取接待员的意见 phone 然后采取行动。例如,如果接待员按#200*(或类似的东西),我想拨分机 200,会议中的来电者保持等待,直到转接方应答(一旦我可以抓住,所有这些都应该很容易输入并据此采取行动)。

如有任何帮助,我们将不胜感激。

谢谢。

这里是 Twilio 开发人员布道者。

感谢评论中的额外细节。您的接待员被拨入会议以使用 startConferenceOnEnter 停止等待音乐并建立连接来处理来电。这是一个好的开始。

你说你也有 endConferenceOnExit 接待员。我会删除它,因为为了实现这一点,我们将要从会议中删除接待员,并在我们整理转接时将呼叫者留在其中。

因此,您需要添加 hangupOnStar to your receptionist's TwiML. When the receptionist hits * the call with either request the action attribute for the original <Dial> or, if that is not present, will continue to the next TwiML verb after <Dial>. Either way, this is where you want to include a <Gather input="dtmf">。这将启动 Twilio 侦听键盘音。

然后您的接待员可以拨打要连接的分机并按 # 完成(默认 finishOnKey。这将向 <Gather> 与请求正文中的 Digits。然后您可以选择那些 Digits 并使用该分机向用户发起新呼叫。当该呼叫连接时,您可以将它们放入原来的会议。

所以,这看起来应该有点像:

接待员 TwiML:

<Response>
  <Dial hangupOnStar="true">
    <Conference startConferenceOnEnter="true" endConferenceOnExit="false">CALLERS_CONFERENCE_ID</Conference>
  </Dial>
  <Gather action="/transfer" input="dtmf" finishOnKey="#">
    <Say>Please enter the extension you want to dial</Say>
  </Gather>
</Response>

然后 /transfer 操作应该在伪代码中执行如下操作:

/转移

def transfer
  extension = params["Digits"]
  twilioClient.calls.create( to: getNumberFromExtension(extension), from: TWILIO_NUMBER, url: "https://example.com/connect" )
  return "<Response><Hangup/></Response>" # this hangs up the receptionist
end

最后,上面新呼叫中引用的 /connect 端点应该 return TwiML 将新呼叫者加入会议:

<Response>
  <Dial>
    <Conference startConferenceOnEnter="true" endConferenceOnExit="true">CALLERS_CONFERENCE_ID</Conference>
  </Dial>
</Response>

您甚至可以使 /connect 端点与原始接待员 TwiML 相同,这将允许通话中的下一个人也可以通过按 * 并拨打另一个分机号来转出。

如果这有帮助,请告诉我。