Java で音声および SMS 機能に Twilio を使用する方法How to Use Twilio for Voice and SMS Capabilities in Java

このガイドでは、Azure の Twilio API サービスを使用して一般的なプログラミング タスクを実行する方法を紹介します。This guide demonstrates how to perform common programming tasks with the Twilio API service on Azure. 電話の発信と Short Message Service (SMS) メッセージの送信の各シナリオについて説明します。The scenarios covered include making a phone call and sending a Short Message Service (SMS) message. Twilio の詳細、およびアプリケーションで音声と SMS を使用する方法については、「 次のステップ 」を参照してください。For more information on Twilio and using voice and SMS in your applications, see the Next Steps section.

Twilio とはWhat is Twilio?

Twilio は、既存の Web 言語およびスキルを使用して音声および SMS アプリケーションの作成を可能にするテレフォニー Web サービス API です。Twilio is a telephony web-service API that lets you use your existing web languages and skills to build voice and SMS applications. Twilio は、サードパーティ製のサービスです (Azure の機能および Microsoft 製品ではありません)。Twilio is a third-party service (not an Azure feature and not a Microsoft product).

Twilio Voice を使用すると、アプリケーションで音声通話の発着信処理を行うことができます。Twilio Voice allows your applications to make and receive phone calls. Twilio SMS を使用すると、アプリケーションで SMS メッセージの送受信を行うことができます。Twilio SMS allows your applications to make and receive SMS messages. Twilio Client を使用すると、アプリケーションに (モバイル接続を含む) 既存のインターネット接続を使用した音声通信を組み込むことができます。Twilio Client allows your applications to enable voice communication using existing Internet connections, including mobile connections.

Twilio の料金および特別プランTwilio Pricing and Special Offers

Twilio の料金に関する情報は、Twilio の料金に関するページで入手できます。Information about Twilio pricing is available at Twilio Pricing. Azure のお客様には、特別プランとして 1,000 件のテキストまたは 1,000 分の着信通話の無料クレジットが提供されます。Azure customers receive a special offer: a free credit of 1000 texts or 1000 inbound minutes. このプランにサインアップするか、または詳細情報を取得するには、https://ahoy.twilio.com/azure を参照してください。To sign up for this offer or get more information, please visit https://ahoy.twilio.com/azure.

概念Concepts

Twilio API は、アプリケーションに音声および SMS 機能を提供する REST ベースの API です。The Twilio API is a RESTful API that provides voice and SMS functionality for applications. クライアント ライブラリは複数の言語で使用できます。一覧については、Twilio API ライブラリに関するページを参照してください。Client libraries are available in multiple languages; for a list, see Twilio API Libraries.

Twilio API の主要な側面として、Twilio 動詞と Twilio Markup Language (TwiML) が挙げられます。Key aspects of the Twilio API are Twilio verbs and Twilio Markup Language (TwiML).

Twilio 動詞Twilio Verbs

API では、Twilio 動詞を使用します。たとえば、 <Say> 動詞は、メッセージを音声で返すことを Twilio に指示します。The API makes use of Twilio verbs; for example, the <Say> verb instructs Twilio to audibly deliver a message on a call.

Twilio 動詞の一覧を次に示します。The following is a list of Twilio verbs.

  • <Dial> : 呼び出し元を別の電話に接続します。<Dial>: Connects the caller to another phone.
  • <Gather> : 電話キーパッドで入力された数字を収集します。<Gather>: Collects numeric digits entered on the telephone keypad.
  • <Hangup> : 通話を終了します。<Hangup>: Ends a call.
  • <Play> : オーディオ ファイルを再生します。<Play>: Plays an audio file.
  • <Queue> :呼び出し元のキューに追加します。<Queue>: Add the to a queue of callers.
  • <Pause> : 指定された秒数だけ静かに待ちます。<Pause>: Waits silently for a specified number of seconds.
  • <Record> : 呼び出し元の声を録音し、声が録音されたファイルの URL を返します。<Record>: Records the caller's voice and returns a URL of a file that contains the recording.
  • <Redirect> : 通話または SMS の制御を別の URL に存在する TwiML に転送します。<Redirect>: Transfers control of a call or SMS to the TwiML at a different URL.
  • <Reject> :Twilio 番号への受信通話を、課金することなく拒否します。<Reject>: Rejects an incoming call to your Twilio number without billing you.
  • <Say> :テキストを通話で流れる音声に変換します。<Say>: Converts text to speech that is made on a call.
  • <Sms> : SMS メッセージを送信します。<Sms>: Sends an SMS message.

TwiMLTwiML

TwiML は、Twilio 動詞に基づいた XML ベースの命令のセットで、通話または SMS をどのように処理するかを Twilio に通知します。TwiML is a set of XML-based instructions based on the Twilio verbs that inform Twilio of how to process a call or SMS.

たとえば、次の TwiML は、テキスト Hello World!As an example, the following TwiML would convert the text Hello World! 音声に変換します。to speech.

    <?xml version="1.0" encoding="UTF-8" ?>
    <Response>
       <Say>Hello World!</Say>
    </Response>

アプリケーションで Twilio API を呼び出す場合は、API パラメーターの 1 つである URL によって TwiML 応答が返されます。When your application calls the Twilio API, one of the API parameters is the URL that returns the TwiML response. 開発用には、Twilio から提供される URL を使用して、アプリケーションで使用する TwiML 応答を提供することができます。For development purposes, you can use Twilio-provided URLs to provide the TwiML responses used by your applications. また、独自に URL をホストして、TwiML 応答を生成することもできます。別のオプションとして、TwiMLResponse オブジェクトを使用することもできます。You could also host your own URLs to produce the TwiML responses, and another option is to use the TwiMLResponse object.

Twilio 動詞、その属性、および TwiML の詳細については、TwiML に関するページを参照してください。For more information about Twilio verbs, their attributes, and TwiML, see TwiML. Twilio API の詳細については、Twilio API に関するページを参照してください。For additional information about the Twilio API, see Twilio API.

Twilio アカウントを作成するCreate a Twilio Account

Twilio アカウントを取得する準備ができたら、Twilio のサインアップ ページでサインアップします。When you're ready to get a Twilio account, sign up at Try Twilio. 無料アカウントで始め、後でアカウントをアップグレードすることができます。You can start with a free account, and upgrade your account later.

Twilio アカウントにサインアップすると、アカウント ID と認証トークンが発行されます。When you sign up for a Twilio account, you'll receive an account ID and an authentication token. Twilio API を呼び出すには、この両方が必要になります。Both will be needed to make Twilio API calls. 自分のアカウントが不正にアクセスされないように、認証トークンを安全に保管してください。To prevent unauthorized access to your account, keep your authentication token secure. アカウント ID と認証トークンは、Twilio Console の、それぞれ [ACCOUNT SID][AUTH TOKEN] というラベルが付いたフィールドで表示できます。Your account ID and authentication token are viewable at the Twilio Console, in the fields labeled ACCOUNT SID and AUTH TOKEN, respectively.

Java アプリケーションの作成Create a Java Application

  1. Twilio JAR を入手し、Java のビルド パスと WAR デプロイ アセンブリに追加します。Obtain the Twilio JAR and add it to your Java build path and your WAR deployment assembly. https://github.com/twilio/twilio-java では、GitHub ソースをダウンロードして独自の JAR を作成するか、またはビルド済み JAR (依存関係あり、またはなし) をダウンロードできます。At https://github.com/twilio/twilio-java, you can download the GitHub sources and create your own JAR, or download a pre-built JAR (with or without dependencies).
  2. JDK の cacerts キーストアに Equifax Secure Certificate Authority 証明書と MD5 フィンガープリント 67:CB:9D:C0:13:24:8A:82:9B:B2:17:1E:D1:1B:EC:D4 が格納されていることを確認します (シリアル番号は 35:DE:F4:CF、SHA1 フィンガープリントは D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A)。Ensure your JDK's cacerts keystore contains the Equifax Secure Certificate Authority certificate with MD5 fingerprint 67:CB:9D:C0:13:24:8A:82:9B:B2:17:1E:D1:1B:EC:D4 (the serial number is 35:DE:F4:CF and the SHA1 fingerprint is D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A). これは https://api.twilio.com サービスの証明機関 (CA) 証明書であり、Twilio API を使用するときに呼び出されます。This is the certificate authority (CA) certificate for the https://api.twilio.com service, which is called when you use Twilio APIs. JDK の cacerts キーストアに正しい CA 証明書が含まれていることを確認する方法については、証明書を Java CA 証明書ストアに追加する方法に関するページを参照してください。For information about ensuring your JDK's cacerts keystore contains the correct CA certificate, see Adding a Certificate to the Java CA Certificate Store.

Java 用の Twilio クライアント ライブラリを使用するための詳細な手順については、「Azure 上の Java アプリケーションで Twilio を使用して通話する方法」を参照してください。Detailed instructions for using the Twilio client library for Java are available at How to Make a Phone Call Using Twilio in a Java Application on Azure.

Twilio ライブラリを使用するアプリケーションの構成Configure Your Application to Use Twilio Libraries

コードのソース ファイルの先頭に、アプリケーションで使用する Twilio のパッケージまたはクラスの import ステートメントを追加できます。Within your code, you can add import statements at the top of your source files for the Twilio packages or classes you want to use in your application.

Java ソース ファイルの場合:For Java source files:

    import com.twilio.*;
    import com.twilio.rest.api.*;
    import com.twilio.type.*;
    import com.twilio.twiml.*;

Java Server Page (JSP) ソース ファイルの場合:For Java Server Page (JSP) source files:

    import="com.twilio.*"
    import="com.twilio.rest.api.*"
    import="com.twilio.type.*"
    import="com.twilio.twiml.*"

使用する Twilio のパッケージまたはクラスによって import ステートメントは異なる場合があります。Depending on which Twilio packages or classes you want to use, your import statements may be different.

方法:発信通話するHow to: Make an outgoing call

次のコードでは、 Call クラスを使用して発信通話を行う方法を示しています。The following shows how to make an outgoing call using the Call class. このコードは、Twilio から提供されるサイトも使用して、Twilio Markup Language (TwiML) 応答を返します。This code also uses a Twilio-provided site to return the Twilio Markup Language (TwiML) response. コードを実行する前に、from および to の電話番号の値を置き換えて、Twilio アカウントの from の電話番号を確認します。Substitute your values for the from and to phone numbers, and ensure that you verify the from phone number for your Twilio account prior to running the code.

    // Use your account SID and authentication token instead
    // of the placeholders shown here.
    String accountSID = "your_twilio_account_SID";
    String authToken = "your_twilio_authentication_token";

    // Initialize the Twilio client.
    Twilio.init(accountSID, authToken);

    // Use the Twilio-provided site for the TwiML response.
    URI uri = new URI("https://twimlets.com/message" +
            "?Message%5B0%5D=Hello%20World%21");

    // Declare To and From numbers
    PhoneNumber to = new PhoneNumber("NNNNNNNNNN");
    PhoneNumber from = new PhoneNumber("NNNNNNNNNN");

    // Create a Call creator passing From, To and URL values
    // then make the call by executing the create() method
    Call.creator(to, from, uri).create();

Call.creator メソッドに渡されるパラメーターの詳細については、https://www.twilio.com/docs/api/rest/making-calls を参照してください。For more information about the parameters passed in to the Call.creator method, see https://www.twilio.com/docs/api/rest/making-calls.

既に説明したように、このコードは Twilio から提供されるサイトを使用して、TwiML 応答を返します。As mentioned, this code uses a Twilio-provided site to return the TwiML response. 代わりに独自のサイトを使用して TwiML 応答を返すことができます。詳細については、「方法: 独自の Web サイトから TwiML 応答を返す」を参照してください。You could instead use your own site to provide the TwiML response; for more information, see How to Provide TwiML Responses in a Java Application on Azure.

方法:SMS メッセージを送信するHow to: Send an SMS message

次のコードは、Message クラスを使用して SMS メッセージを送信する方法を示しています。The following shows how to send an SMS message using the Message class. 試用アカウントで SMS メッセージを送信できるように、from の番号として 4155992671 が Twilio から提供されます。The from number, 4155992671, is provided by Twilio for trial accounts to send SMS messages. コードを実行する前に、Twilio アカウントの to の番号を確認する必要があります。The to number must be verified for your Twilio account prior to running the code.

    // Use your account SID and authentication token instead
    // of the placeholders shown here.
    String accountSID = "your_twilio_account_SID";
    String authToken = "your_twilio_authentication_token";

    // Initialize the Twilio client.
    Twilio.init(accountSID, authToken);

    // Declare To and From numbers and the Body of the SMS message
    PhoneNumber to = new PhoneNumber("+14159352345"); // Replace with a valid phone number for your account.
    PhoneNumber from = new PhoneNumber("+14158141829"); // Replace with a valid phone number for your account.
    String body = "Where's Wallace?";

    // Create a Message creator passing From, To and Body values
    // then send the SMS message by calling the create() method
    Message sms = Message.creator(to, from, body).create();

Message.creator メソッドに渡されるパラメーターの詳細については、https://www.twilio.com/docs/api/rest/sending-sms を参照してください。For more information about the parameters passed in to the Message.creator method, see https://www.twilio.com/docs/api/rest/sending-sms.

方法:独自の Web サイトから TwiML 応答を返すHow to: Provide TwiML Responses from your own Website

アプリケーションで Twilio API の呼び出しをインスタンス化する場合 (たとえば、CallCreator.create メソッドを使用した場合)、Twilio は TwiML 応答を返すことが想定されている URL にユーザーの要求を送信します。When your application initiates a call to the Twilio API, for example via the CallCreator.create method, Twilio will send your request to a URL that is expected to return a TwiML response. 上の例では、Twilio から提供される URL https://twimlets.com/message を使用しています。The example above uses the Twilio-provided URL https://twimlets.com/message. (TwiML は Web サービスで使用するように設計されており、ブラウザーで表示できます。(While TwiML is designed for use by Web services, you can view the TwiML in your browser. たとえば、https://twimlets.com/message をクリックすると、空の < Response> 要素が表示されます。別の例として、https://twimlets.com/message?Message%5B0%5D=Hello%20World%21 をクリックすると、 < Say> 要素を含む < Response> 要素が表示されます。)For example, click https://twimlets.com/message to see an empty <Response> element; as another example, click https://twimlets.com/message?Message%5B0%5D=Hello%20World%21 to see a <Response> element that contains a <Say> element.)

Twilio から提供される URL を使用する代わりに、HTTP 応答を返す独自の URL サイトを作成できます。Instead of relying on the Twilio-provided URL, you can create your own URL site that returns HTTP responses. HTTP 応答を返すサイトは任意の言語で作成できます。このトピックでは、JSP ページで URL をホストするとします。You can create the site in any language that returns HTTP responses; this topic assumes you'll be hosting the URL in a JSP page.

次の JSP ページでは、通話時の TwiML 応答で Hello World!The following JSP page results in a TwiML response that says Hello World! というテキストが読み上げられます。on the call.

    <%@ page contentType="text/xml" %>
    <Response>
        <Say>Hello World!</Say>
    </Response>

次の JSP ページでは、複数の言葉と間合いのポーズを含む TwiML 応答が返され、Twilio API バージョンと Azure ロール名に関する情報が読み上げられます。The following JSP page results in a TwiML response that says some text, has several pauses, and says information about the Twilio API version and the Azure role name.

    <%@ page contentType="text/xml" %>
    <Response>
        <Say>Hello from Azure!</Say>
        <Pause></Pause>
        <Say>The Twilio API version is <%= request.getParameter("ApiVersion") %>.</Say>
        <Say>The Azure role name is <%= System.getenv("RoleName") %>.</Say>
        <Pause></Pause>
        <Say>Good bye.</Say>
    </Response>

ApiVersion パラメーターは、SMS 要求ではなく Twilio 音声要求に使用できます。The ApiVersion parameter is available in Twilio voice requests (not SMS requests). Twilio の音声と SMS の要求で使用可能な要求パラメーターを表示するには、https://www.twilio.com/docs/api/twiml/twilio_requesthttps://www.twilio.com/docs/api/twiml/sms/twilio_request をそれぞれ参照してください。To see the available request parameters for Twilio voice and SMS requests, see https://www.twilio.com/docs/api/twiml/twilio_request and https://www.twilio.com/docs/api/twiml/sms/twilio_request, respectively. RoleName 環境変数は Azure デプロイの一部として使用できますThe RoleName environment variable is available as part of an Azure deployment. (カスタム環境変数を追加して System.getenv から選択できるようにする場合は、その他のロール構成設定に関するページにある環境変数のセクションを参照してください。)(If you want to add custom environment variables so they could be picked up from System.getenv, see the environment variables section at Miscellaneous Role Configuration Settings.)

TwiML 応答を提供するように JSP ページを設定したら、Call.creator メソッドに渡される URL として JSP ページの URL を使用します。Once you have your JSP page set up to provide TwiML responses, use the URL of the JSP page as the URL passed into the Call.creator method. たとえば、Azure ホステッド サービスにデプロイされた MyTwiML という名前の Web アプリケーションがあり、JSP ページの名前が mytwiml.jsp である場合、次のコード例に示すように URL を Call.creator に渡すことができます。For example, if you have a Web application named MyTwiML deployed to an Azure hosted service, and the name of the JSP page is mytwiml.jsp, the URL can be passed to Call.creator as shown in the following:

    // Declare To and From numbers and the URL of your JSP page
    PhoneNumber to = new PhoneNumber("NNNNNNNNNN");
    PhoneNumber from = new PhoneNumber("NNNNNNNNNN");
    URI uri = new URI("http://<your_hosted_service>.cloudapp.net/MyTwiML/mytwiml.jsp");

    // Create a Call creator passing From, To and URL values
    // then make the call by executing the create() method
    Call.creator(to, from, uri).create();

TwiML で応答するための別の方法は VoiceResponse クラスを使用することです。このクラスは com.twilio.twiml パッケージに含まれています。Another option for responding with TwiML is via the VoiceResponse class, which is available in the com.twilio.twiml package.

Azure の Java での Twilio の使用の詳細については、「Azure 上の Java アプリケーションで Twilio を使用して通話する方法」を参照してください。For additional information about using Twilio in Azure with Java, see How to Make a Phone Call Using Twilio in a Java Application on Azure.

方法:その他の Twilio サービスを使用するHow to: Use Additional Twilio Services

ここに示す例以外にも、Twilio が提供する Web ベースの API を使用して、Azure アプリケーションからその他の Twilio 機能を利用することができます。In addition to the examples shown here, Twilio offers web-based APIs that you can use to leverage additional Twilio functionality from your Azure application. 詳細については、Twilio API のドキュメントを参照してください。For full details, see the Twilio API documentation.

次のステップNext Steps

これで、Twilio サービスの基本を学習できました。さらに詳細な情報が必要な場合は、次のリンク先をご覧ください。Now that you've learned the basics of the Twilio service, follow these links to learn more: