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 ...
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