Cum să configurezi câmpul SMPP Registered Delivery
Ce este câmpul Registered Delivery?
Câmpul Registered Delivery în SMPP este o mască de biți de 1 octet în PDU-uri precum submit_sm și data_sm care controlează
confirmările de livrare și recunoașteri. Acesta permite expeditorilor să urmărească starea livrării mesajelor prin confirmările generate de SMSC. Funcțiile cheie includ:
- Solicitarea confirmărilor de livrare finale (succes/eșec)
- Activarea notificărilor intermediare de livrare
- Gestionarea confirmărilor SME (Short Message Entity)
Structura câmpului și masca de biți
Definit în SMPP v3.4, câmpul utilizează următoarea structură de mască de biți:
| Bit | Descriere |
|---|---|
| 0 | Confirmare de livrare SMSC (0 = dezactivat, 1 = activat) |
| 1 | Confirmare SME inițiată (0 = dezactivat, 1 = activat) |
| 2 | Notificare intermediară (0 = dezactivat, 1 = activat) |
| 3-7 | Rezervat |
Valori comune
| Valoare (Hex) | Binar | Descriere |
|---|---|---|
| 0x00 | 00000000 | Nicio confirmare solicitată |
| 0x01 | 00000001 | Doar confirmare de livrare SMSC |
| 0x03 | 00000011 | Confirmare SMSC + confirmare SME |
| 0x05 | 00000101 | Confirmare SMSC + notificări intermediare |
Cazuri de utilizare
1. Confirmări de livrare de bază
registered_delivery: 0x01 // Solicită starea finală a livrării
2. Mesagerie de înaltă fiabilitate
registered_delivery: 0x05 // Confirmare + notificări intermediare
3. Comunicare bidirecțională
registered_delivery: 0x03 // Confirmă atât livrarea SMSC, cât și SME
Exemple de PDU-uri SMPP
Exemplu 1: Fără confirmări (0x00)
0000001D // Lungimea comenzii (29 de octeți)
00000004 // ID-ul comenzii (SubmitSM)
00000001 // Numărul de secvență
00 // Sursa TON
00 // Sursa NPI
736F7572636500 // Adresa sursă ("source")
00 // Destinația TON
00 // Destinația NPI
36353433323100 // Adresa destinației ("654321")
00 // Clasa ESM
00 // ID-ul protocolului
00 // Flagul de prioritate
00 // Ora de livrare programată
00 // Perioada de valabilitate
00 // Registered Delivery (0x00: Fără confirmări)
00 // Înlocuire-dacă-prezent
00 // Codarea datelor (DCS=0x00)
00 // ID-ul implicit al mesajului SM
07 // Lungimea SM (7 septeți)
C8329BFD06DDDF72 // Conținut ("Hello!")
Exemplu 2: Confirmare de livrare SMSC (0x01)
0000001D // Lungimea comenzii (29 de octeți)
00000004 // ID-ul comenzii (SubmitSM)
00000002 // Numărul de secvență
...
00 // Perioada de valabilitate
01 // Registered Delivery (0x01: Confirmare SMSC)
00 // Înlocuire-dacă-prezent
...
Exemplu 3: Notificări intermediare (0x05)
0000001D // Lungimea comenzii (29 de octeți)
00000004 // ID-ul comenzii (SubmitSM)
00000003 // Numărul de secvență
...
05 // Registered Delivery (0x05: Confirmare SMSC + notificări intermediare)
...
Formatul confirmării de livrare
SMSC-urile returnează confirmări prin PDU-uri deliver_sm cu un conținut formatat astfel:
id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:STATUS err:EEE
Exemplu de confirmare pentru un mesaj livrat:
id:1896384752 sub:001 dlvrd:001 submit date:2310151430 done date:2310151431 stat:DELIVRD err:000
Interacțiuni cu alte câmpuri
- esm_class: Bitul 6 (flagul de confirmare de livrare) trebuie să se alinieze cu setările registered_delivery
- validity_period: Determină cât timp SMSC-ul va încerca livrarea înainte de a trimite o confirmare de eșec
- message_id: Critic pentru corelarea confirmărilor cu mesajele originale
Capcane comune
- Activarea confirmărilor dar neascultarea PDU-urilor
deliver_sm - Presupunerea că toate SMSC-urile acceptă confirmările SME (0x02)
- Nealinierea flagurilor
registered_deliveryșiesm_class - Ignorarea limitelor de rată SMSC pentru generarea confirmărilor
Unii furnizori taxează suplimentar pentru confirmările de livrare. Confirmă prețurile înainte de activare.
Concluzie
Câmpul Registered Delivery este esențial pentru urmărirea stării livrării SMS-urilor în SMPP. În timp ce gestionarea de bază a confirmărilor (0x01) este larg acceptată,
funcțiile avansate precum notificările intermediare necesită teste specifice SMSC. Implementează întotdeauna o analiză robustă a confirmărilor și corelează mesajele
folosind message_id. Pentru comportament detaliat, consultă Secțiunea 5.2.17 din SMPP v3.4 și documentația furnizorului tău.