我在Twilio / node.js上设置了一个基本工作流程,它将来电转接到座席的电话。由于座席可能在手机/手机上设置了语音信箱,我想通过“聚集”指令提示他们接受。如果他们按1,则呼叫将被转移(“出队”指令)。否则,将拒绝预订。
我的问题是我不知道如何订购指令:如果我在入队前聚集,那么聚会似乎还不知道“要问谁”。但是如果在收集之前入队,则呼叫者(来电客户端)将听到提示信息,拒绝预约为时已晚......
答案 0 :(得分:1)
Twilio开发者传道者在这里。
在这种情况下,您不应该使用" dequeue"来响应作业回调。相反,您应该use the "call" instruction to initiate a call代替代理。
使用call指令,您可以包含呼叫连接到座席时将请求的URL。此时,您应该读出您的消息并使用<Gather>
以确保代理已准备好接听电话。当代理按下按钮或<Gather>
超时时,将请求action
的{{1}}属性。然后,如果您发现用户确实输入了数字,则通过选中Digits
parameter,您可以使用TwiML回复<Dial>
<Queue>
。要拨打预订所涉及的实际来电者,您需要将reservationSid
attribute添加到<Gather>
元素。您将收到ReservationSid
as a parameter in the task assignment webhook。当呼叫桥接时,它将接受预订。
如果<Queue>
超时,那么您应该拒绝预订,并将其传递给下一位工作人员。
让我知道这是否有帮助。
修改
针对这种情况的示例TwiML。
首先使用调用指令使用JSON响应赋值回调:
<Gather>
注意,我已将传入请求中的{
"instruction": "call",
"to": AGENT_PHONE_NUMBER,
"from": YOUR_TWILIO_NUMBER,
"url": "https://example.com/worker_call?ReservationSid=${req.body.ReservationSid}&TaskSid=${req.body.TaskSid}"
}
和ReservationSid
添加到工作人员接听电话时调用的webhook的URL。
然后,当工作人员接听电话时,Twilio拨打我们上面设置的TaskSid
,我们会用它来询问他们是否要接听电话。
url
注意,我将# /worker_call
<Response>
<Gather action="/gather_result?ReservationSid=${req.query.ReservationSid}&TaskSid=${req.query.TaskSid}" numDigits="1">
<Say voice="alice">You have an incoming call, dial any number to accept</Say>
</Gather>
<Redirect>/gather_result?ReservationSid=${req.query.ReservationSid}&TaskSid=${req.query.TaskSid}</Redirect>
</Response>
和ReservationSid
从传入的请求网址传递到TaskSid
操作的网址。现在,当调用动作URL时,我们需要根据呼叫是否被接受进行响应。我需要使用一些实际代码而不仅仅是TwiML,所以我将使用Node来完成。我们需要能够在REST API中调用预留资源,因此需要进行一些设置:
<Gather>
答案 1 :(得分:0)
有人对此有更多问题吗?我收到11100
错误。我的代码:
callback(null, {
'instruction':'call',
"url": 'https://handler.twilio.com/twiml/EH8157915d7d2130a892d47e20b0d515e8?ReservationSid=${req.body.ReservationSid}&TaskSid=${req.body.TaskSid}',
'from':'+19173333333'
});
};