Bluemix上でGitHubのサンプルコード（Twilioを使ったブラウザフォン）を動かしてみた。

今回のブログでは、Bluemix上でGitHubのサンプルコード、Twilioを使ったブラウザフォンを動かしてみたいと思います。

Twilio Clientとは、VoIP通信を行うTwilioの機能でして、[WebRTC](https://ja.wikipedia.org/wiki/WebRTC)を基盤にしてブラウザやスマホ（iOS,Android）などのスピーカーとマイクを使って通話ができるアプリの開発ができます。
特徴としては、アプリ間だけではなく、電話回線（PSTN）と接続を行い一般電話（黒電話も）や携帯電話への発信はもちろん、今回作るウェブ電話アプリに電話をかけるとブラウザから着信も可能です。
これによって、ブラウザやスマホのアプリが普通の「電話器」のように機能することになります。

Twilioが初めての方は、下記のリンクをご覧ください。
・Twilio：http://twilio.kddi-web.com/
・Twilio Clientのドキュメント：https://jp.twilio.com/docs/api/client

<h1>■ この記事では</h1>
・Bluemixの環境設定
・TwiML Apps(Twilio Client Application)作成
・TwiML Appと電話番号（050）の連携
・サンプルコードの修正
・アプリのデプロイ&確認

<h1>■ まず、Bluemixの環境設定</h1>
下記のブログを参考にし、Bluemixにブラウザ電話アプリをデプロイしてください。
[① BluemixのGITによるソースコードの管理。](http://qiita.com/joohounsong/items/dce81860732695df6c44)
[② BluemixとGitHubの連動 - Twilioを使ったブラウザ電話アプリをBluemixにデプロイ]
(http://qiita.com/joohounsong/items/4cd9a4fc3fd597fe87e9)

<h1>■ BluemixやTwilioのアカウントが必要です。</h1>
・Bluemixアカウント（新規登録で30日間無料でご利用いただけます。）
　[Bluemixの新規登録はこちら](https://console.ng.bluemix.net/registration/)
・Twilioアカウント（新規登録で無料枠（トライアルアカウント）あり）
　[Twilioの新規登録はこちら](https://jp.twilio.com/try-twilio/kddi-web)

<h1>■ TwiML Apps作成</h1>
これから作成する「TwiML Apps」は、Twilio Clientを使ってアプリを開発する際に必要なものです。
Twilioは、TwiML AppsのSidやフレンドリーネーム（Client ID）でアプリを特定し、通信に必要な[ケイパビリティトークン](https://jp.twilio.com/docs/api/client/capability-tokens)を発行します。
このTwiML Appsは、1アカウント1000個まで作成できますが、RESTを使って動的な作成が可能ですので、アプリのユーザー数と関係なく、アプリを運営することも可能です。
詳細は、[REST API:APPLICATION](https://jp.twilio.com/docs/api/rest/applications)をご覧ください。

１。Twilioログイン → ツール → TWIAML APPS → TwiMLAppを作成する
![スクリーンショット 2015-11-27 15.01.55.png](https://qiita-image-store.s3.amazonaws.com/0/29452/4ebf9ac5-b075-91e5-26e4-8fdfaa439a65.png)

２。「フレンドリーネームと音声通話のRequest URL」設定
　※ Request URLは、下記の手順（③）にてBluemixに配置されている「TwiML」のURLを設定。
![スクリーンショット 2015-11-24 11.38.32.png](https://qiita-image-store.s3.amazonaws.com/0/29452/1d85d729-34a9-0385-1843-8bf18d8102c0.png)

３。BluemixのTwiML URL確認
　① Bluemixのダッシュボードに移動 
　② 対象アプリケーションを選択
　③ アプリケーションのURLを確認
　④ アプリケーションのhtdocsの配下にある「TC_BP_TwiML.php」が <b>TwiML</b>
　※ アプリケーションのDocumentRoot
　　ファイル → app → htdocs
![スクリーンショット 2015-11-27 15.27.12.png](https://qiita-image-store.s3.amazonaws.com/0/29452/54a9722a-070c-b2e7-8c49-5c53c1e07e5a.png)

４。TwiML AppsのRequest URLに設定するBluemixアプリのURL
上記、「3-③のURL」+ 「3-④のTwiMLファイル名」の組み合わせ。
今回（私の場合）は、http://browserphone.mybluemix.net/TC_BP_TwiML.php
（このURLを、Request URLに設定）
このURLをブラウザで実行し、下記のようにTC_BP__TwiML.phpの内容が表示されると正常
![スクリーンショット 2015-11-27 15.12.58.png](https://qiita-image-store.s3.amazonaws.com/0/29452/4e8b87e8-bd52-1cb6-f080-cb643a294d62.png)

５。TwiML App 作成完了
上記、「２。「フレンドリーネームと音声通話のRequest URL」設定」のRequest URLに「④」で取得されたURLを設定し、保存をすると下記のように今回作成した「TwiML Apps（BluePhone）」の音声通話部分のURLが変更されたことを確認できる。
![スクリーンショット 2015-11-27 15.43.55.png](https://qiita-image-store.s3.amazonaws.com/0/29452/b843cee0-1c6d-159e-501a-6c1d10a32705.png)

<h1>■ TwiML Appと電話番号の連携</h1>
TwiML Appと電話番号を連携することによって、電話番号（050）に着信があった場合、今回のブラウザフォンアプリ（ウェブ）に着信されることになります。なお、ブラウザフォンから電話をかける際の発信者番号として連携電話番号（050）が相手に表示されることになります。

１。Twilioの電話番号を確認
　メニュー：音声通話 → 電話番号 → 連携する電話番号選択（クリック）
![スクリーンショット 2015-11-27 15.57.47.png](https://qiita-image-store.s3.amazonaws.com/0/29452/52b6731d-4efb-002c-6935-b0cc119ee831.png)


２。電話番号に「TwiML App」を設定
　① 音声通話選択
　② TwiML App選択
　③ リストから先ほど作成した「TwiML App」選択
![スクリーンショット 2015-11-27 15.58.41.png](https://qiita-image-store.s3.amazonaws.com/0/29452/4c972653-e7ff-0a68-7d6e-2524dd35a2f8.png)

３。設定完了確認
「音声通話 → 電話番号」に移動すると、音声通話のURLがTwiML Appネームに変わったことが確認できます。
![スクリーンショット 2015-11-27 16.02.00.png](https://qiita-image-store.s3.amazonaws.com/0/29452/53516f11-812b-d34a-58a4-09948a9c995e.png)

これで、Twilio側の設定（準備）は完了です。

<h1>■ サンプルソースコードの修正</h1>
まず、修正前のブラウザフォンアプリをウェブで確認してみると、下記のようにエラーが発生していることをわかる。
※ Twilio Clientは、アプリケーションが実行される際にTwilioと通信が可能なケイパビリティトークンを生成するようになっているけど、アカウント情報なが不明なので、トークンの発行が出来なかったためエラーを出します。

このケイパビリティトークンの生成必要な情報は、こちら。
　・Account Sid
　・Auth Token
　・TwiML App Sid（Twilio Application Sid）
![スクリーンショット 2015-11-27 16.05.59.png](https://qiita-image-store.s3.amazonaws.com/0/29452/5878e55c-2cda-1f43-9211-d3f7ef155bc2.png)

修正のため、まず、[IBM Bluemix DevOps Service](https://hub.jazz.net/)に接続をし、プロジェクトを選択。
![スクリーンショット 2015-11-27 16.18.14.png](https://qiita-image-store.s3.amazonaws.com/0/29452/3129de5d-91a8-750a-e8e5-534951881819.png)

次の画面で、「EDIT CODE」を選択。
今回修正するファイルは、「index.php、TC_BP_TwiML.php」の二つです。
![スクリーンショット 2015-11-27 16.22.11.png](https://qiita-image-store.s3.amazonaws.com/0/29452/41afcf8c-4044-d6be-d56d-1834aa2facfc.png)

・index.phpを設定
　○ TwilioのAccount情報設定（AccountSID、AuthToken）
　 ▶︎ メニュー：Twilioのダッシュボード → 右上のアカウント名クリック → アカウント

　 下記画面の「空色」の枠の値をそれぞれ設定。
　 ▶︎ YourTwilioAccountSID：AccountSID
　  ▶︎ YourTwilioAuthToken：AuthToken

　○ TwiML App情報設定（AppSID、ClientName）
　 ▶︎ メニュー：Twilioダッシュボード → ツール → TWIML APPS → 該当するTwiML App

　下記画面の「黄色」の枠の値をそれぞれ設定。
　 ▶︎ YourTwilioAppSID：Sid
　 ▶︎ YourTwilioClientName：フレンドリーネーム
![スクリーンショット 2015-11-27 16.33.26.png](https://qiita-image-store.s3.amazonaws.com/0/29452/c9a74e1e-8234-d3b1-956a-9b495444a353.png)

設定後はこんな感じ。
![スクリーンショット 2015-11-27 16.44.43.png](https://qiita-image-store.s3.amazonaws.com/0/29452/d85624d8-5146-f633-837f-f50a1c14a3ef.png)

・TC_BP_TwiML.phpを設定
　○ Twilioの電話番号設定（発信者番号）
　※ 先ほど、TwiML Appと連携させたTwilioの電話番号を設定
　 ▶︎ メニュー：Twilioのダッシュボード → 音声通話 → 電話番号

　下記画面の「空色」の枠の値をそれぞれ設定。
　 ▶︎ YourTwilioTelNumber：電話番号（+81 50-xxxx-yyyy）
　　※ 電話番号の設定形式：+8150xxxxyyyy

　○ TwilioのClientネーム設定（フレンドリーネーム）
　 ▶︎ メニュー：Twilioのダッシュボード → ツール → TWIML APPS → 該当するTwiML App

　下記画面の「黄色」の枠の値をそれぞれ設定。
　 ▶︎ YourTwilioClientName：フレンドリーネーム
![スクリーンショット 2015-11-27 16.54.31.png](https://qiita-image-store.s3.amazonaws.com/0/29452/b1ce44d9-82cb-f7c7-0a09-553ac8eaa575.png)

設定後はこんな感じ。
![スクリーンショット 2015-11-27 17.03.51.png](https://qiita-image-store.s3.amazonaws.com/0/29452/1b8531e1-2166-df26-028b-5b2d30de49e7.png)

<h1>■ アプリのデプロイ&確認</h1>
ここまでで、全ての準備ができましたので、デプロイして結果を確認してみたいと思います。
① 修正されたファイルを保存
② BUILD&DEPLOY クリック
![スクリーンショット 2015-11-27 17.26.36.png](https://qiita-image-store.s3.amazonaws.com/0/29452/a701cc99-59c8-1b18-a4a6-941753f23a7f.png)

○ ビルド&デプロイ
① ステージ実行
② デプロイが正常に終わったら、リンクをクリックしてアプリを確認
![スクリーンショット 2015-11-27 17.29.20.png](https://qiita-image-store.s3.amazonaws.com/0/29452/06f121ab-bb36-ec67-59aa-1fb528755d9e.png)

○ 確認
先のエラーがなくなり、「架電待機」に変わっていることが確認できます。
![スクリーンショット 2015-11-27 17.31.22.png](https://qiita-image-store.s3.amazonaws.com/0/29452/17ec738b-bcb2-1731-8b63-01faeee96258.png)

※ アプリケーションでエラーが表示されたら再デプロイをしてから試してみてください。
![スクリーンショット 2015-11-27 17.33.40.png](https://qiita-image-store.s3.amazonaws.com/0/29452/ff3219e8-1feb-314c-48fa-23485902dec7.png)

<h1>■ 最後に</h1>
このように、GitHubのプロジェクトをBluemix上で運営することができます。
今回のブログでは、ブラウザでソースコードを修正しましたが、Bluemix上に生成されたGITレポジトリは「GIT URL」が設定されていますので、普通のGITコマンドでも開発を行うことができるのと、アプリケーションレポジトリとして必要な機能が揃っていますので、みなさんも試してみてください。

<b>それでは、アプリを試してみましょう！</b>
ブラウザフォンアプリを起動して、みなさんのTwilio電話番号（050）に電話をかけてみてください。
そのあと、ブラウザに電話が着信されることが確認できるのと、今回のサンプルの入力欄に携帯電話などの電話番号を入れて、「発信」をクリッスクすると入力された電話番号に発信を行います。
※ 注意：Twilioトライアルアカウントを使っている場合、新規アカウント取得の際に認証を行った電話番号にしか発信ができませんので、注意してください。

<b>Bluemix Qiitaページはこちら。</b>
Bluemixを使う際のTipsはもちろん、便利な機能や最新記事などがBluemix ユーザーの皆さんから投稿されていますので、ご興味ある方は、下記のリンクからフォローへ！
http://qiita.com/tags/Bluemix