知っておくべき!Twilioの通話更新(Update)機能。

以前「Twilioを使って保留機能を実装」にてTwilioを使った保留機能について記事を投稿したことがありますが、前回のブログでは通話を更新(Update)すると通話が切れて再コールする方法でしたので、今回のブログでは、通話を切断せず両方待機させる方法をご紹介致します。

まず、通話の更新(Update)の実装について下記のドキュメントをご覧ください。

https://jp.twilio.com/docs/api/rest/change-call-state

EnqueueのwaitUrlを指定しますと、通話待機中に再生する音楽や音声メッセージを設定できます。
https://jp.twilio.com/docs/api/twiml/enqueue

シナリオ

ある顧客センターのオペレーターが電話による顧客対応している途中、調べ物があり通話を保留状態にします。その後、席に戻ったオペレーターがお客様対応を再開します。
※ Aさん(お客さん):発信、Bさん(オペレーター):受信

  1. Aさんが顧客センター(050-xxxx-yyyy)に電話をかける。
  2. AさんとBさんの通話開始。
  3. AさんとBさんの通話にUpdateをかけ、それぞれ別の待機ルーム(Queue)で待機状態にする。
  4. Bさんのコールをもう一回UpdateかけてAさんの待機ルームに参加し、通話開始。

電話をオペーレターに転送

Aさんが顧客センター(050-xxxx-yyyy)に電話をかけるとBさんに電話を転送する処理は、下記のTwiMLで行います。
このTwiMLで注目すべきなのは、「Dial」後の処理である「Enqueue」です。
つまり、Dialによる通話が終了すると、Enqueueによって新しいQueue(待機ルーム)を生成し、生成されたQueueに参加することになります。

※ 通話を更新するためには、Call Sidが必要になります。下記のドキュメントを参考にし、Call Sidを取得しましょう。
https://jp.twilio.com/docs/api/rest/call

通話中のコールを更新(Update)

※下記のコードでAさんのコールを更新(Update)するとBさんは次の処理がないため切断されますので、必ずBさんのコールを更新してください。

BさんのコールにUpdateをかけますと、Aさんとの通話は一旦切断されます。
この際に切断されたAさんのコールは、上記のTwiMLで処理されているようにDial動詞の処理が終わり次のEnqueueに入りますので、Aさんは待機状態に入ります。
なお、BさんはUpdate文に設定(下記コードの9行目)されている下記のTwiML「create_enqueue.xml」の処理を行うことになり、Enqueueで新しい待機ルームにて待機することになります。


■ create_enqueue.xml


ここまでで、AさんとBさんはそれぞれ違う待機ルームで待機をしている状態になります。
その後、BさんがAさんの対応に戻るため下記のコードでAさんのルーム(queue_01)に接続(通話再開)します。もちろん、BさんのルームにAさんを参加させることもできます。

■ join_queue.xml

まとめ

基本、Twilioから生成されたコール(通話)は他の処理を差し込むことができませんが、Updateを使いますと通話待機(保留)だけではなく、様々な方法で通話を制御することが可能なとっても便利で強力なTwilioの機能の一つです。

RESTを使う方法なので、少し複雑に見えるかも知れませんが、Twilioはこのように REST APIを使えば様々な通話機能を開発できることと、ドキュメントに公開されているサンプルコードを応用すればより豊富な電話機能を実現することが可能ですので、みなさんも是非お試しください。

この記事をシェア


最新記事

すべての記事へ