先日紹介した「Twilio を BlueMix で使う」の中で説明した実際に電話をかけるウェブアプリケーション、文章による説明文だけだと再現はちょっと難しいと思ったので、ダウンロード可能なサンプルを作ってみました:
Twilio サンプルアプリの Java プロジェクト

ダウンロードファイル名は twilio.zip です。


使うための前提として、事前に以下の準備が必要です:
(1) BlueMix のアカウント取得(参照)
(2) Twilio のアカウント取得(参照)
(3) Twilio の電話番号、SID、認証トークンの取得(参照)
(4) BlueMix 上に Twilio サービスを起動して、(3) で取得した SID と 認証トークンを設定しておく(参照)
(5) BlueMix 上で Liberty for JAVA アプリケーションサーバーを起動し、(4) で起動した Twilio サービスに紐付けておく(参照)

(6) cf が使える状態になっている(参照)


今から BlueMix を使いはじめる場合は準備項目が多くて大変かもしれませんが、ある程度 BlueMix を使いこなすためには cf ツールの環境設定は必須になると思うのでがんばってください。

ここまでできていれば、あとは上記のサンプルを少し改良するだけで試せるようになります。以下その説明です。

まずダウンロードした twilio.zip を cf が使えるシステム上で解凍・展開します。仮に展開先フォルダ名が c:\tmp だったとすると c:\tmp\twilio\ というサブフォルダ上にプロジェクトが展開されます。以下この前提で説明を続けます。

テキストエディタで c:\tmp\twilio\index.jsp を開いてください。なお、この中で (5) で紐付けられた Twilio サーバーから SID や認証トークンを取り出す作業もしているため、これらのプライバシー情報を Java のコーディング内に記述する必要はありません。

最後の方に以下のような3行がある箇所を見つけてください。この3行がカスタマイズ対象箇所です(余程のことがない限り、他は変更しないでください):
  :
params.put( "To", "+8180XXXXYYYY" ); //. 通話先電話番号
params.put( "From", "+8150AAAABBBB" ); //. 発信元電話番号
params.put( "Url", messageurl ); //. TwiMLのURL
  :

この中の一番上の通話先電話番号というコメントが書かれた箇所に電話をかける先の番号を指定します。注意点として日本の国際番号である +81 から始めて、局番の最初の0を取り除いて指定することです。例えば日本国内で使う時の電話番号が 080-1234-5678 だった場合、ここでは +818012345678 と指定します。自分が出ることのできる電話番号(携帯電話とか)に書き換えてください。

2番目は発信元電話番号を指定します。これは上記 (3) で取得した Twilio 電話番号のことで、おそらく 050 で始まる番号になっているはずです。これも同様のルールで、仮に 050-9876-5432 だったとしたら +815098765432 と書き換えてください。

3番目の TwiML の URL ですが、これは展開したプロジェクト内の同じフォルダにある message.xml というファイルを指すようにしています。ちなみに message.xml の内容はこんな感じにしています:
<?xml version="1.0" encoding="UTF-8"?>
<Response>
  <Say language="ja-JP" voice="alice">屋根より高いこいのぼり</Say>
  <Pause length="1"/>
  <Say language="ja-JP" voice="alice">大きいまごいはお父さん</Say>
  <Pause length="1"/>
  <Say language="ja-JP" voice="alice">小さいひごいは子供たち</Say>
  <Pause length="1"/>
  <Say language="ja-JP" voice="alice">面白そうに泳いでる</Say>
</Response>
これが Twilio に喋らせる内容になります。日本語の文章になっているのが、なんとなくわかりますかね。<Say>~</Say> 内がしゃべる内容です。経験上、簡単な漢字なら問題なさそうです。<Pause> 節は何もしない時間で1秒ずつ間をあけています。もちろんこのまま変更なしでも使えますし、異なる内容を喋らせたい場合は 必要に応じて message.xml の内容を書き換えてください。もし別の(外部の) TwiML を使いたい場合は messageurl の代わりにその URL をここで直接指定しても構いません。

上記例で書き換えた後の index.jsp はこんな感じになります:
  :
params.put( "To", "+818012345678" ); //. 通話先電話番号
params.put( "From", "+815098765432" ); //. 発信元電話番号
params.put( "Url", messageurl ); //. TwiML(message.xml)のURL
  :

この状態にカスタマイズできたら cf ツールを使って BlueMix のアプリケーションサーバーにデプロイします。コマンドラインプロンプトで c:\tmp\twilio(index.jsp があるフォルダ)に移り、以下のコマンドを実行します(Liberty for JAVA のアプリケーション名が APP1 である場合の例です。各自の環境に合わせてください):
> cf push APP1

これでカスタマイズした Twilio サンプルアプリがデプロイされました。デプロイ後はブラウザでこの Liberty for JAVA のアプリケーションサーバーにアクセスすると index.jsp が実行され、指定された番号に電話がかかってきて、着信すると message.xml に指定された内容を女性の声で話してくれます(Twilio アカウントがトライアルの場合は、最初にその旨のメッセージも流れます)。

一応、message.xml を書き換えるだけで話す内容をカスタマイズできるし、電話番号を変更するだけで各自の環境用のサーバーを作れるようにしたつもりです。 これが BlueMix と Twilio の連携サービス構築の参考になれば。


※このサンプルを用意する過程で知った余談ですが、童謡「こいのぼり」の著作権はちょっと複雑な背景があるんですね・・・
Wikipedia - こいのぼり