この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
先日クイックスタートの日本語版ページが公開されました。ここを読めば基本的な使いかたはわかると思いますが、クイックスタートでは 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アプリにもそのまま使えると思います。
次回以降は今回作成したアプリを拡張する形で進めていきたいと思います。