Xin chào! Mặc dù tin nhắn tức thời và mạng xã hội đang thay thế các phương thức liên lạc truyền thống hàng ngày nhưng điều này không làm giảm đi sự phổ biến của SMS. Việc xác minh trên một trang web phổ biến hoặc thông báo về giao dịch được lặp lại, chúng sẽ tồn tại và sẽ tồn tại. Bạn đã bao giờ tự hỏi làm thế nào tất cả hoạt động? Giao thức SMPP rất thường xuyên được sử dụng để gửi tin nhắn hàng loạt, điều này sẽ được thảo luận dưới đây.
Trên Habré đã có bài viết về smpp, ,, nhưng mục tiêu của họ không phải là mô tả giao thức. Tất nhiên, bạn có thể bắt đầu ngay từ nguồn ban đầu - , nhưng tôi nghĩ sẽ rất hay nếu có một bản tóm tắt ngắn gọn về nó. Tôi sẽ giải thích bằng cách sử dụng v3.4 làm ví dụ.Tôi sẽ rất vui vì những lời phê bình khách quan của bạn.
Giao thức SMPP là giao thức nhắn tin ngang hàng. Điều này có nghĩa là mỗi máy chủ ngang hàng/trung tâm đều có quyền bình đẳng. Trong trường hợp đơn giản nhất, sơ đồ nhắn tin SMS trông như thế này:

Tuy nhiên, nếu nhà điều hành quốc gia không có tuyến đường đến một vùng sâu vùng xa nào đó, anh ta sẽ nhờ một người trung gian thực hiện việc này - một trung tâm SMS. Đôi khi, để gửi một SMS, bạn cần xây dựng một chuỗi giữa nhiều quốc gia hoặc thậm chí giữa các châu lục.
Về giao thức
SMPP là giao thức lớp ứng dụng dựa trên trao đổi PDU và được truyền qua TCP / IP hoặc phiên X25 để truyền tin nhắn SMS và ussd. Thông thường, SMPP được sử dụng ở chế độ liên tục, giúp tiết kiệm thời gian. SMPP sử dụng mô hình giao tiếp client-server.
Chế độ giao tiếp

Việc trao đổi tin nhắn giữa người gửi và trung tâm SMS thông qua SMPP có thể được thực hiện theo các chế độ sau:
Máy phát (máy phát) - truyền tin nhắn theo một hướng, mỗi lần một tin nhắn
Người nhận - chỉ nhận được tin nhắn từ trung tâm SMS.
Transreceiver (bộ thu phát) - Trao đổi tin nhắn giữa trung tâm SMS và người dùng
Cấu trúc

Độ dài tin nhắn
Một tin nhắn SMS có thể chứa 70 ký tự khi gõ bằng chữ Cyrillic và không quá 157 ký tự Latinh + 3 UDH. Nếu bạn gửi một tin nhắn SMS có số lượng ký tự lớn, nó sẽ được chia thành nhiều phân đoạn và kết hợp trong thiết bị nhận. Trong trường hợp phân đoạn, số lượng ký tự được giảm bớt theo tiêu đề thư, biểu thị một phần của thư. Do đó, khi gửi một tin nhắn SMS lớn, nó chứa tối đa 153 ký tự Latinh hoặc 67 ký tự không điển hình.
Lược đồ mã hóa dữ liệu
Tuy nhiên, các ký hiệu yêu cầu mã hóa để truyền tải thông điệp. Trong giao thức SMPP, một trường đặc biệt chịu trách nhiệm mã hóa - Lược đồ mã hóa dữ liệu hoặc DCS. Đây là trường chỉ định cách nhận dạng tin nhắn. Ngoài ra, trường DCS bao gồm:
- bộ ký tự xác định mã hóa;
- lớp tin nhắn;
- yêu cầu tự động xóa sau khi đọc;
- dấu hiệu nén tin nhắn;
- ngôn ngữ tin nhắn quảng bá;
Bảng chữ cái 7 bit tiêu chuẩn (GSM 03.38). Nó được phát triển cho hệ thống nhắn tin GSM. Mã hóa này phù hợp với tiếng Anh và một số ngôn ngữ Latin. Mỗi ký tự bao gồm 7 bit và được mã hóa thành octet.
UTF-16 (trong GSM UCS2) Để bao gồm các ký tự bị thiếu trong bảng chữ cái 7 bit, mã hóa UTF-16 đã được phát triển, bổ sung thêm các ký tự bổ sung (bao gồm cả Cyrillic) bằng cách giảm kích thước tin nhắn từ 160 xuống 70; loại mã hóa này gần như sao chép hoàn toàn Unicode .
Dữ liệu 8 bit do người dùng xác định. Chúng bao gồm KOI8-R và Windows-1251. Mặc dù giải pháp này có vẻ tiết kiệm hơn so với cùng loại UTF-16. Một câu hỏi hợp lý đặt ra về khả năng tương thích trên các thiết bị khác nhau. Vì trong trường hợp này, cả hai thiết bị đều phải được cấu hình trước.
Lớp tin nhắn
- Class0, hoặc flash, tin nhắn được lưu trong bộ nhớ điện thoại theo ý của người dùng;
- Class1 hoặc những loại được lưu trong bộ nhớ điện thoại;
- Class1 hoặc những loại được lưu trong bộ nhớ điện thoại;
- Class2 phải đảm bảo rằng tin nhắn được lưu trong bộ nhớ của thiết bị đầu cuối di động, nếu không nó phải cảnh báo trung tâm SMS về việc không thể lưu;
- Class3 - trong trường hợp này, điện thoại phải gửi thông báo rằng tin nhắn có thể được lưu trữ, bất kể dung lượng bộ nhớ trong thiết bị. Loại tin nhắn này ngụ ý rằng tin nhắn đã đến tay người nhận;
Loại tin nhắn
Tin nhắn im lặng (SMS0) Loại tin nhắn SMS không có nội dung. SMS này đến mà không có thông báo và không hiển thị trên màn hình thiết bị.
PDU
Mỗi thao tác pdu được ghép nối và bao gồm một yêu cầu và một phản hồi. Ví dụ: lệnh cho biết kết nối đã được thiết lập (bind_transmitter/bind_transmitter_resp) hoặc thông báo đã được truyền đi (deliver_sm/deliver_sm_resp)

Mỗi gói pdu bao gồm hai phần - phần tiêu đề và phần nội dung. Cấu trúc tiêu đề giống nhau đối với mọi gói pdu: độ dài lệnh là độ dài của gói, id là tên của gói và lệnh trạng thái cho biết tin nhắn được truyền thành công hay bị lỗi.
Thông số TLV bổ sung
TLV (Giá trị độ dài thẻ) hoặc các trường bổ sung. Các tham số như vậy được sử dụng để mở rộng chức năng của giao thức và không bắt buộc. Trường này xuất hiện ở cuối trường pdu. Ví dụ: bằng cách sử dụng TLV dest_addr_np_information, bạn có thể tổ chức việc truyền thông tin về tính di động của một số.
Tôn và Npi
Tham số TON (Type of Number) thông báo cho SMSC về định dạng địa chỉ và loại mạng.
Thông số NPI (Nhận dạng kế hoạch đánh số) cho biết kế hoạch đánh số.

Địa chỉ nguồn tin nhắn hoặc tên alpha
Tin nhắn gửi tới điện thoại của bạn có hai loại: kỹ thuật số và chữ cái. Số kỹ thuật số có thể dài (tương tự như số điện thoại) hoặc ngắn. Đôi khi các nhà khai thác có những hạn chế trong việc gửi từ các tên trung lập, ví dụ như Infosms, Alert, v.v. Đôi khi các nhà khai thác sẽ không cho phép lưu lượng truy cập nếu tên không được đăng ký trên mạng của họ. Tuy nhiên, đây là những đặc điểm của nhà điều hành.
Giai đoạn nộp hồ sơ
![]()
SMS-GỬI - đây là gửi tin nhắn MO FSM (tin nhắn ngắn từ thiết bị đầu cuối di động)
SMS-GỬI BÁO CÁO - xác nhận rằng tin nhắn đã được gửi bởi SMSC
SRI SM (SendRoutingInfo) - SMSC nhận thông tin từ HLR về vị trí MSC/VLR của thuê bao
SRI SM RESP - phản hồi từ HLR liên quan đến vị trí người đăng ký
MT-FSM — sau khi nhận được vị trí, tin nhắn sẽ được gửi bằng thao tác “Chuyển tiếp tin nhắn ngắn”
ACK MT-FSM - phản hồi từ SMSC rằng tin nhắn đã được gửi
BÁO CÁO TÌNH TRẠNG SMS - SMSC gửi trạng thái gửi tin nhắn.
Trạng thái gửi tin nhắn
BÁO CÁO TÌNH TRẠNG SMS có thể nhận nhiều giá trị:
GIAO HÀNG tin nhắn được gửi thành công
TỪ CHỐI — tin nhắn bị từ chối bởi trung tâm SMS
HẾT HẠN - tin nhắn bị xóa khỏi hàng đợi gửi sau khi kết thúc TTL (thời gian tồn tại của tin nhắn)
BẤT NGỜ - các trường hợp không giao hàng khác
KHÔNG BIẾT-không nhận được phản hồi về việc gửi đi.
Lỗi chuyển
Đôi khi có những nguyên nhân khiến tin nhắn SMS không được gửi đến thuê bao. Hậu quả của những lý do này là sự xuất hiện của sai sót. Lỗi được trả về PDUs_sms_resp. Tất cả các lỗi có thể được chia thành tạm thời (Tạm thời) và vĩnh viễn (Vĩnh viễn).
Ví dụ: vắng mặt_subscriber có thể được phân loại là tạm thời - người đăng ký không có mặt hoặc không trực tuyến và vĩnh viễn - người đăng ký không tồn tại. Tùy thuộc vào các lỗi xảy ra, chính sách gửi lại các tin nhắn này sẽ được hình thành.
Ví dụ: nếu thuê bao đang bận gọi và nhận được lỗi MT máy bận, tin nhắn có thể được gửi lại sau vài phút, tuy nhiên, nếu dịch vụ nhận tin nhắn của thuê bao bị chặn thì việc gửi lại sẽ không có ý nghĩa gì. Bạn có thể tìm thấy danh sách lỗi trên các trang SMSC, chẳng hạn như .
Nguồn: www.habr.com
