SMPP

SMPP (Short Message Peer-to-Peer) là một giao thức viễn thông cấp độ application layer dùng để gửi tin nhắn SMS giữa các hệ thống máy tính và các hệ thống nhắn tin SMS như SMSC (Short Message Service Center), hoặc các aggregator SMS.


✅ 1. SMPP là gì?

SMPP (Short Message Peer-to-Peer) là một giao thức chuẩn do SMPP Forum định nghĩa, chủ yếu được sử dụng bởi các nhà mạng, aggregator hoặc hệ thống backend để gửi và nhận SMS, MMS, hoặc USSD một cách real-time.

🔹 Một số khái niệm chính:

Khái niệm
Giải thích

SMSC

Short Message Service Center – máy chủ xử lý và phân phối tin nhắn của nhà mạng.

ESME

External Short Messaging Entity – ứng dụng phía client (ví dụ: backend app hoặc hệ thống CRM) kết nối đến SMSC qua SMPP.

PDU

Protocol Data Unit – định dạng gói tin SMPP.

Bind

Quá trình kết nối xác thực đến SMSC (bind_transmitter, bind_receiver, bind_transceiver).

Submit_SM

Lệnh gửi một SMS từ backend đến SMSC.

Deliver_SM

Lệnh gửi SMS từ SMSC đến backend.


✅ 2. Proxy SMPP trong Backend là gì?

🔹 Định nghĩa:

Proxy SMPP là một lớp trung gian giữa ứng dụng backend của bạn và một hoặc nhiều SMSC/Aggregator. Nó đóng vai trò giống như một reverse proxy hoặc gateway, quản lý toàn bộ kết nối SMPP đến nhà mạng, giúp backend không phải quản lý trực tiếp giao thức SMPP.

🔹 Mục đích sử dụng:

  • Giảm tải cho hệ thống backend.

  • Cho phép scale dễ dàng (load balancing, failover).

  • Tích hợp với nhiều nhà mạng qua một gateway duy nhất.

  • Thêm các logic như: retry, rate-limit, route theo nhà mạng, kiểm tra số điện thoại hợp lệ, logging, billing,…


✅ 3. Sơ đồ hoạt động:

[ Backend App ] <-- HTTP / gRPC / Kafka --> [ SMPP Proxy Layer ] <-- SMPP --> [ SMSC / Aggregator ]

✅ 4. Khi nào nên dùng SMPP Proxy?

Trường hợp
Có nên dùng Proxy?

Hệ thống đơn giản, gửi ít SMS

❌ Không cần, kết nối trực tiếp là đủ

Gửi SMS với nhiều provider, high TPS

✅ Nên có Proxy SMPP

Muốn tách biệt nghiệp vụ và giao thức truyền tải

✅ Rất nên tách

Muốn monitor, retry, queue, billing SMS

✅ Proxy giúp dễ làm hơn


✅ 5. Công nghệ & thư viện SMPP phổ biến:

Ngôn ngữ
Thư viện SMPP phổ biến

Java

jsmpp, Cloudhopper

Node.js

smpp

Python

python-smpp, smpp.twisted

Proxy

Kannel, Jasmin SMS Gateway (Python), SMPPBox


✅ 6. Ví dụ ứng dụng Proxy SMPP

Giả sử bạn có hệ thống gửi SMS OTP:

  • Backend service gọi: POST /send-otp {phone: "0981234567"}

  • Proxy SMPP nhận request này và dùng submit_sm để gửi SMS đến SMSC (Mobifone, Viettel, etc.)

  • Proxy sẽ nhận phản hồi submit_sm_resp và đẩy trạng thái về backend hoặc lưu DB.

  • Nếu có delivery report, proxy cũng nhận qua deliver_sm và đẩy về backend hoặc Kafka.


Last updated