Android x Twilio #2 Twilio クライアントアプリ用のサーバーを Ruby on Rails で作って heroku にデプロイしてみよう
はじめに
先日クイックスタートの日本語版ページが公開されました。ここを読めば基本的な使いかたはわかると思いますが、クイックスタートでは Twilio クライアントアプリ用のサーバーを PHP で作っているので、今回は Ruby on Rails で作ってみたいと思います!
今回は公式ライブラリである twilio-ruby を使って実装してみましょう。
Ruby on Rails アプリの作成
ひな形を作る
まず Ruby on Rails アプリのひな形を作成しましょう。詳しい解説はこちらを参考してください。
mkdir hello-twilio && cd hello-twilio bundle init vim Gemfile # gem 'rails' のコメントアウトを外す bundle install --path vendor/bundle --without production bundle exec rails new . --skip-bundle
これでひな形が出来ました!次に Gemfile に twilio-ruby を追加します。
Gemfile
source 'https://rubygems.org' gem 'rails', '3.2.13' gem 'twilio-ruby' gem 'jquery-rails' group :development, :test do gem 'sqlite3' end group :production do gem 'pg' gem 'therubyracer-heroku' gem 'thin' end group :assets do gem 'uglifier', '>= 1.0.3' end
編集が終わったら bundle install を忘れずに。
実装
ここまでで事前準備が終わったので、あとは実装です!今回クイックスタートで書かれている Capability Token の生成 と TwiML を返す API を作ります。
1. Capability Token を生成する API
まずは Capability Token を生成する API を作りましょう。使いかたはとっても簡単です。まずは Twilio::Util::Capability インスタンスを生成します。引数には Twilio アカウントの SID と認証トークンを渡します。 allow_client_outgoing には Twilio アプリの SID をセットし generate メソッドでアプリ用のトークンを生成します。Twilio アプリの SID の取得方法はこちらを参照してください。
token_controller.rb
# coding:utf-8 class TokenController < ApplicationController # GET "/tokens" def index # アカウントのSIDと認証トークン account_sid = 'アカウントのSID' auth_token = 'アカウントの認証トークン' # set up capability = Twilio::Util::Capability.new account_sid, auth_token # TwilioアプリのSID capability.allow_client_outgoing 'TwilioアプリのSID' # クライアント名 capability.allow_client_incoming 'android' # Capability Tokenの生成 @token = capability.generate render :text => @token end end
2. TwiML を返す API
次に TwiML を返す API を作りましょう。twili-ruby は builder をサポートしているので簡単に TwiML を生成できます。
hello_controller.rb
# coding:utf-8 class HelloController < ApplicationController # GET "/hello" def index # TwiMLを生成 response = Twilio::TwiML::Response.new do |r| r.Say 'こんにちは、クラスメソッド株式会社です。', :voice => 'woman' end # XMLで出力 render :xml => response.text end end
3. API としてアクセスできるようにする
ここまでで API の実装が終わったので、最後に routes.rb でルーティングして終わりです。それぞれ index メソッドにしているので get で呼ばれるようにします。
routes.rb
HelloTwilio::Application.routes.draw do resources :token, only: [:index] resources :hello, only: [:index] end
以下のコマンドで確認しておきましょう。
bundle exec rake routes
heroku にデプロイする
さて、作ったアプリを heroku にデプロイしてみましょう。前提条件として、利用には heroku のアカウント作成と heroku toolbelt をインストールする必要があります。 heroku へのデプロイは git push heroku master するだけなのでとっても簡単です!
heroku login # アカウント登録後のみ実行する git init heroku create hello-twilio # 任意の名前にする git push heroku master
これで完成です!ブラウザで Capability Token を生成する API を叩いてみましょう。
次に TwiML を返す API を叩いてみます。
ちゃんと返してくれますね!
まとめ
以上、簡単な内容にはなりましたが QuickStart で作っている API を Ruby on Rails に置き換えてみました。ちなみに Android 用で書いてますが iOS や Webアプリにもそのまま使えると思います。
次回以降は今回作成したアプリを拡張する形で進めていきたいと思います。