使用 Twilio 寶石

假設你有 Twilio 帳戶和 API 憑據 ,請將以下內容新增到你的 Gemfile:

gem 'twilio-ruby'

或者你可以 gem install twilio-ruby

要讓 Twilio 將傳入的 SMS 傳送到應用程式中的特定路由,你需要為電話號碼配置訊息傳遞 URL。完成後,你需要在 config/routes.rb 中設定一條路線:

TwilioSample::Application.routes.draw do
  resources :messages
end

這將建立一個設定 RESTful 路由(GET /messages 列出訊息,POST /messages 建立訊息等),它們將向 MessagesController 傳送請求。通過定義這些路由,你可以將 Twilio 儀表板中的訊息傳遞 URL 設定為 https://your.site/messages 作為 HTTP POST Webhook。

你的控制器處理訊息:

class MessagesController < ApplicationController

  def create
    # First, check to see if this message really came from Twilio
    uri, signature = [request.protocol, request.host_with_port, request.path].join, request.env['HTTP_X_TWILIO_SIGNATURE']
    validator = Twilio::Util::RequestValidator.new(ENV['TWILIO_AUTH_TOKEN'])
    
    if validator.validate(uri, request.request_parameters, signature)
      # The params hash has the data from the Twilio payload
      Rails.logger.info "I just got this message from #{params[:From]}: #{params[:Body]}"

      # Send back a response that Twilio can handle
      render xml: { Sms: "Thanks, I got your message" }.to_xml(root: 'Response')

    else
      # This request didn't come from Twilio, so return a "Forbidden" response
      head(403)
    end

  end

end