AndroidアプリにさまざまなWebサービスやライブラリを「ちょい足し」することで魅力的なアプリに大変身させる方法を紹介する連載。今回は、クラウド電話APIサービスTwilioを使った音声通話アプリの作り方を紹介。自作アプリにコミュニケーション機能を追加してみよう。
前回の「TwilioとRailsで作る、電話でテキスト読み上げアプリ」では、Twilioについての概要、Twilioのアカウントの登録手順、そしてAndroidアプリに組み込む初歩ということで「入力されたテキストを読み上げるアプリ」を実装しました。
今回はTwilioを使ってLINEやcomm、カカオトークなどのような通話アプリを作る方法を紹介します。
前回同様、今回解説するアプリを実装するにはTwilioサービスへのアカウント登録が必要です。アカウントの登録手順は前回の記事を参考にしてください。また、通話のテストをするために2台のAndroid端末が必要ですが、1台は実機、もう1台はエミュレータでテストします。
まず、今回実装する通話アプリのアーキテクチャを理解しましょう。
【1】ケイパビリティトークンの取得
まずクライアント(Androidアプリ)からTwiMLアプリ(Twilioに接続するアプリケーションサーバ)の認証APIにリクエストします。リクエストを受けたTwiMLアプリはTwilioの認証APIを呼び出し、指定のクライアント名をTwilioに接続できるクライアントとして登録し、「ケイパビリティトークン」を返します。クライアントは、このケイパビリティトークンを使ってTwilioに接続できます。
【2】Twilioへの接続(電話の発信)
次に、Twilioに登録してあるクライアント名を指定してTwilioに接続(発信)します。Twilio側は指定されたクライアント名を基に、TwiMLアプリのTwiML(Twilioに対する命令文)を取得しにいきます。
【3】TwiMLサーバからのTwiMLの取得
TwiMLアプリ側は「指定のクライアント名に電話を発信する」という内容のTwiMLをTwilioに返します。TwiMLに記載された命令を受け、Twilioは指定のクライアント名に該当するクライアントに対して電話を発信します。
【4】クライアントへの発信と通話
Androidアプリ側はTwilioからの着信を受け、通話を許可します。こうすることで呼び出し元のクライアントと着信先のクライアント同士で通話できるようになります。
まず始めにTwiMLアプリを登録しましょう。
TwiMLアプリの作成方法については前回説明済みですので、今回は割愛します。Voice Request URLに設定するURLは後ほど作成するので、ここでは保留にしておきます。
次に、サーバサイドのアプリケーションを実装しましょう。以下の2つのAPIを実装します。
クライアントの認証用のAPIです。クライアントをTwilioに登録し、Twilioに接続するために必要なケイパビリティトークンを生成します。
Twilioの動作を命令するTwiMLを返すAPIです。このAPIはクライアントがTwilioに接続したとき、Twilioから呼び出されます。「指定のクライアントに接続(通話)を要求する」という命令文を生成します。
サーバサイドの実装から始めましょう。まずは、アプリケーションのひな型を作成するために、以下のコマンドを順番に実行してください。{YOUR-APP-NAME}は任意のアプリ名に変更してください。
mkdir {YOUR-APP-NAME} && cd {YOUR-APP-NAME} bundle init vim Gemfile # railsのコメントアウトを外す bundle install bundle exec rails new .
次に、Gemfileに実装に必要なライブラリを追加しましょう。Heroku用のライブラリとTwilioのライブラリを追加します。
- source 'https://rubygems.org'
- ruby '2.0.0'
- gem 'rails', '4.0.0'
- gem 'twilio-ruby'
- gem 'jquery-rails'
- group :development, :test do
- gem 'sqlite3'
- end
- group :production do
- gem 'pg'
- gem 'therubyracer-heroku'
- gem 'thin'
- gem 'turbolinks'
- end
- group :assets do
- gem 'uglifier', '>= 1.0.3'
- end
編集が終わったら、もう1度「bundle install」コマンドを実行します。以上でひな型の作成が終わりました。
ひな型の作成が終わったところで、次ページからは実装に移りたいと思います。
Copyright © ITmedia, Inc. All Rights Reserved.
Smart & Social 記事ランキング