メニュー

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で着信通話に応答する

In this guide, we'll show you how to use Programmable Voice to respond to incoming phone calls in your Java web application. Code on your server can decide what a caller hears when they dial the number you've bought or ported to Twilio. The code snippets in this guide are written using the Java servlet API, and should be runnable in any servlet container, such as Tomcat. Let's get started!

Webアプリケーションで着信通話に応答する

着信通話

Twilio makes answering a phone call as easy as responding to an HTTP request. When a Twilio phone number receives an incoming call, Twilio will send an HTTP request to your web application, asking for instructions on how to handle the call. Your web application will respond with an XML document containing TwiML. That TwiML contains the instruction that Twilio will follow to say some arbitrary text, play an MP3 file, make a recording and much more.

通話への応答を開始するには、以下のことが必要になります:

  • Buy and configure a Twilio-powered phone number capable of making and receiving phone calls, and point it at your web application
  • TwiMLを使用して、着信通話の処理方法をTwilioに指示するWebアプリケーションコードを記述します
  • 通話の着信があったときにTwilioがWebhookのリクエストを送信できるよう、Webアプリケーションをインターネットからアクセス可能にしておきます

電話番号の購入と設定

Twilioコンソール上で、世界中の電話番号を検索、購入できます。 音声通話の可能な番号は、地球上のおよそどこからでも通話を発信および着信することができます。

音声通話の利用可能な電話番号の検索

Once you purchase a number, you'll need to configure that number to send a request to your web application. This callback mechanism is called a webhook. This can be done in the number's configuration page.

着信電話番号のURLの設定

Webhookとは何か

Webhooks are user-defined HTTP callbacks. They are usually triggered by some event, such as receiving an SMS message or an incoming phone call. When that event occurs, Twilio makes an HTTP request (usually a POST or a GET) to the URL configured for the webhook.

To handle a webhook, you only need to build a small web application that can accept the HTTP requests. Almost all server-side programming languages offer some framework for you to do this. Examples across languages include ASP.NET MVC for C#, Servlets and Spark for Java, Express for Node.js, Django and Flask for Python, and Rails and Sinatra for Ruby. PHP has its own web app framework built in, although frameworks like Laravel, Symfony and Yii are also popular.

どのフレームワークや言語を選んだにせよ、WebhookはあらゆるTwilioアプリケーションに対して同様に機能します。 これらはTwilioに与えられたURIに対するリクエストを生成します。 アプリケーションはデータベースの読み書き、他のAPIとの統合、あるいは何らかの演算など、必要とされるあらゆる処理を実行し、それからTwilioに実行してほしい指示をTwiMLのレスポンスとしてTwilioに応答します。

TwiMLとは何か

TwiML is the Twilio Markup Language, which is just to say that it's an XML document with special tags defined by Twilio to help you build your SMS and voice applications. TwiML is easier shown than explained. Here's some TwiML you might use to respond to an incoming phone call:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Say>Thanks for calling!</Say>
</Response>

And here's some TwiML you might use to respond to an incoming SMS message:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Message>We got your message, thank you!</Message>
</Response>

すべてのTwiMLドキュメントはルートの<Response>要素と、その中に含まれるひとつ以上の動詞からなります。 動詞とは、電話をかけてきた人にあいさつする<Say>や、受信メッセージへの返信としてSMSを送信する<Message>といったような、Twilioにおこなってほしいアクションのことです。 TwiMLで実行できることがあまねく網羅されたリファレンスについては、TwiML APIリファレンスを参照してください。

Javaコードを書いて、着信通話を処理する

ここからがいよいよお楽しみ - Twilioから受信されてきたHTTPリクエストを処理するコードの記述です! コードは、TwiMLを返すことで電話番号への通話の着信時の何が起こるかを指示します。

        
        
        
        
        あなたのサーバー上で、TwiMLを使ってTwilioからのWebhookリクエストに応答できます。 TwiMLは、着信通話の処理方法をTwilioに指示するXMLタグのセットです。

        TwiMLで着信通話に応答する

        あなたのサーバー上で、TwiMLを使ってTwilioからのWebhookリクエストに応答できます。 TwiMLは、着信通話の処理方法をTwilioに指示するXMLタグのセットです。
              
              
              
              
              結局のところ、Twilioヘルパー(ライブラリー)はこのようなXML文字列の生成を手助けしているに過ぎません。

              サーバーのコードで生成されるTwiML

              結局のところ、Twilioヘルパー(ライブラリー)はこのようなXML文字列の生成を手助けしているに過ぎません。

              このコードサンプル上のWebhookが機能するためには、インターネット経由でTwilioがWebアプリケーションにHTTPリクエストを送信できなければなりません。 当然、アプリケーションはTwilioから到達できるURLまたはIPアドレスを持っている必要があるということです。

              In production you probably have a public URL, but you probably don't during development. That's where ngrok comes in. ngrok gives you a public URL for a local port on your development machine, which you can use to configure your Twilio webhooks as described above.

              いったんngrokがインストールされたなら、コマンドラインからWebアプリケーションが実行されているいかなるポートへもトンネルを作成することができます。 たとえば、この例ではポート3000番をリスニングするWebアプリケーション用のURLを作成します。

              ngrok http 3000
              

              After executing that command, you will see that ngrok has given your application a public URL that you can use in your webhook configuration in the Twilio console.

              ngrokの画面

              Grab your ngrok public URL and head back to the phone number you configured earlier. Now let's switch it from using a TwiML Bin to use your new ngrok URL. Don't forget to append the URL path to your actual TwiML logic! ("http://<your ngrok subdomain>.ngrok.io/voice" for example)

              着信電話番号のURLの設定

              着信通話に対してJava応答を作成する

              上記の例では、あらかじめ定義済みのTwiMLを着信通話の応答として返しています。 こうしたWebhookを使用することの真価は、(Twilioがアプリケーションに送信する情報に基づいて)電話の相手に提示される内容を変更するための動的なコードを実行することにあります。 ユーザーへの応答方法を決定する前にデータベースにクエリーを発行したり、CRMシステムから顧客の電話番号を参照したり、またあらゆる種類のカスタムロジックを実行できます。

                    
                    
                    
                    
                    Twilioはアプリケーションに対して、通話と発信者についての情報を持つPOSTパラメーターを送信します。 この情報は動的なTwiML応答の作成に使用できます。

                    着信通話に対して動的な応答を作成する

                    Twilioはアプリケーションに対して、通話と発信者についての情報を持つPOSTパラメーターを送信します。 この情報は動的なTwiML応答の作成に使用できます。

                    Protect your webhooks

                    Twilio supports HTTP Basic and Digest Authentication. Authentication allows you to password protect your TwiML URLs on your web server so that only you and Twilio can access them.

                    Learn more about HTTP authentication here, and check out our full guide to securing your Servlet application by validating incoming Twilio requests.

                    関連トピック

                    素晴らしい成果です! たった数行のコードで、Javaサーブレットのアプリケーションで通話への応答を開始しました。 Javaによる音声通話アプリケーションの構築についてより深く学びたい場合は、いくつかのチュートリアルにも興味を持たれるでしょう。 チュートリアルでは、下記のような実践的なTwilio活用事例を実装する完全なサンプルについて見ていきます:

                    楽しいプログラミングを!

                    Kevin Whinnery Ricky Robinett David Prothero Rob Spectre Kat King Samuel Mendes Andrew Baker
                    Rate this page:

                    ヘルプが必要ですか?

                    We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.