LoginSignup
11
13

More than 5 years have passed since last update.

20分で転送電話を実装

Last updated at Posted at 2015-12-06

何がしたいのか

固定電話の番号が必要
そこへの着信を携帯電話で受けたい
受けた電話番号をDBに保存したい

概要

  • Twilioで050-XXXX-XXXXの番号を取得
  • RailsでTwilioAPIを利用して050にかかってきた電話を任意の携帯090-xxxx-xxxxに転送
  • かかってきた電話番号をDBに保存
  • 上記をデプロイ(今回はheroku)

手順1 デプロイ先(heroku)を先に用意しておく

https://www.heroku.com
スクリーンショット 2015-12-06 22.46.17.png

手順2 railsアプリケーションを用意

rails new callforward
cd callforward
git init
heroku login
heroku git:remote -a callforward1(herokuアプリの名前)

手順3 Twilioにアカウントを作って電話番号を取得

必要項目を入力して次に進むと以下のような画面が出るのでSMS/電話を受けれる電話番号を入力
(例)+81 9012345678
最初のゼロは抜いて下さい

認証コードが届くので入力

ログインしたら電話番号タブに行き画面中央のGet a number now をクリック
スクリーンショット 2015-12-06 22.38.04.png

最初のTwilio電話番号を取得をクリックしChoose this numberを更にクリック
スクリーンショット 2015-12-06 22.40.13.png

無事電話番号が取得できました
スクリーンショット 2015-12-06 22.41.34.png

電話番号の管理を行うので取得した電話番号をクリック
スクリーンショット 2015-12-06 22.58.36.png

音声通話のRequest URLにデプロイ先/コントローラ名/アクション名を設定
(例)http://callforward1.herokuapp.com/calls/forward
スクリーンショット 2015-12-06 23.09.25.png

手順4 Rails

rails g controller calls forward
rails g model call phone_number

アクションを実装
callerIdは取得した電話番号
+819012345678は転送先(この場合は090-1234-5678に転送される)

calls_controller.rb
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

ルートを以下のように編集

routes.rb
post 'calls/forward'

CSRF対策を無効にする

application_controller.rb
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で確認して下さい
最後まで読んで頂いてありがとうございました。

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13