我有以下簡單的回叫來處理Twilio呼叫。我要求用戶按下任何鍵盤按鈕繼續。如果通話收件人未按下某個鍵,則再次詢問該問題。如何確定呼叫接收者是否掛斷。目前,如果接聽電話並掛機,我的重定向路線繼續進行,直到我放棄要求按任意鍵。在掛斷之前可能會有一分鐘的延遲,以及我的應用停止接收命中的時間點。如何確定呼叫接收者在Twilio呼叫期間是否掛起電話
def response
Twilio::TwiML::Response.new do |r|
r.Gather finishOnKey: '#', numDigits: @num_digits,
timeout: @phone_wait_time,
action: NGROK +
voice_path(@notification.id, @final_question_response) do |g|
g.Say @latest_question.text, voice: 'alice', language: 'en-AU'
end
r.Redirect NGROK +
voice_redirect_path(@notification.id, @final_question_response)
end.to_xml
end
編輯
這裏有一個關於這個問題我已經和我想要做的更多的信息。我將用一個例子。
1)我撥出電話如下
def call_phone
client = Twilio::REST::Client.new(
Rails.application.secrets.twilio_sid,
Rails.application.secrets.twilio_token
)
call = client.account.calls.create(
from: Rails.application.secrets.twilio_voice_number,
to: @phone_number,
url: NGROK + question_path(@notification.id),
method: 'GET',
statusCallback: NGROK + call_status_path(@notification.id),
statusCallbackEvent: [:initiated, :ringing, :answered, :completed]
)
end
2)我statusCallback
被擊中與往常一樣,initiated
,ringing
等呼叫接收者拿起電話和statusCallback
被擊中in-progress
。按照上面1中定義的url:
命中我的question_path
。一些處理後我的反應叫做如下
def response
Twilio::TwiML::Response.new do |r|
r.Gather finishOnKey: '#', numDigits: @num_digits,
timeout: @phone_wait_time,
action: NGROK +
voice_path(@notification.id, @final_question_response) do |g|
g.Say @latest_question.text, voice: 'alice', language: 'en-AU'
end
r.Redirect NGROK +
voice_redirect_path(@notification.id, @final_question_response)
end.to_xml
end
3)@latest_question.text
說Please press any key to continue
。如果通話收件人掛斷,我想終止通話。我希望我的statusCallback
能夠打到狀態,讓我知道電話接收者已掛斷。它不這樣做,我不知道它發生了。超時後,我的voice_redirect_path
被擊中。沒有迴應,所以我再次問這個問題。我仍然不知道電話已掛斷。我繼續問這個問題,一切仍在繼續,好像呼叫接收者仍然在線。這一直持續下去,直到我放棄並掛斷電話。然後我的statusCallback
被點擊,狀態爲completed
。
在此先感謝。
您是否在呼出中設置了一個'statusCallback' URL,無論是來自出站的API請求,還是Twilio控制檯中編號的'statusCallback'設置? – philnash
是的,我有。即使呼叫已掛斷,'statusCallback'仍會繼續以'進行中'命中。直到我最終放棄要求呼叫者按任意鍵並掛斷自己,我的'statusCallback'才被命令爲'completed'的狀態。 – RamJet
我發現這個[link](https://stackoverflow.com/questions/24087517/twiml-app-if-the-caller-hangs-up-in-the-middle-of-the-application-process-does) 。它說我可以做我想做的事,但實際上並沒有說我該怎麼做。 – RamJet