Twilioとsinatraとherouk(Twilio Ruby TwiML)
Twilio Ruby TwiML で電話をかけると、特定の言葉を返してくれるようにする
Twilioとは
- Webから電話を簡単に操作できるサービス
- APIで電話をかけたり、電話の自動応答をプログラムで制御できたりする
- SMS認証とか、コールセンターとかもできちゃう
- 公式サイト:http://twilio.kddi-web.com/
- 無償トライアルもあり、一定制限内なら機能を試せる
Twilioに電話すると、音声を返すアプリを作成する
今回は、Rubyでアプリを作ることにした。chefをはじめ、Rubyベースでつくられているプロダクトが多いが、私自身がRubyを全く触れてないので、Rubyも触りつつ、Twilioも触って一石二鳥を狙うことにした。
sinatra
- クイックスタートのドキュメントがsinatraを使っていたので、私もsinatraを使っていく
- sinatraとは、Rubyの軽量Webフレームワーク
- node.jsでいうとことのexpressみたいなものっぽい
- http://www.sinatrarb.com/
ローカルで動かす
- 'sinatra'と'twilio-ruby'のgemが必要なので、インストールする
- あとは上記のクイックスタートに記載されているコードを動かして、XMLが返ってくればOK
- XMLを生成することができる
heroukにデプロイする
- Twilioから作成したXMLが参照できないといけないので、外部サーバ(パブリックIP)で公開する必要がある
- Azureとか、AWSでもいいけど、heroukも使ってみたかったので、今回はheroukを使うことにした
- rubyといえば、heroku的なイメージもあったし
- 公式サイト:http://heroku.com/
- 参考にしたサイト
- heroku toolbeltのインストール
- herokuのクライアントツール
- https://toolbelt.heroku.com/
- ディレクトリを作成して、gitの管理下にする
herokuでは、アプリをgitでpushしてデプロイするためgitがいる
mkdir mytwilliotest cd mytwilliotest git init heroku create mytwillioTest //これがアプリ名&サブドメインになる
- アプリのソース等を作成する
Gemfile
Bundlerのためのファイル。依存しているgemを管理するためのもの
source :rubygems gem 'sinatra' gem 'twilio-ruby'
config.ru
- Rackのためのファイル。このコードで.
/app
(下のやつ)が呼ばれて、Sinatraが起動するっぽい- ただ、Rackがなんなのかは、正確に把握できてない...
rackのgemがなかったら、インストールしておく
require 'bundler' Bundler.require #sinatraファイルの指定 require './app' run Sinatra::Application
- Rackのためのファイル。このコードで.
app.rb(チュートリアルの名前を変えて、ルートディレクトリで“Hello World"返すようにした)
require 'rubygems' require 'sinatra' require 'twilio-ruby' get '/hello-monkey' do Twilio::TwiML::Response.new do |r| r.Say 'Hello Monkey' :language => 'ja-jp' end.text end get '/' do "Hello World" end
bundle install
を実行する- Gemfile.lockが生成される
- bundlerのためのgemが必要なので、なかったらインストール
最終的なディレクトリ構造はこんな感じになる
- gitをcommitして、ローカルでの起動確認
shotgunのgemがある便利らしい
git add . git commit -m 'heroku hello world!'
ローカルで確認できたら、herokuにpushする
git push heroku master
herokuでの動作確認
ルートパスで"Hello World"、
/hello-monkey
でHello MonkeyのXMLが返ってくればOKheroku open
鍵認証に失敗する場合は、鍵の再生成・再登録を行うとよい
ssh-keygen //keyの生成 heroku keys:clear //herokuのssh keyを削除する heroku login //複数ある場合は、ログイン後に鍵を聞かれるので選択
Twilioの設定
- herokuでの動作確認が終わったら、Twilioの設定を行う
確認
- 自分のTwilioの番号に電話をかけて、Hello Monkeyって言ってくれたら成功!