12/08/2018, 15:57

Sử dụng gửi SMS bằng Nexmo

Tổng quan Ngày này, việc sử dụng điện thoại di động đã trở nên phổ biến, chính vì vậy nhiều các ứng dụng nay đã sử dụng số điện thoại như một cách thức xác thực tài khoản. Thậm chí việc xác thực bằng số điện thoại có phần tốt hơn việc sử dụng email (do việc tạo email miễn phí giờ dễ dàng hơn ...

Tổng quan

Ngày này, việc sử dụng điện thoại di động đã trở nên phổ biến, chính vì vậy nhiều các ứng dụng nay đã sử dụng số điện thoại như một cách thức xác thực tài khoản. Thậm chí việc xác thực bằng số điện thoại có phần tốt hơn việc sử dụng email (do việc tạo email miễn phí giờ dễ dàng hơn nhiều). Chính vì lẽ đó, không ít ứng dụng hay yêu cầu từ khách hàng muốn sử dụng các thức gửi tin nhắn, gọi điện vào số di động ngày càng trở nên cần thiết. Trong rất nhiều các bên cung cấp giải pháp gửi SMS, hôm nay tôi xin giới thiệu với các bạn gửi SMS từ bên thứ ba là Nexmo. Với cá nhân tôi, tôi thấy Nexmo khá lâu đời, khi lần đầu tiếp xúc với Nexmo từ năm 2013 và cho đến nay, thực sự Nexmo ngày càng phát triển đem lại nhiều tính năng hơn nữa cho người dùng cũng như nhà phát triển ứng dụng. 1 điều nữa đó là Nexmo ngày càng đưa ra những thư viện phù hợp các các ngôn ngữ lập trình phổ biến. Các bạn có thể vào đây ta có thể thấy Nexmo giờ hỗ trợ cho cả Ruby, Php, Python, Dotnet, Node và Java. Trong bài này tôi xin đi cùng với các bạn tìm hiểu về sử dụng Nexmo với Php.

Cài đặt

Để có thể lấy được phiên bản mới nhất, các bạn có thể hoàn toàn lấy được thư viện của Nexmo dành cho Php thông qua github. Để tải thư viện về ta có thể dùng 2 cách như là:

composer require nexmo/client:@beta
git clone git@github.com:Nexmo/nexmo-php.git

Trong bài này tôi sử dụng cách thứ nhất. Nếu như các bạn đã quen với việc sử dụng composer để tải thư viện thì các bạn đều biết, để sử dụng thư viện thì ta chỉ việc thêm 1 dòng sau để load các thư viện:

require_once "vendor/autoload.php";

Sau khi cài đặt thư viện ta cần đăng ký 1 tài khoản miễn phí trên Nexmo . Sau các bước cài đặt thì ta sẽ được cung cấp key và 1 đoạn mã bảo mật secret. Chắc ai hay dùng facebook thì không lạ gi việc cung cấp 2 đoạn mã này. Lưu ý: Khi dùng với win và sử dụng xampp (Tôi chưa thử trên ubuntu hay hệ điều hành khác) thì khi chạy có thể sẽ gặp lỗi SSL certificate problem: self signed certificate in certificate chain để khắc phục lỗi này thì ta có thể vào https://curl.haxx.se/ca/cacert.pem để down file xác thực sau đó vào php.ini tìm đến dòng curl.cainfo và thay bằng đường dẫn của file cacert.pem mà vừa down về là sẽ chạy tốt.

Gửi tin nhắn đầu tiên

Để gửi bắt đầu làm việc với Nextmo, ta luôn cần khai báo Client của Nexmo như sau

$nexmoClient = new NexmoClient(new NexmoClientCredentialsBasic('key', 'secret'));

Để gửi tin nhắn thì ta sử dụng lệnh như sau:

//Send sms
$message = $nexmoClient->message()->send([
     'to' => '+84982***29',
     'from' => '+8490***85',
     'text' => 'Gui thu sms tu nextmo, Framgia Vietnam'
 ]);

Sau khi chạy thử thì sau gần 10s thì chúng ta nhận được tin nhắn với nội dung như sau: Gui thu sms tu nextmo, Framgia Vietnam(FREE SMS DEMO, TEST MESSAGE) Ở đây là đang sử dụng số điện thoại demo vậy nên sẽ có đoạn text đằng sau. Để thêm các số điện thoại khác nữa ta có thể vào phần test_number. Khi sử dụng gửi SMS, thì phần From tôi thấy không phải từ số mà tôi khai báo. Có thể do demo nên không được lấy số mà mình đã setup.

Verification

Đây là 1 chức năng khá mới của Nexmo (về phía người viết bài). Việc xác thực bằng sms giờ khá là phổ biến, và bình thường ta cũng có thể thiết lập cách xác thực theo ý của mình, nhưng giờ đây Nexmo hỗ trợ cho ta chức năng này và các sư dụng khá dễ dàng. Đầu tiên ta cần phải tạo 1 xác thực bằng đoạn lệnh sau:

 $verification = $nexmoClient->verify()->start([
     'number' => '+849***5',
     'brand'  => 'My App',
 ]);

Sau khi chạy đoạn lệnh này, ta sẽ nhận được 1 tin nhắn gửi đến 1 đoạn code gồm 4 chữ số, và quan trọng hơn hết là ta sẽ có 1 ID mà Nexmo gửi lại. Việc lấy ID này vô cùng quan trọng vì nó ảnh hưởng đến các bước sau. Vậy để lấy ID này ta chỉ cần gọi như sau:

$nextmoId = $verification->getRequestId();

Khi sử dụng demo, tôi thấy rằng, sau khi gửi SMS xong, nếu như chúng ta không có 1 bước kiểm tra xác thực, thì Nextmo sẽ thực hiện cuộc gọi vào điện thoại và đọc lại mã số (Nội dung là tiếng anh) 2 lần và mỗi lần cách nhau tầm 5 phút. Vậy sau khi có ID và có code thì chúng ta có thể làm gì?

  1. Hủy phương thức xác thực.
  2. Xác nhận đoạn code gửi đến. Để hủy phương thức xác thực ta sử dụng đoạn sau:
$verification = new NexmoVerifyVerification($nextmoId);
$nexmoClient->verify()->cancel($verification); //Return empty

Để xác thực đoạn code mà nhận được ta dùng như sau

$nexmoClient->verify()->check($nextmoId, 'code nhan duoc qua sms');

Kết luận

Qua đây ta có thể thấy việc sử dụng phương thức gửi tin nhắn giờ khá dễ dàng, Nextmo cung cấp cho ta thư viện dùng tốt cũng như cho phép sử dụng thử khá là dễ dàng cho người phát triển phần mêm. Về chi phí có thể thấy khá là cao cho việc mất 1.344,15 (vnđ) cho 1 tin nhắn gửi đi hay 2.560,19 (vnđ) cho 1 lần gọi thì cũng cần xem xét. nhưng bản thân tôi cảm thấy tốc độ xử lý của nó khá là nhanh. Ngoài việc gửi SMS thì còn có hỗ trợ cả việc thiết lập gọi điện thoại xác thực, và chắc sẽ có cả phần ngôn ngữ nữa. Cám ơn các bạn đã đọc bài. Bản quyền thuộc về Framgia Việt Nam.

0