11/08/2018, 23:55

Hướng dẫn dùng gem send sms cho rails + gem donenv để load các biến môi trường

Hiện nay với sự phát triển của thiết bị điện tử thì điện thoại gần như vật mà ai ai cũng có và nó không còn chỉ dùng để nghe gọi truyền thống mà còn được áp dụng trong rất nhiều mảng trong đó có 1 mảng khá được quan tâm đó là dùng để tương tác giữa người dùng với các nhà cung cấp dịch vụ một cách ...

Hiện nay với sự phát triển của thiết bị điện tử thì điện thoại gần như vật mà ai ai cũng có và nó không còn chỉ dùng để nghe gọi truyền thống mà còn được áp dụng trong rất nhiều mảng trong đó có 1 mảng khá được quan tâm đó là dùng để tương tác giữa người dùng với các nhà cung cấp dịch vụ một cách nhanh chóng và an toàn. Dễ thấy nhất là các dịch vụ thông qua tin nhắn như tin nhắn xác thực, tin nhắn thông báo trạng dịch vụ sử dụng mà người dùng nhận đc từ các nhà cung cấp(Gmail, yahoo, dịch vụ mobie banking ...). Do đó ta có thể thấy việc sử dụng sms cho các dịch vụ hiện tại và tương lai đang rất phát triển và tiềm năng áp dụng cao.

Với các công ty lớn thì hệ thống của họ thường xây dụng kết nối trực tiếp tới nhà cung cấp dịch vụ điện thoại để gửi tin nhắn dịch vụ.Tuy nhiên với các công ty vừa và nhỏ thì điều này khá là khó vì thời gian cũng như là kinh phí, may sao đã có rất nhiều các công ty bên thứ 3 xây dựng hệ thống hỗ trợ giải quyết việc này với chi phí rẻ thời gian áp dụng nhanh và tương thích với nhiều hệ thống web. Trong đó rails cũng không ngoại lệ và bài viết sau sẽ giúp bạn biết được phần nào về áp dụng gem có sẵn để send sms từ hệ thống rails.

1. Gem twilio-ruby

1.1 Giới thiệu:

đây là 1 gem sử dụng khá dễ dàng, hỗ trợ nhiều nước trên thế giới, tuy nhiên để sử dụng bạn phải tạo tài khoản ở trên trang web www.twilio.com và chỉ có thể gửi sms cho số điện thoại ở mĩ và canada với tài khoản free, nếu muốn gửi sms cho các quốc gia khác bạn phải trả phí để nâng cấp tài khoản

1.2 cài đặt và sử dụng

Đầu tiên để sử dụng gem này ta phải vào trang web www.twilio.com để tạo tài khoản và lấy account id và authen tokken để sử dụng.

mhuman1.png

Sau đó giống như cài đặt các gem khác vào app rails của mình. Bạn vào file Gem thêm dòng

gem 'twilio-ruby'

Sau đó chạy lên bundle để install gem mới này

bundle

để sử gem twilio gửi sms rất đơn giản, trong controller cần xử lý việc gửi sms bạn chỉ việc khai báo giống ví dụ sau

class SendTextController < ApplicationController
  def index
  end

  def send_text_message
    number_to_send_to = params[:number_to_send_to]

    twilio_sid = "abc123"
    twilio_token = "foobar"
    twilio_phone_number = "6165555555"

    @twilio_client = Twilio::REST::Client.new twilio_sid, twilio_token

    @twilio_client.account.sms.messages.create(
      :from => "+1#{twilio_phone_number}",
      :to => number_to_send_to,
      :body => "This is an message. It gets sent to #{number_to_send_to}"
    )
  end
end

ở đây number_to_send_to là số điện thoại nhận được tin nhắn twilio_sid và twilio_sid là thông tin twilio tạo ra cho tài khoản của bạn (ảnh tài khoản trên), twilio_phone_number là số điện thoại bạn chọn dùng để gửi tin nhắn (twilio hỗ trợ cho bạn dùng nhiều số để gửi và bạn có thể chọn - các số bạn có thể dùng được lưu ở setting của tài khoản tiwilo của bạn)

Chú ý: khi sử dụng tài khoản với mật khẩu bạn không nên ghi trực tiếp trong code, nên để trong biến môi trường rồi gọi (tham khảo gem dotenv - https://github.com/bkeepers/dotenv sẽ được nói ở cuối bài) như sau:

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

test:

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

rồi gọi trong controller

Ngoài việc send sms, twilio còn hỗ trợ việc gửi mms bằng cách khai báo theo kiểu:

@client.messages.create(
  from: '+14159341234',
  to: '+16105557069',
  body: 'Hey there!',
  media_url: 'http://example.com/smileyface.jpg'
)

2. Gem SMS Fu

2.1 Giới thiệu

Đây là gem hỗ trợ việc gửi free sms thông qua việc gửi email tới 1 số nhà mạng Một số nhà mạng hỗ trợ (không hỗ trợ mạng Việt Nam             </div>
            
            <div class=

0