paranitips

Never stop learning! がモットーのゆるふわエンジニアブログ

twilio-rubyでSMSを送信する

f:id:paranishian:20160324232321p:plain

SMS送信にtwilioを使ってみたのでメモがてらざっとまとめていきます。

はじめに

twilioからgemが提供されてるのでインストールします。

gem 'twilio-ruby', '~> 4.2.1'

twilioでSMS送信する場合は、SMS対応している国の電話番号を購入する必要があります。
まあ無難に+1(Canada)の番号を購入すればOKです。

さっそく使ってみる

sidやtokenは同じものを使っていくのでまずはconfigに設定ファイルを準備します。

# config/initializers/twilio.rb
require 'twilio-ruby'
Twilio.configure do |config|
    config.account_sid = TWILIO_ACCOUNT_SID
    config.auth_token = TWILIO_AUTH_TOKEN
end

SMSを送信する

準備ができたのでさっそくSMS送信。

client = Twilio::REST::Client.new
client.messages.create(
    from: "+14159341234",
    to: "+18004567890",
    body: "hello world!"
)

送信したSMS一覧を取得する

listリソースを使って一覧を取得します。

client = Twilio::REST::Client.new
@list = client.messages.list

ページングを実装したい場合は、next_pageメソッドを使うか、after_sidパラメータを利用すればOKです。

# next_pageを使う
@list = @list.next_page

# 取得した最後のsidをafter_sidに渡す。こっちのほうが使い勝手が良い。
@list = client.messages.list(after_sid: @list.last.sid)

送信元、送信先でフィルタリングすることもできます。

# toで絞込
@list = client.messages.list({to: "+14159341234"})

# fromで絞込
@list = client.messages.list({from: "+18004567890"})

コールバックを指定する

メッセージのステータスが変更されるたびに叩かれるコールバックURLを指定できます。

client = Twilio::REST::Client.new
client.messages.create(
    from: "+14159341234",
    to: "+18004567890",
    body: "hello world!",
    status_callback: "http://your.domain.com/call-me-back-here"
)

さいごに

Twilioでエラー頻発しておかしいなと思ったらTwilio Statusをチェックしましょう。

以上です。

参考