##何がしたいのか
固定電話の番号が必要
そこへの着信を携帯電話で受けたい
受けた電話番号をDBに保存したい
##概要
- Twilioで050-XXXX-XXXXの番号を取得
- RailsでTwilioAPIを利用して050にかかってきた電話を任意の携帯090-xxxx-xxxxに転送
- かかってきた電話番号をDBに保存
- 上記をデプロイ(今回はheroku)
##手順1 デプロイ先(heroku)を先に用意しておく
https://www.heroku.com
##手順2 railsアプリケーションを用意
rails new callforward
cd callforward
git init
heroku login
heroku git:remote -a callforward1(herokuアプリの名前)
##手順3 Twilioにアカウントを作って電話番号を取得
https://jp.twilio.com/try-twilio/kddi-web
必要項目を入力して次に進むと以下のような画面が出るのでSMS/電話を受けれる電話番号を入力
(例)+81 9012345678
最初のゼロは抜いて下さい
認証コードが届くので入力
ログインしたら電話番号タブに行き画面中央のGet a number now をクリック
最初のTwilio電話番号を取得をクリックしChoose this numberを更にクリック
音声通話のRequest URLにデプロイ先/コントローラ名/アクション名を設定
(例)http://callforward1.herokuapp.com/calls/forward
##手順4 Rails
rails g controller calls forward
rails g model call phone_number
アクションを実装
callerIdは取得した電話番号
+819012345678は転送先(この場合は090-1234-5678に転送される)
class CallsController < ApplicationController
def forward
render text: "<Response><Dial callerId=\"+815031717046\">+819012345678</Dial></Response>"
@call = Call.new
@call.phone_number = params[:Caller]
@call.save
end
end
ルートを以下のように編集
post 'calls/forward'
CSRF対策を無効にする
class ApplicationController < ActionController::Base
# Prevent CSRF attacks by raising an exception.
# For APIs, you may want to use :null_session instead.
# protect_from_forgery with: :exception
end
GemfileをHeroku用に
#gem 'sqlite3'
gem 'pg', '0.15.1'
##手順5 デプロイ
bundle install
bundle
addとcommit
git add .
git commit -am "first commit"
デプロイ
git push heroku master
heroku run rake db:migrate
##手順6 アップグレード
トライアルで利用できると思っていたのですが、ダメだったのでアップグレード(最低2000円を入金)させます
こちらからアップグレード出来ます
https://jp.twilio.com/user/billing/upgrade
##実験
これで準備は出来たので、登録したTwilio番号に電話をすると設定した転送先に転送されるはずです。
着信番号はDBに保存されているので確認
heroku pg:psql
select * from calls;
##最後に
電話番号を保存するの部分が無ければ、この出力されるものをxmlファイルもしくは同等の出力機能を持ったサービスを使えばわざわざherokuやらrailsやらでやらなくてもRequestURLにそれを指定すれば良いので数分で終わります。
転送する料金等はTwilioのHPで確認して下さい
最後まで読んで頂いてありがとうございました。