我很难解决如何使用Twilio转接入站呼叫的问题。这个想法是:
我已经实现了部分流程。我在最初的呼叫中使用会议标签将呼叫者强行带入带有音乐的房间,当该呼叫进入时,我拨打了接待员的电话,然后让接待员加入会议。效果很好。
我想不通的是如何从接待员电话中获取输入,然后对其进行操作。例如,如果接待员按#200 *(或类似的命令),我要拨打分机200,而会议中的呼叫方将被保留,直到被叫方应答为止(一旦我可以抓住,所有这些都应该很容易输入并对其采取行动)。
对此有任何帮助。
谢谢。
答案 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
并拨打另一个分机来转出。
让我知道这是否有帮助。