Twilio-转移入站呼叫

时间:2019-07-01 01:32:07

标签: twilio twilio-php twiml

我很难解决如何使用Twilio转接入站呼叫的问题。这个想法是:

  1. 打来电话
  2. 呼叫已连接到接待员
  3. 接待员问询和拨号分机-按#。
  4. 呼叫者已转移到指定的#/ sip设备。

我已经实现了部分流程。我在最初的呼叫中使用会议标签将呼叫者强行带入带有音乐的房间,当该呼叫进入时,我拨打了接待员的电话,然后让接待员加入会议。效果很好。

我想不通的是如何从接待员电话中获取输入,然后对其进行操作。例如,如果接待员按#200 *(或类似的命令),我要拨打分机200,而会议中的呼叫方将被保留,直到被叫方应答为止(一旦我可以抓住,所有这些都应该很容易输入并对其采取行动)。

对此有任何帮助。

谢谢。

1 个答案:

答案 0 :(得分:2)

这里是Twilio开发人员的传播者。

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

您说您还有endConferenceOnExit作为接待员。我将删除它,因为为了实现此目的,我们将要从会议中删除接待员,并在整理转接时将呼叫者留在会议中。

因此,您将需要向接待员的TwiML中添加hangupOnStar。当接待员打*时,呼叫要么请求原始action的{​​{1}}属性,要么(如果不存在)将继续到<Dial>之后的下一个TwiML动词。无论哪种方式,这都是您要包含<Gather input="dtmf">的地方。这将开始Twilio监听按键音。

您的接待员然后可以拨打分机以连接并按<Dial>完成操作(默认为finishOnKey。这将向用户{{1} },并在请求正文中添加#。然后,您可以选择那些action并向该分机的用户发起新呼叫。当该呼叫接通时,您可以将其放入原始会议。

因此,它看起来应该像:

接待员TwiML:

<Gather>

然后,Digits操作应以伪代码执行如下操作:

/转移

Digits

最后,在上面的新呼叫中引用的<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> 端点应返回TwiML,以将新的呼叫者加入会议:

/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 端点与原始接待员TwiML相同,这将允许通话中的下一个人也可以通过按/connect并拨打另一个分机来转出。

让我知道这是否有帮助。