Posted at

RailsでTwilioを使ってみた

More than 5 years have passed since last update.


twilioとは

twilioは電話や音声メッセージ、SMSなどを使うことの出来るAPIである。日本語のドキュメントも用意されていて簡単に使えて便利なのだが無料版では使い勝手が凄く悪いので個人で利用する場合は有料アカウントをとらざる終えない場合になってしまうことが多い


ドキュメント

公式

公式チュートリアル

git ruby

電話基本

便利ツール


電話機能の使い方

まずは公式ページでアカウント登録をしてtwilow電話番号を取得する

sid, token、twilioの電話番号を取得する(取得するのは米の電話番号が良いですよ!)

その後、Gemのインストールをします


gem

gem "twilio-ruby"



ターミナル

bundle


modelの中に作成したcall.rbに記述するだけ


model

class Call

def self.voice_message
account_sid = ENV['TWILIO_SID']#中身は自分のものに変える
auth_token = ENV['TWILIO_TOKEN']#中身は自分のものに変える
client = Twilio::REST::Client.new(account_sid, auth_token)
client.account.calls.create(
from: '+8100000000', # twilio電話番号
to: '+8100000000', # 宛先の電話番号
url: 'http://huntr-static.s3.amazonaws.com/mother/call.xml', #再生される音声の内容が書かれたxmlのURL
method: 'GET', #defaltではこれがpostになっているためCall内容が反映されずエラーになるから気をつける
)
end
end

あとはこのメソッドを呼びだす


コンソール

Call.voice_message


とするだけでxmlがパースされたコンテンツの電話がかかってくる

ちなみURLの内容は


xml

<?xml version="1.0" encoding="UTF-8"?>

<Response>
<Say language="ja-jp">おかんから、メッセージがあります</Say><!--読み上げられる内容-->
<Play>http://huntr-static.s3.amazonaws.com/mother/test.mp3</Play><!--再生されるmp3-->
</Response>

のような感じで実装できる

今回私はサイバーダックを使ってファイルをアップしたが勿論なんでもいい

*ただしサイバーダックを使う場合はすべてのファイルをeveryone readのアクセス設定にしてないとエラーとなるので気をつけてください


SMS機能の使い方

gemをインストールするまでは同じ

あとはコントローラーの中身を変えるだけ


コントローラー

class SmsSender

def self.send_sms
account_sid = ENV['TWILIO_SID']
auth_token = ENV['TWILIO_TOKEN']
client = Twilio::REST::Client.new(account_sid, auth_token)
client2 = Twilio::REST::Client.new(account_sid, auth_token)

client.account.messages.create(
from: '+0000000',
to: '+00000000',
body: "ヽ(・∀・)人(・∀・)ノ文章の中身ヽ(・∀・)人(・∀・)ノ",
)


*注意 取得したtwilioの電話番号が日本のものである場合はSMSは使えないので注意しましょう。アメリカの電話番号でないとこの機能は使えません。このことに気づかず長い時間を無駄にしました( *´Д⊂ グスン…