- Gammu-smsd có thể được cấu hình thuộc tính RunOnReceive ở tập tin cấu hình để thực hiện nhiệm vụ chạy một chương trình được định nghĩa sẵn sau khi nhận được tin nhắn.
- Tiến trình này được thực hiện thông qua shell, vì thế bạn cần phải tránh một số kí tự đặc biệt và bạn có thể bao gồm nhiều số tham số. Ngoài ra, các thông số với id (identifier) của tin nhắn được nhận sẽ được nối vào các dòng lệnh. Các id này phụ thuộc vào việc sử dụng các dịch vụ phụ trợ. Thông thường nó là ID của một hàng được thêm vào dịch vụ cơ sở dữ liệu hoặc cũng có thể là tên một file của dịch vụ lưu trữ theo file.
- Gammu-smsd đợi cho kịch bản kết thúc. Nếu thực hiện một số đoạn mã lệnh tiêu tốn nhiều thời gian thì RunOnReceive sẽ làm cho SMSD không nhận được tin nhắn mới. Tuy nhiên, để hạn chế sự ngắt quãng từ tình trạng này, thì thời gian chờ đợi được giới hạn lại là 2 phút. Sau khoảng thời gian này, SMSD sẽ tiếp tục hoạt động lại bình thường và có thể thực thi kịch bản thêm 1 lần nữa nếu nhận được tin nhắn được gửi tới.
- SMS_MESSAGES: Số tin vật lý nhận được
- DECODED_PARTS: Số phần tin được giải mã
- SMS_n_CLASS: Class của tin
- SMS_n_NUMBER: Số điện thoại người gởi
- SMS_n_TEXT: Nội dung tin
- DECODED_n_TEXT: Giải mã tin nhắn dài
- DECODED_n_MMS_SENDER: Số điện thoại người gởi MMS
- DECODED_n_MMS_TITLE: Tiêu đề MMS
- DECODED_n_MMS_ADDRESS: URL của MMS
- DECODED_n_MMS_SIZE: Kích thước tin MMS
Trong đó, n được thay thế bởi số tin nhắn hiện tại
- Tin nhắn nhận được lưu trữ ở trong thư mục xác định và được cấu hình trong tập tin cấu hình gammu-smsd.
- Cấu trúc của tin nhắn nhận được khi lưu trữ trong thư mục hộp thư đến (inbox) sẽ có dạng:
IN<date>_<time>_<serial>_<sender>_<sequence>.<ext>
- Trong đó:
<date>: Có định dạng là YYYYMMDD
<time>: Có định dạng là HHMMSS
<sender>: Số điện thoại của người gửi tin nhắn
<serial>: thứ tự của một tin nhắn trong trường hợp của nhiều tin nhắn được nhận cùng lúc. Định dạng của nó là NN
<sequence>: Một thành phần của thông điệp dành cho tin nhắn nhiều thành phần. Nó có định dạng là NN
<ext>: với tin nhắn văn bản thì phần mở rộng là txt, với tin nhắn 8-bit thì được lưu với phần mở rộng là bin, còn smsbackup là phần mở rộng để sao lưu tin nhắn
Ví dụ : IN20160416_021531_00_+841267149998_00.txt
- Tin nhắn truyền đi được đọc từ một thư mục xác định và được cấu hình trong tập tin cấu hình gammu-smsd.
- Cấu trúc của tin nhắn gửi đi được được tạo ra trong thư mục hộp thư đi (outbox) phải được định dạng theo một trong các định dạng sau:
OUT<recipient>.<ext>
OUT<priority>_<recipient>_<serial>.<ext>
OUT<priority><date>_<time>_<serial>_<recipient>_<note>.<ext>
- Trong đó:
<recipient>: Số điện thoại người nhận
<priority>: Một kí tự trong bảng chữ cái (A-Z) với A có độ ưu tiên cao nhất
<ext>: Với tin nhắn SMS văn bản bình thường thì có phần mở rộng là txt, còn smsbackup là phần mở rộng để sao lưu tin nhắn
<note>: Kí tự tùy ý mà được bỏ qua
Ví dụ: OUTG20160620_193810_123_+841267149998_xpq.txt
SQL service chứa tất cả các dữ liệu trong cơ sở dữ liệu. Nó có thể sử dụng một trong phần phụ trợ của SQL.
- User: Tên người dùng kết nối tới cơ sở dữ liệu
- Password: Mật khẩu để kết nối tới cơ sở dữ liệu
- Host: Máy chủ cơ sở dữ liệu hoặc tên nguồn dữ liệu
- Database: Tên cơ sở dữ liệu
- Driver: native_mysql, native_pgsql, odbc…
- SQL: Ngôn ngữ SQL để sử dụng
Hầu như tất cả các đối tượng truy vấn đều có thể được cấu hình. Có thể chỉnh sửa chúng trong [sql] section. Có một số biến được sử dụng trong SQL queries. Có thể phân thành 3 nhóm:
- Thông số đặc trưng của điện thoại mà có thể sử dụng trong tất cả các truy vấn.
- Thông số đặc trưng của tin nhắn SMS có thể sử dụng trong các truy vấn mà làm việc với các tin nhắn SMS.
- Truy vấn cụ thể mà là các dữ liệu bằng số và đặc trưng là cho phép truy vấn cụ thể (hoặc có thể thiết lập các truy vấn).
Các thông số đặc trưng của điện thoại:
%I : IMEI của điện thoại
%P: ID của điện thoại
%N: Tên của máy khách
Các thông số đặc trưng của tin nhắn SMS
%R: Số điện thoại từ xa
%C: Thời gian gửi
%e: Trạng thái tiếp nhận của tin nhắn gửi đi hay trạng thái gửi lỗi
%t: Chuyển tiếp tin nhắn
%d: Thời gian nhận được của tin nhắn được gửi tới
%E: mã hóa nội dung tin nhắn SMS
%c: Lấy nội dung tin nhắn đã được mã hóa
%F: Số điện thoại của tổng đài SMS
%T: Giải mã nội dung tin nhắn SMS đã mã hóa
%A: Gửi tin nhắn
- Tin nhắn được nhận sẽ lưu trữ trong bảng hộp thư đến (inbox).
- Tin nhắn được gửi đi thì sẽ được đọc từ bảng hộp thư đi (outbox) và phần tiếp theo có thể có của cùng một tin nhắn tử hộp thư đi nhiều phần (outbox_multipart).
Bảng hộp thư đến (inbox)
- Bảng hộp thư đến là nơi các tin nhắn nhận được sẽ được lưu trữ.
- Mô tả về các trường:
UpdatedInDB (timestamp) : Sinh ra khi (daemon, user…) cập nhập bảng này
ReceivingDateTime (timestamp): Thời gian khi tin nhắn đến
Text (text): Tin nhắn văn bản được mã hóa
SenderNumber (varchar(20)): Số điện thoại người gửi tin nhắn được giải mã
Coding (enum(‘Default_No_Compression’, ‘Unicode_No_Compression’, ‘8bit’, ‘Default_Compression’, ‘Unicode_Compression’)): Tin nhắn văn bản đã mã hóa
UDH (text): Mã hóa phần User Data Header của tin nhắn
SMSCNumber (varchar(20)): Giải mã số SMSC
Class (integer): Class của tin nhắn SMS
TextDecoded (varchar(160)): Tin nhắn văn bản đã giải mã
ID (integer): ID của tin nhắn
RecipientID (text): ID của người nhận mà Gammu daemon đã được thêm vào nó
Processed (enum(‘false’, ‘true’)): Sử dụng để đánh dấu cho dù tin nhắn SMS đã được xử lý hay không
Bảng hộp thư đi (outbox)
- Tin nhắn đợi để gửi đi sẽ được lưu trong bảng này, nếu tin nhắn là nhiều phần, thì phần tiếp theo được lưu trữ trong bảng hộp thư đi nhiều phần (outbox_multipart).
- Mô tả về các trường:
UpdatedInDB (timestamp): Sinh ra khi (daemon, user…) cập nhập bảng này
InsertIntoDB (timestamp): Sinh ra tin nhắn được đưa vào vào cơ sở dữ liệu
SendingDateTime (timestamp): Thiết lập một số giá trị khi muốn tin nhắn được đi sau một thời gian đã định trước
SendBefore (time): Gửi tin nhắn trước thời gian đã dự kiến
SendAfter (time): Gửi tin nhắn sau thời gian đã dự kiến
Text (text): tin nhắn SMS được mã hóa
DestinationNumber (varchar (20)): Số điện thoại của người nhận tin nhắn
Coding (enum(‘Default_No_Compression’, ‘Unicode_No_Compression’, ‘8bit’, ‘Default_Compression’, ‘Unicode_Compression’)): Tin nhắn văn bản đã mã hóa
UDH (text): Mã hóa phần User Data Header của tin nhắn
Class (integer): Class của tin nhắn SMS
TextDecoded (varchar (160)): Tin nhắn văn bản ở dạng con người có thể đọc được
ID (integer): ID của tin nhắn
MultiPart (enum(‘false’,’true’)): Khai báo thông tin có nhiều tin nhắn theo trình tự trong hộp thư đi nhiều thành phần
RelativeValidity (integer): Tin nhắn SMS có hiệu lực tương đối như mã hóa sử dụng kĩ thuật GSM
SendingTimeOut (timestamp): Được sử dụng bởi đối tượng SMSD cho các mục tiêu chính
DeliveryReport (enum(‘default’,’yes’,’no’)): Khi mặc định được sử dụng, báo cáo gửi sẽ được sử dụng hoặc không tùy theo các thiết lập của đối tượng SMSD
CreatorID (text): ID người gửi, nó phải phù hợp với PhoneID trong cấu hình SMSD
Hộp thư đi nhiều thành phần (outbox_multipart)
- Dữ liệu cho các tin nhắn đi nhiều thành phần sẽ được lưu ở đây
- Mô tả về các trường:
ID (integer): Có ý nghĩa tương tự như các giá trị trong bảng hộp thư đi
Text (text): Có ý nghĩa tương tự như các giá trị trong bảng hộp thư đi
Coding (enum(‘Default_No_Compression’, ‘Unicode_No_Compression’, ‘8bit’, ‘Default_Compression’, ‘Unicode_Compression’)): Có ý nghĩa tương tự như các giá trị trong bảng hộp thư đi
UDH (text): Có ý nghĩa tương tự như các giá trị trong bảng hộp thư đi
Class (integer): Có ý nghĩa tương tự như các giá trị trong bảng hộp thư đi
TextDecoded (varchar(160)): Có ý nghĩa tương tự như các giá trị trong bảng hộp thư đi
SequencePosition (integer): Cho biết thông tin số lượng tin nhắn theo thứ tự tin (bắt đầu với giá trị 2, giá trị đầu tiên là một phần trong bảng hộp thư đi)
Bảng thông tin thiết bị (phones)
- Bảng này cung cấp thông tin về kết nối thiết bị, nó được định kì làm mới và cung cấp các thông tin như (pin, cấp tín hiệu…).
ID (text): Giá trị ID của thiết bị
UpdatedInDB (timestamp): Khi hồ sơ được tạo ra (khi thiết bị đã được kết nối)
TimeOut (timestamp): Khi hồ sơ này hết hiệu lực (khi thiết bị kết thúc kết nối)
Send (boolean): Chỉ ra trạng thái được gửi tin nhắn
Receive (boolean): Chỉ ra trạng thái được nhận tin nhắn
IMEI (text): IMEI của thiết bị
Client (text): Tên chủ thiết bị
Battery (integer): Chỉ ra mức pin của thiết bị theo phần trăm
Signal (integer): Chỉ ra mức tín hiệu của thiết theo phần trăm
Sent (integer): Số lượng tin nhắn SMS đã được gửi
Received (integer): Số lượng tin nhắn SMS đã được nhận
Tham khảo:
[1] https://wammu.eu/docs/manual/quick/index.html#quick
[2] https://wammu.eu/docs/manual/quick/index.html#starting-with-smsd
» Tin mới nhất:
» Các tin khác: