In this guide, we'll show you how to use Programmable SMS to respond to incoming SMS messages in your Java web application. When someone sends a text message to your Twilio number, Twillio can call a webhook you create in Java from which you can send a reply back using TwiML. All this talk of webhooks and TwiML got you feeling anxious? Fear not. This guide will help you master the basics in no time.

Twilio can send your web application an HTTP request when certain events happen, such as an incoming text message to one of your Twilio phone numbers. These requests are called webhooks, or status callbacks. For more, check out our guide to Getting Started with Twilio Webhooks. Find other webhook pages, such as a security guide and an FAQ in the Webhooks section of the docs.

The code snippets in this guide are written using Java SDK 8 or higher, and make use of the following library:




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 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"?>
    <Say>Thanks for calling!</Say>

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

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

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



        When your Twilio phone number receives an incoming message, Twilio will send an HTTP request to your server. This code shows how your server can reply with a text message using the Twilio helper library.


        When your Twilio phone number receives an incoming message, Twilio will send an HTTP request to your server. This code shows how your server can reply with a text message using the Twilio helper library.

        ヘルパーライブラリーの使用時は、ご自身での生のXMLの生成について気にかける必要はありません。 もちろん、そちらの方法がお好みなら、それは一向に差し支えありません。

        コードの準備ができたら、今度はそれをTwilioに渡すためのURLが必要になります。 Twilioはインターネット上の公開サーバーにのみアクセス可能です。 つまり、開発したアプリケーションをWeb上に公開する必要があり、それには(数ある)クラウドホスティング業者を利用するか、お手持ちのサーバーにご自身でホストするか、あるいはngrokのようなサービスを使ってローカルの開発用マシンをインターネット上に露出させるということも可能です。 弊社では一般的に後者の方法はプロダクション環境へのデプロイではなく、開発やテスト目的のみにおすすめします。



        1. jp.twilio.comにログインし、コンソール上の電話番号ページに移動します
        2. 変更したい電話番号をクリックします
        3. メッセージセクションの "A MESSAGE COMES IN" オプションを見つけます
        4. "Webhook" を選択し、使用したいURLをペーストします:

        SMS Webhook

        HTTP POSTまたはHTTP GETの選択が、開発中のWebアプリケーションが想定するメソッドに合致していルカ確認してください。 通常は、デフォルト値であるPOSTで問題ないでしょう。

        予備のWebhook URL

        コンソールには、「メインのハンドラーが失敗した (PRIMARY HANDLER FAILS) 」ときのためのWebhook URLの入力欄もあることに気づかれるでしょう。 Twilioは、メインのハンドラーがエラーを返したり、15秒以内に応答しなかった場合にこのURLを呼び出します。 詳細については、利用可能性と信頼性ガイドを参照してください。

        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.

        メディア付きの応答を返す (MMSメッセージ - 日本未対応)

        To send an MMS simply add an image URL. If necessary, restart your server, then text your Twilio number again. You should receive a text message that includes an image. You can even send multiple images by adding more Media elements to your response. Check out the API Reference for more details.






                    これで、Twilio番号に "hi" または "bye" というSMSを送れば、それに応じた返信が得られるはずです。

                    Add-on でメッセージを拡張する

                    メッセージを送る電話番号についての情報がもっと必要ですか? メッセージそのものの持つ感情や他のデータのために、分析が必要ですか?  Add-onマーケットプレイスで利用できるAdd-onなら、こうしたこと、またはそれ以上のことも実現できます。


                    Add-on ダイアグラム


                    When you're ready to dig deeper into handling incoming messages, check out our guide on how to Create an SMS Conversation and our Automated Survey tutorial.

                    Jarod Reyes David Prothero Kat King Samuel Mendes Elmer Thomas Jeffrey Linwood Stephanie Marchante


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



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

                          Sending your feedback...
                          🎉 Thank you for your feedback!
                          Something went wrong. Please try again.

                          Thanks for your feedback!

                          Refer us and get $10 in 3 simple steps!


                          Get link

                          Get a free personal referral link here


                          Give $10

                          Your user signs up and upgrade using link


                          Get $10

                          1,250 free SMSes
                          OR 1,000 free voice mins
                          OR 12,000 chats
                          OR more