Bài 23: SMS gateway – Phần 2

Các nhà cung cấp thường chia dịch vụ SMS thành 2 loại, được đặt tên là

  1. SMS gateway: hoạt động thụ động dựa vào tin nhắn đầu vào của khách hàng. Khách hàng gởi tin nhắn kèm theo từ khoá, hệ thống tìm trong CSDL nội dung tương ứng để gởi lại tin nhắn trả lời.
  2. SMS hosting: hoạt động dựa vào nhu cầu của người thuê bao dịch vụ, chủ động cung cấp thông tin đến khách hàng.

Người thuê bao dịch vụ làm việc với dịch vụ SMS thông qua các hàm API, quản lý được thông tin tài khoản, cung cấp nội dung và lên kế hoạch gởi tin nhắn… Một nhóm hàm API thường dùng là HTTP API, bao gồm các qui ước giao tiếp với SMS server bằng phương thức POST hay GET. Khi nhận được yêu cầu GET hay POST, ứng dụng web sẽ gọi đến các chức năng của gammu hoặc trực tiếp trên dòng lệnh hoặc gián tiếp qua các tập tin lệnh Bash hay Python…

1. Các hàm gammu thường dùng

  • gammu-detect: tìm GSM modem trong hệ thống và trả lại thông tin về modem, tương tự như
[gammu]
 device = /dev/ttyUSB0
 name = Lenovo_P629 Lenovo_P629
 connection = at
  • gammu getallsms folder_id: liệt kê các SMS có trong thư mục, id thường là 1=INBOX (SIM), 3=INBOX (phone), 2=OUTBOX (SIM), 4=OUTBOX (phone), 0 thay cho INBOX trên sim hay trong phone (dùng gammu getsmsfolders để biết id các thư mục). Mỗi SMS được liệt kê dưới dạng
Location nnn, folder "Inbox", phone memory, Inbox folder

 SMS message
 SMSC number : "+84900482"
 Sent : Thu 28 Aug 2014 16:41:52 +0700
 Coding : Default GSM alphabet (no compression)
 Remote number : "090"
 Status : Read

Nội dung tin nhắn

Kết thúc danh sách là số xxx mẫu tin trong yyy tin nhắn

xxx SMS parts in yyy SMS sequences
  • gammu getsms folder_id start [stop]: đọc tin nhắn từ folder_id, bắt đầu từ vị trí start đến stop
  • gammu geteachsms -pbk: Tương tự như getallsms, nhưng các mẫu tin bị cắt được nối lại.
  • gammu deletesms folder_id start [stop]: Xóa tin từ folder_id, bắt đầu từ vị trí start đến stop

2. Các chương trình gammu-smsd thường dùng

  • gammu-smsd-inject là chương trình xếp hàng tin trong Gammu SMS Daemon, các tin này sẽ được daemon gởi đi về sau bằng cách dùng GSM modem.
gammu-smsd-inject [OPTION]... MESSAGETYPE RECIPIENT [MESSAGE_PARAMETER]...
gammu-smsd-inject TEXT 123456 -text "All your base are belong to us"
gammu-smsd-inject TEXT 123456 -len 400 -text "All your base are belong to us"
gammu-smsd-inject EMS 123456 -text "All your base are belong to us"
  • gammu-smsd-monitor là chương trình theo dõi tình trạng của Gammu SMS Daemon. Nó định kỳ hiển thị thông tin về điện thoại và số tin được xử lý.
gammu-smsd-monitor [OPTION]...

3. Thí dụ về HTTP API

Mỗi người dùng dịch vụ SMS được cấp một tài khoản (username, password) với định mức số SMS được gởi đi trong tháng, có thể gởi từng tin nhắn với nội dung khác nhau hay gời cho một nhóm người với cùng một nội dung tin nhắn. Người dùng có thể qua HTTP API để

  • Thay đổi mật khẩu tài khoản
  • Tạo phone book
  • Gởi tin nhắn
  • Đếm số tin nhắn đã gởi trong tháng

Để có thể quản lý dịch vụ, gammu được cài đặt chế độ dùng MySQL. Tất cả tin nhắn đi của người sử dụng dịch vụ đều lưu lại trong CSDL. Tin nhắn đến có dạng số_điện_thoại_dịch_vụ_SMS ID_người dùng cũng được ghi lại. Người sử dụng dùng cú pháp sau đây gởi đến trang web dịch vụ http://dịch_vụ_sms/gateway.php

  • Thay đổi mật khẩu tài khoản: POST / usr=username, pwd=password, newpwd=newpassword
curl -u "username:password" -d "newpwd=newpassword" http://dịch_vụ_sms/gateway.php
  • Tạo phone book: POST / usr=username, pwd=password, grp=phonebook, grpusr=”phone1, phone2…”
    Tạo mới phone book hay thêm số phone vào phone book dùng cùng cú pháp.
curl -u "username:password" -d "grp=phonebook&grpusr=phone1, phone2" http://dịch_vụ_sms/gateway.php
  • Gởi tin nhắn: POST / usr=username, pwd=password, grp=phonebook, sms=”tin nhắn”
    Nếu grp là số thì tin nhắn gởi đến số điện thoại đó
curl -u "username:password" -d "grp=phonebook&sms=tin nhan" http://dịch_vụ_sms/gateway.php
  • Đếm số tin nhắn đã gởi trong tháng: POST / usr=username, pwd=password, cnt=1

4. Thí dụ về xử lý tin nhắn theo từ khóa

Giả sử người dùng gởi tin bầu chọn cho các ứng viên có mã từ 1 đến 10. Các ứng viên sẽ được xếp hạng theo số tin bầu chọn từ cao đến thấp. Cú pháp tin nhắn SMS là VOTE mã_ứng_viên

gammu được cài đặt ở chế độ sử dụng MySQL. Tin nhắn gởi đến được lưu lại theo số điện thoại người gởi và mã ứng viên. Khi thời hạn bầu chọn kết thúc, số tin bầu chọn sẽ được đếm theo mã ứng viên.

Leave a Comment

Filed under Software

Leave a Reply