リモートで働くプログラマーの検索結果

リモ太がググったことの覚書

Twilioを使ってSMSを受信する

twilioでSMSを受信してrailsアプリでwebhookを受け取りたい

twilioとは

Twilioは音声通話、メッセージング(SMS/チャット)、ビデオなどの 様々なコミュニケーション手段をアプリケーションやビジネスへ容易に組み込むことのできるクラウドAPIサービスです。

cloudapi.kddi-web.com

雑に手順を書くと

  1. twilioアカウント作成
  2. 電話番号を取得
  3. railsアプリでwebhookを受け取るcontroller/actionを作成
  4. SMS受信時にpostするwebhook URLを設定

1,2は割愛

3. railsアプリでwebhookを受け取るcontroller/actionを作成

routes.rb

resources :twilio_webhooks, only: %i(create)

twilio_webhooks_contoller.rb

class TwilioWebhooksController < ApplicationController
  def create
    p params
  end
end

基本的にpostを受け付ける口さえ作ればいい 試しにngrokを利用して外からのアクセスを受け取れるようにし TwilioにURLを設定し、hello world とSMSを送信してみる

 Parameters: {"ToCountry"=>"US", "ToState"=>"MN", "SmsMessageSid"=>"SMXXXXXXXXXXXXXXXXXXXXXXX", "NumMedia"=>"0", "ToCity"=>"MINNEAPOLIS", "FromZip"=>"", "SmsSid"=>"SMXXXXXXXXXXXXXXXXXXXXXXX", "FromState"=>"", "SmsStatus"=>"received", "FromCity"=>"", "Body"=>"hello world", "FromCountry"=>"JP", "To"=>"+10000000000", "ToZip"=>"55401", "NumSegments"=>"1", "MessageSid"=>"SMXXXXXXXXXXXXXXXXXXXXXXX", "AccountSid"=>"ACXXXXXXXXXXXXXXXXXXXXXXX", "From"=>"+810000000000", "ApiVersion"=>"2010-04-01"}

電話番号等はマスクしているがこんなリクエストが飛んでくるのでこれらをいい感じに処理する

これだけと関係ないところから不正なリクエストが来ても判断がつかないため

github.com

公式が用意してくてるgemで認証の仕組みも用意されているのでそれを設定する

Gemfile

gem 'twilio-ruby'
bundle install

application.rbに以下を追記

config.middleware.use Rack::TwilioWebhookAuthentication, ENV['TWILIO_AUTH_TOKEN'], '/twilio'

ENV['TWILIO_AUTH_TOKEN']にはTwilioからAUTH TOKENを取得し設定する

これでwebhookで飛んでくるリクエストのバリデーションを行ってくれる