在呼入呼叫之前提示接受代理

时间:2017-03-07 00:22:03

标签: node.js twilio

我在Twilio / node.js上设置了一个基本工作流程,它将来电转接到座席的电话。由于座席可能在手机/手机上设置了语音信箱,我想通过“聚集”指令提示他们接受。如果他们按1,则呼叫将被转移(“出队”指令)。否则,将拒绝预订。

我的问题是我不知道如何订购指令:如果我在入队前聚集,那么聚会似乎还不知道“要问谁”。但是如果在收集之前入队,则呼叫者(来电客户端)将听到提示信息,拒绝预约为时已晚......

2 个答案:

答案 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'
  });
};