Help us understand the problem. What is going on with this article?

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は使えないので注意しましょう。アメリカの電話番号でないとこの機能は使えません。このことに気づかず長い時間を無駄にしました( *´Д⊂ グスン…

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away