Azure 上の Java アプリケーションで Twilio を使用して通話する方法How to Make a Phone Call Using Twilio in a Java Application on Azure

次の例では、Azure でホストされる Java Web ページから Twilio を使用して通話する方法を示しています。The following example shows you how you can use Twilio to make a call from a web page hosted in Azure. 次のスクリーンショットに示すように、作成されたアプリケーションは通話に関する値の入力をユーザーに求めます。The resulting application will prompt the user for phone call values, as shown in the following screenshot.

Twilio および Java を使用した Azure 通話フォーム

このトピックでコードを使用するためには次の操作を行う必要があります。You'll need to do the following to use the code in this topic:

  1. Twilio アカウントと認証トークンを取得します。Acquire a Twilio account and authentication token. Twilio の使用を開始するには、https://www.twilio.com/pricing で価格を評価します。To get started with Twilio, evaluate pricing at https://www.twilio.com/pricing. https://www.twilio.com/try-twilio でサインアップできます。You can sign up at https://www.twilio.com/try-twilio. Twilio から提供される API については、https://www.twilio.com/api を参照してください。For information about the API provided by Twilio, see https://www.twilio.com/api.
  2. Twilio JAR を入手します。Obtain the Twilio JAR. 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). このトピックでのコードは、ビルド済み TwilioJava-3.3.8-with-dependencies JAR を使用して記述されています。The code in this topic was written using the pre-built TwilioJava-3.3.8-with-dependencies JAR.
  3. JAR を Java ビルド パスに追加します。Add the JAR to your Java build path.
  4. この Java アプリケーションの作成に Eclipse を使用している場合は、Eclipse のデプロイ アセンブリ機能を使用して、アプリケーション デプロイ ファイル (WAR) に Twilio JAR をインクルードできます。If you are using Eclipse to create this Java application, include the Twilio JAR in your application deployment file (WAR) using Eclipse's deployment assembly feature. この Java アプリケーションの作成に Eclipse を使用していない場合、Twilio JAR が Java アプリケーションと同じ Azure ロールにインクルードされており、アプリケーションのクラス パスに追加されていることを確認してください。If you are not using Eclipse to create this Java application, ensure the Twilio JAR is included within the same Azure role as your Java application, and added to the class path of your application.
  5. 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 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. この CA 証明書を JDK の cacert ストアに追加する方法については、証明書を Java CA 証明書ストアに追加する方法に関するページを参照してください。For information about adding this CA certificate to your JDK's cacert store, see Adding a Certificate to the Java CA Certificate Store.

さらに、Azure Toolkit for Eclipse を使用した Hello World アプリケーションの作成に関するページにある情報、または Eclipse を使用していない場合は Azure で Java アプリケーションをホストするための他の手法に精通することを強くお勧めします。Additionally, familiarity with the information at Creating a Hello World Application Using the Azure Toolkit for Eclipse, or with other techniques for hosting Java applications in Azure if you are not using Eclipse, is highly recommended.

通話用の Web フォームの作成Create a web form for making a call

次のコードは、通話するためのユーザー データを取得する Web フォームの作成方法を示しています。The following code shows how to create a web form to retrieve user data for making a call. この例では、TwilioCloud という名前の新しい動的 Web プロジェクトを作成し、callform.jsp を JSP ファイルとして追加しました。For purposes of this example, a new dynamic web project, named TwilioCloud, was created, and callform.jsp was added as a JSP file.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Automated call form</title>
</head>
<body>
 <p>Fill in all fields and click <b>Make this call</b>.</p>
 <br/>
  <form action="makecall.jsp" method="post">
   <table>
     <tr>
       <td>To:</td>
       <td><input type="text" size=50 name="callTo" value="" />
       </td>
     </tr>
     <tr>
       <td>From:</td>
       <td><input type="text" size=50 name="callFrom" value="" />
       </td>
     </tr>
     <tr>
       <td>Call message:</td>
       <td><input type="text" size=400 name="callText" value="Hello. This is the call text. Good bye." />
       </td>
     </tr>
     <tr>
       <td colspan=2><input type="submit" value="Make this call" />
       </td>
     </tr>
   </table>
 </form>
 <br/>
</body>
</html>

通話用のコードの作成Create the code to make the call

次のコードは、callform.jsp によって表示されるフォームへの入力が完了すると呼び出され、通話メッセージを作成して通話を生成します。The following code, which is called when the user completes the form displayed by callform.jsp, creates the call message and generates the call. この例では、makecall.jsp という名前の JSP ファイルを TwilioCloud プロジェクトに追加しましたFor purposes of this example, the JSP file is named makecall.jsp and was added to the TwilioCloud project. (次のコードは、accountSID および authToken に割り当てられたプレースホルダー値の代わりに Twilio アカウントと認証トークンを使用します)。(Use your Twilio account and authentication token instead of the placeholder values assigned to accountSID and authToken in the code below.)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
import="java.util.*"
import="com.twilio.*"
import="com.twilio.sdk.*"
import="com.twilio.sdk.resource.factory.*"
import="com.twilio.sdk.resource.instance.*"
pageEncoding="ISO-8859-1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Call processing happens here</title>
</head>
<body>
    <b>This is my make call page.</b><p/>
 <%
try 
{
     // Use your account SID and authentication token instead
     // of the placeholders shown here.
     String accountSID = "your_twilio_account";
     String authToken = "your_twilio_authentication_token";

     // Instantiate an instance of the Twilio client.     
     TwilioRestClient client;
     client = new TwilioRestClient(accountSID, authToken);

     // Retrieve the account, used later to retrieve the CallFactory.
     Account account = client.getAccount();

     // Display the client endpoint. 
     out.println("<p>Using Twilio endpoint " + client.getEndpoint() + ".</p>");

     // Display the API version.
     String APIVERSION = TwilioRestClient.DEFAULT_VERSION;
     out.println("<p>Twilio client API version is " + APIVERSION + ".</p>");

     // Retrieve the values entered by the user.
     String callTo = request.getParameter("callTo");  
     // The Outgoing Caller ID, used for the From parameter,
     // must have previously been verified with Twilio.
     String callFrom = request.getParameter("callFrom");
     String userText = request.getParameter("callText");

     // Replace spaces in the user's text with '%20', 
     // to make the text suitable for a URL.
     userText = userText.replace(" ", "%20");

     // Create a URL using the Twilio message and the user-entered text.
     String Url="https://twimlets.com/message";
     Url = Url + "?Message%5B0%5D=" + userText;

     // Display the message URL.
     out.println("<p>");
     out.println("The URL is " + Url);
     out.println("</p>");

     // Place the call From, To and URL values into a hash map. 
     HashMap<String, String> params = new HashMap<String, String>();
     params.put("From", callFrom);
     params.put("To", callTo);
     params.put("Url", Url);

     CallFactory callFactory = account.getCallFactory();
     Call call = callFactory.create(params);
     out.println("<p>Call status: " + call.getStatus()  + "</p>"); 
} 
catch (TwilioRestException e) 
{
    out.println("<p>TwilioRestException encountered: " + e.getMessage() + "</p>");
    out.println("<p>StackTrace: " + e.getStackTrace().toString() + "</p>");
}
catch (Exception e) 
{
    out.println("<p>Exception encountered: " + e.getMessage() + "");
    out.println("<p>StackTrace: " + e.getStackTrace().toString() + "</p>");
}
%>
</body>
</html>

通話を行うだけでなく、makecall.jsp は Twilio エンドポイント、API バージョン、通話状態を表示します。In addition to making the call, makecall.jsp displays the Twilio endpoint, API version, and the call status. たとえば、次のスクリーンショットのようになります。An example is the following screenshot:

Twilio および Java を使用した Azure 通話応答

アプリケーションの実行Run the application

アプリケーションを実行するための高レベルの手順を次に示します。この手順の詳細は、Azure Toolkit for Eclipse を使用した Hello World アプリケーションの作成に関するページで見つけることができます。Following are the high-level steps to run your application; details for these steps can be found at Creating a Hello World Application Using the Azure Toolkit for Eclipse.

  1. TwilioCloud WAR を Azure の approot フォルダーにエクスポートします。Export your TwilioCloud WAR to the Azure approot folder.
  2. TwilioCloud WAR を解凍するように startup.cmd を変更します。Modify startup.cmd to unzip your TwilioCloud WAR.
  3. アプリケーションをコンピューティング エミュレーター用にコンパイルします。Compile your application for the compute emulator.
  4. コンピューティング エミュレーターでデプロイを開始します。Start your deployment in the compute emulator.
  5. ブラウザーを開いて、http://localhost:8080/TwilioCloud/callform.jsp を実行します。Open a browser, and run http://localhost:8080/TwilioCloud/callform.jsp.
  6. フォームで値を入力し、 [電話をかける] をクリックして、makecall.jsp で結果を確認します。Enter values in the form, click Make this call, and then see the results in makecall.jsp.

Azure にデプロイする準備ができたら、クラウドへのデプロイ用に再コンパイルし、Azure にデプロイして、ブラウザーで http://your_hosted_name.cloudapp.net/TwilioCloud/callform.jsp を実行します (your_hosted_name は実際の値に置き換えてください)。When you are ready to deploy to Azure, recompile for deployment to the cloud, deploy to Azure, and run http://your_hosted_name.cloudapp.net/TwilioCloud/callform.jsp in the browser (substitute your value for your_hosted_name).

次の手順Next steps

Azure 上の Java で Twilio を使用した基本機能を示すために、このコードが用意されました。This code was provided to show you basic functionality using Twilio in Java on Azure. 運用環境で Azure に展開する前に、エラー処理やその他の機能をさらに追加することができます。Before deploying to Azure in production, you may want to add more error handling or other features. 例:For example:

Twilio の詳細については、https://www.twilio.com/docs を参照してください。For additional information about Twilio, see https://www.twilio.com/docs.

関連項目See Also