Twilio:Ruby:Callback Status Call Call Call:どちらが完了しましたか?
質問
私は私のTwilioアプリによって頻繁に呼ばれなければならない電話のリストがあります。私は毎分実行されるCronジョブを持っています。リストには、最後の時間で正しく完了しなかったコールと共に次の分で実行される予定の呼び出しが含まれます。
リスト内の各電話機には、このようなコード(Ruby)が並行して実行される電話のリスト(リスト "電話")を開始し、このスニペットは毎分実行されます。
phones.each do |phone|
callbackurl="http://myapp.com/twiliocallback?phone=#{phone.id}"
data={:from=>'16135551234',
:to=>phone.number,
:url=>callbackurl
}
client=Twilio::REST::Client.new(ACCOUNT_SID, ACCOUNT_TOKEN, :ssl_verify_peer => false)
client.account.calls.create data
end
.
しかし、電話が1分を超える電話でかかる場合、私はすでにTwilioと会話している間、cronジョブが同じ番号への呼び出しを起動したくない。また、ステータスを更新する前に電話の途中で電話を鳴らしている場合は、その番号を後続のCRONによって再び呼び出すことができます。
私は値TWILIO_NOT_STARTED、TWILIO_IN_PROGRESSで、値NOT_STARTED、IN_PROGRESS、およびSUCCESSFULLY_COMPLETEDとの通話(例えばphone.status)、およびtwilio_status属性(例えばphone.twilio_status)のステータス属性が必要であることを知っている、とTwilio_Completed。
呼び出しはとして始まります
phone.status="NOT_STARTED"
phone.twilio_status="TWILIO_NOT_STARTED"
.
そして電話をかけるとすぐに、電話のステータスを更新することができます。
phone.status="IN_PROGRESS"
phone.twilio_status="TWILIO_IN_PROGRESS"
.
成功パス内で呼が正しく完了した場合は、ステータスを設定できます。
phone.status="SUCCESSFULLY_COMPLETED"
.
呼び出しがTwilioから切断されたときに把握できる場合は、このを実行して通話が中止されたかどうかを判断できます。
is_aborted? = twilio.status=="IN_PROGRESS" && twilio.twilio_status=="TWILIO_COMPLETED"
.
しかし、コードの実行方法がわからない
phone.twilio_status="TWLIO_COMPLETED"
.
電話コールがTwilio Callワークフローの途中で、またはワークフローの終わりにも電話をかけたときに、特定の電話で電話をかけます。
Twilioは、電話機の呼び出しが完了したときに呼び出すことができるコールバックURLを持っているように見えますが、コールバックハンドラがどのように並列呼び出しが完了したかを判断できません。正しい通話に適切なステータスをタグに付けることができるようにこれを行う方法はありますか?
解決
通話中およびステータスコールバックURL要求のすべてのリクエストでは、Twilioは一意のコールID値をサーバに渡して通話を識別します。これは、最初に呼び出しを開始するときに戻ってきたCall XMLまたはJSONデータの中でも返されます。
https://www.twilio.com/docs/api/twiml/twilio_request
https://www.twilio.com/docs/api/rest/making-calls.
呼び出しのライフサイクル全体を通してステータスを追跡するように保存できます。