[英]Is there any difference between a plain old TwiML `Dial` verb and a single `Number` nested in a `Dial`?
[英]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 將使用action
屬性向我指定的端點發出請求,但僅限於“撥打的電話結束后”。 我需要知道 Twilio 如何處理我的回復的結果。 我擔心最初的呼叫者將永遠聽隊列音樂,因為被叫方沒有成功撥打隊列。 默認的隊列音樂雖然很好聽!
我怎么知道撥入隊列是否成功?
我知道呼叫的狀態可以是“進行中”或“已完成”(等等)。 就應用可以了解的狀態而言,呼叫呼叫隊列是否具有類似的概念?
當我故意嘗試通過錯誤的隊列名稱撥號到隊列時,被叫方線路錯誤(“發生應用程序錯誤”)並掛斷。 我收到了文檔中沒有的參數。 我唯一能找到參考的地方是https://github.com/BTBurke/twiml/blob/master/callbacks.go#L33
"DequeueResult" => "queue-not-found"
我是否應該期望此響應被記錄下來?
Twilio 開發者布道師在這里。
這是一個有趣的問題,我以前沒有遇到過。 最初,我認為初始<Enqueue>
元素可能會有所幫助。 <Enqueue>
有一個 URL 的action
屬性,它接收一個 webhook “當呼叫離開隊列時,描述出隊原因和在隊列中花費的時間的詳細信息”。 然而,“在呼叫通過動詞出隊的情況下,當橋接方斷開連接時,將觸發一次操作 URL。” 所以這並沒有告訴我們出隊的結果,直到為時已晚。
<Enqueue>
給我們的另一件事是waitUrl
。 雖然默認的等待音樂很棒,但在這里提供您自己的響應可能是一個更好的主意,因為每次 Twilio 到達動詞末尾並向 URL 發出另一個請求時waitUrl
都會收到信息。 請求參數給出您的信息包括呼叫的當前隊列 position、呼叫在隊列中的時長以及總隊列大小和呼叫在隊列中花費的平均時間。 不過,這並沒有告訴您有關<Dial><Queue>
成功的任何信息,這只是需要理解的有趣數據。
我認為這里最好的選擇是<Queue>
上的url
屬性。 這通常用於向隊列中的人耳語,讓他們知道他們現在正被移出隊列(無論如何實現都是一件好事。)。 當呼叫從具有url
的<Queue>
隊列中出隊時,屬性中的 URL 將收到請求。 您不需要將 TwiML 返回到此請求,一個空響應只會橋接調用,但該請求會讓您知道對隊列的調用已成功。
但它不會告訴您呼叫是否不成功。 這就是您可以使用<Dial>
元素的action
URL 的地方。當撥打的電話失敗時,該action
URL 將收到請求。
因此,在<Queue>
元素的url
屬性和<Dial>
元素的action
屬性之間,您可以知道對隊列的調用是成功還是失敗。
關於“DequeueResult”,這不是我以前見過的,我們正在內部調查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.