メニュー

Expand
Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

JavaおよびServletを使用したウォーム転送

別のサポート担当者に転送されるときに、サポートコールから切断された経験はありますか?

ウォーム転送がこの問題を解消します。 Twilioを活用したウォーム転送を使用すれば、コールセンターの担当者はリアルタイムで他の担当者に電話をかけることができます。

ここでは、高いレベルでどのように機能するのかについて示します。

  1. Web クライアントを通じて接続されると、最初の担当者が対応可能になります。
  2. 2 番目の担当者も、Web クライアントを通じて接続されると、対応可能になります。
  3. クライアントがサポートラインに電話をかけます。
  4. クライアントは、最初の担当者が電話に応対するまでしばらく待ちます。
  5. 最初の担当者は、電話でクライアントに対応しているときに、2 番目の担当者にダイヤルして通話をつなぐことができます。
  6. 2 番目の担当者が通話につながると、最初の担当者は通話から抜けることができます。クライアントと 2 番目の担当者は通話に接続したままになります。

さぁ、はじめましょう! GitHubからサンプルアプリケーションをクローンし、下のボタンをクリックして始めてください。

We're Warming Up

音声通話Webhookのセットアップ

まず、顧客がサポートエージェントと連絡を取りたいときに電話をかけてくるTwilio番号に対する音声通話Webhookを構成しましょう。

ウォーム転送用のTwilio Console

これは外部からアクセスできるURLまたは本番環境のアプリケーションである必要があります。 http://***.ngrok.io/conference/connect/client

        
        
        
        
        src/main/java/com/twilio/warmtransfer/servlets/guice/WarmTransferServletModule.java

        Twilio Webhookに対するルート

        src/main/java/com/twilio/warmtransfer/servlets/guice/WarmTransferServletModule.java

        Awesome, now you've got a webhook in place. Next up, we'll look at some of the code.

        エージェントを接続する

        担当者に接続する

        ここでは、Twilio の音声通話 Web クライアントを使用して、担当者に接続するために必要なすべてのフロントエンドコードを確認できます。

        ライブの Web クライアントを実現するには、基本的に以下の 3 つのものが必要です。

        • ケイパビリティ・トークン(アプリケーションから提供されます)
        • 担当者ごとの一意の識別子(文字列)
        • Twilio によってトリガーされる各種イベントを処理するためのイベントリスナー
              
              
              
              
              src/main/webapp/js/main.js

              次のステップでは、ケイパビリティートークンの生成についてもう少し詳しく見てみましょう。

              ケイパビリティートークンを生成する

              ケイパビリティートークンを生成する

              Twilio 音声通話 Web クライアントに接続するために、ケイパビリティートークンが必要です。

              Webクライアントを通じた着信接続を許可するには、トークンの生成時に識別子が提供される必要があります。 

                    
                    
                    
                    
                    src/main/java/com/twilio/warmtransfer/utils/TwilioAuthenticatedActions.java

                    ケイパビリティートークンを生成する

                    src/main/java/com/twilio/warmtransfer/utils/TwilioAuthenticatedActions.java

                    続いて、着信通話の処理方法について見ていきましょう。

                    着信通話のハンドリング

                    着信通話のハンドリング

                    このチュートリアルでは、 agent1agent2 などの固定の識別子の文字列を使用しましたが、コールセンタークライアントには、生成された任意の文字列を使用できます。これらの識別子は、Twilio REST API を使用して指定した担当者に通話を発信するのに使用されます。

                    クライアントが Twilio 番号に発信すると、アプリケーションは命令を求める POST リクエストを受信します。TwiML を使用して、クライアントにカンファレンスルームに参加するように、また、Twilio REST API クライアントには最初の担当者との通話を開始するように指示し、その担当者が同じカンファレンスに参加できるようにします。

                    クライアントに指示を与える際、今回の場合はアプリケーションの別のエンドポイントとなるコールバック waitUrl もまた提供します。このURLはアプリケーションの別のエンドポイントで、ユーザーにあいさつを述べて (Say)、保留中に音楽を再生する (Play)さらなるTwiMLを返します。 こちらのコードをご覧ください

                    クライアントのCallSidを電話会議の識別子として使用します。 電話会議に加わるすべての参加者にはこの識別子が必要なため、次の人に電話をかけるときに取得できるよう、これをデータベースに保存しておく必要があります。

                          
                          
                          
                          
                          src/main/java/com/twilio/warmtransfer/servlets/ConnectClientServlet.java

                          電話会議を作成し、最初のエージェントを接続し、Clientを保留状態にする

                          src/main/java/com/twilio/warmtransfer/servlets/ConnectClientServlet.java

                          ここで、ClientへのTwiML命令の渡し方を確認しましょう。

                          Client用にTwiML命令を用意する

                          クライアントに対する TwiML 命令の提供

                          ここでは、VoiceResponseをそのビルダーを使用して作成します。 これにはClientに特定の電話会議室に参加するよう指示するための、Conference名詞を伴うDial動詞が含まれています。

                                
                                
                                
                                
                                src/main/java/com/twilio/warmtransfer/utils/TwimlBuilder.java

                                Client用のTwiMLを生成し、電話会議に参加させる

                                src/main/java/com/twilio/warmtransfer/utils/TwimlBuilder.java

                                Next up, we will look at how to dial our first agent into the call.

                                最初のエージェントを呼び出す

                                最初のエージェントが電話に出るようダイヤルする

                                今回のアプリケーションでは、callAgent メソッドを作成して担当者への電話の発信を処理します。 このメソッドはTwilio SDKの Call クラスを使用して新規通話を作成します。 create スタティックメソッドは下記のパラメーターを受け取ります。

                                1. To :担当者の Web クライアント識別子(agent1 または agent2
                                2. From:Twilio 電話番号
                                3. Url :通話が接続したときに TwiML 命令を求める URL

                                create メソッドは execute メソッドを含むオブジェクトを返し、TwilioのAPIの呼び出しは execute メソッドが呼び出されたときのみ発生します。

                                担当者がWebクライアントで通話に出ると、コールバックURLにこの通話のすでに顧客が待機している会議室への参加を指示するリクエストが送られます。

                                      
                                      
                                      
                                      
                                      src/main/java/com/twilio/warmtransfer/utils/TwilioAuthenticatedActions.java

                                      エージェントに電話に出るようダイヤルする

                                      src/main/java/com/twilio/warmtransfer/utils/TwilioAuthenticatedActions.java

                                      With that in mind, let's see how to add the second agent to the call.

                                      2 番目の担当者にダイヤルして通話を接続する

                                      2 番目の担当者にダイヤルして通話を接続する

                                      顧客と最初の担当者が通話中のとき、次の担当者へのウォーム転送を行う準備はすでに完了しています。 最初の担当者がリクエストを発行し、 conferenceId メソッドを検索することで次の担当者に通話を発信します。 callAgent メソッドがすでに手元にあるので、 これを呼び出すだけで次の担当者に接続できます。

                                            
                                            
                                            
                                            
                                            src/main/java/com/twilio/warmtransfer/servlets/CallAgentServlet.java

                                            次のエージェントを電話会議に招待する

                                            src/main/java/com/twilio/warmtransfer/servlets/CallAgentServlet.java

                                            続いて、最初のエージェントが通話を終了するための処理方法を見てみましょう。

                                            最初の担当者が通話から抜ける

                                            最初の担当者が通話から抜ける

                                            3 人の参加者が同じ通話に参加した場合は、最初の担当者はその目的をかなえています。そこで、最初の担当者は通話から抜け、2 番目の担当者とクライアントがうまく会話するようにできます。

                                            各参加者が通話に参加したときに受け取る TwiML の違いに注意することが重要です。担当者 1 と 2 の双方が、startConferenceOnEntertrue に設定しました。つまり、彼らのいずれかが通話に参加すると、カンファレンスが始まります。発信元のクライアントと担当者 2 については、endConferenceOnExit が true に設定されています。これにより、これら 2 人の参加者のいずれかが通話から抜けると、その通話は終了します。

                                                  
                                                  
                                                  
                                                  
                                                  src/main/java/com/twilio/warmtransfer/utils/TwimlBuilder.java

                                                  電話会議にダイヤルするよう指示する

                                                  src/main/java/com/twilio/warmtransfer/utils/TwimlBuilder.java

                                                  一丁あがり!Java Servlet を使用して、ウォーム転送を実装できました。 これで、担当者が他のスタッフに転送するとき、顧客がサポートの電話から切断されることがなくなります。

                                                  関連トピック

                                                  関連トピック

                                                  Twilio を使う Java 開発者であれば、以下のチュートリアルもお楽しみください。

                                                  Click-To-Call

                                                  クリックトゥコールはウェブトラフィックをボタンのクリック1つで、電話のトラフィックに変換します。クリックトゥコールの実装方法は数分で学ぶことができます。

                                                  Automated-Surveys

                                                  Twilio を使った Spring ウェブアプリでの自動調査の実装について学びます。

                                                  これは役に立ちましたか?

                                                  このチュートリアルをお読みいただき、ありがとうございます。 どんなものを構築されたか(されるのか)、ぜひTwitterでお知らせください

                                                  Agustin Camino Samuel Mendes David Prothero Kat King
                                                  Rate this page:

                                                  ヘルプが必要ですか?

                                                  誰しもが一度は考える「コーディングって難しい」。そんな時は、お問い合わせフォームから質問してください。 または、Stack Overflow でTwilioタグのついた情報から欲しいものを探してみましょう。