提问人:aaronkelton 提问时间:2/18/2022 更新时间:2/21/2022 访问量:200
如何确定带队列的 TwiML 拨号是否成功?
How to determine if TwiML Dial with Queue was successful?
问:
设置
我的 Ruby on Rails 应用程序有一个成功排队的初始调用方。当 Rails 创建对被叫方的出站呼叫时,音乐会播放。然后,被叫方通过拨入队列成功连接到初始呼叫方:
response = Twilio::TwiML::VoiceResponse.new
response.dial(action: process_dial_call_status_path) do |dial|
dial.queue()
end
render xml: response.to_s, status: :ok
Twilio 文档指示 Twilio 将使用该属性向指定的终结点发出请求,但仅限于“拨打的呼叫结束后”。我需要知道 Twilio 如何处理我的响应的结果。我担心的是,最初的呼叫者将永远听队列音乐,因为被叫方没有成功拨号队列。不过,默认的队列音乐相当不错!action
问题
如何知道拨入队列是否成功?
我知道呼叫可以具有“正在进行”或“已完成”(以及其他)状态。呼叫到呼叫队列在应用可以知道的状态方面是否具有类似的概念?
补遗
当我故意尝试使用错误的队列名称拨号到队列时,被叫方线路错误(“发生应用程序错误”)并挂起。我收到一个文档中没有的参数。我唯一能找到参考的地方是 https://github.com/BTBurke/twiml/blob/master/callbacks.go#L33
"DequeueResult" => "queue-not-found"
我是否应该期望将此响应记录在案?
答:
Twilio 开发人员布道者在这里。
这是一个有趣的问题,我以前没有遇到过。最初,我认为初始<Enqueue>
元素可能会有所帮助。 具有一个 action
属性,该属性是一个 URL,用于接收 webhook,“当调用离开队列时,描述出队原因和有关在队列中花费的时间的详细信息”。但是,“如果呼叫通过谓词取消排队,则当桥接方断开连接时,将命中一次操作 URL。因此,直到为时已晚,这才告诉我们取消排队的结果。<Enqueue>
<Enqueue>
给我们的另一件事是 waitUrl
。虽然默认的保持音乐很棒,但在这里提供自己的响应可能是一个更好的主意,因为每次 Twilio 到达动词末尾并向 URL 发出另一个请求时都会收到信息。请求参数为您提供呼叫的当前队列位置、呼叫在队列中停留的时间以及总队列大小和呼叫在队列中花费的平均时间等信息。不过,这并不能告诉你任何关于成功的信息,它只是有趣的数据。waitUrl
<Dial><Queue>
我认为这里最好的选择是 <Queue>
上的 url
属性。这通常用于对队列中的人进行耳语,让他们知道他们现在正在被移出队列(无论如何,这是一件好事!当呼叫从队列中脱离队列时,属性中具有 URL 的 将收到请求。无需将 TwiML 返回到此请求,空响应只会桥接调用,但请求会通知你对队列的调用已成功。<Queue>
url
不过,它不会告诉您呼叫是否不成功。这就是您可以使用元素的 URL 的地方。当拨号呼叫失败时,该 URL 将收到请求。<Dial>
action
action
因此,在元素的属性和元素的属性之间,您可以知道对队列的调用是成功还是失败。<Queue>
url
<Dial>
action
关于“DequeueResult”,这是我以前从未见过的,我们正在内部研究它。
评论