Cum să configurezi câmpul SMPP Scheduled Delivery Time
Ce este câmpul Scheduled Delivery Time?
Câmpul Scheduled Delivery Time în SMPP (Short Message Peer-to-Peer Protocol) este un parametru opțional în PDU-ul submit_sm
care permite ca un mesaj să fie programat pentru livrare la o dată și oră viitoare. Acest câmp este esențial pentru:
- Amânarea livrării mesajelor în orele de off-peak
- Programarea campaniilor sensibile la timp (de ex., mesaje de zi de naștere)
- Coordonarea mesajelor în diferite fusuri orare
Formatul și structura câmpului
Specificația SMPP v3.4 definește acest câmp ca un C-Octet String (terminat cu null) cu un format specific de dată-oră:
YYMMDDhhmmssnnp
Unde:
| Componentă | Descriere | Interval |
|---|---|---|
| YY | Ultimele două cifre ale anului | 00-99 |
| MM | Luna | 01-12 |
| DD | Ziua | 01-31 |
| hh | Ora (format 24h) | 00-23 |
| mm | Minut | 00-59 |
| ss | Secundă | 00-59 |
| nn | Zecimi de secundă (opțional) | 00-99 |
| p | Offset de fus orar (de ex., +, -) | +/- urmat de 4 cifre (HHMM) |
-
NULL (livrare imediată)-
000000000000000 (livrare imediată, sisteme vechi)
Exemple de șiruri de timp
| Șir de timp | Interpretare |
|---|---|
231015143000000+ |
15 oct. 2023 14:30:00 UTC+0 |
231015143000000-0800 |
15 oct. 2023 14:30:00 UTC-08:00 |
000000000000000 |
Livrare imediată (sisteme vechi) |
NULL |
Livrare imediată (recomandat) |
Cazuri de utilizare
1. Mesaje de zi de naștere
Programează un mesaj să fie livrat exact la miezul nopții în ziua de naștere a destinatarului:
scheduled_delivery_time: "231016000000000+"
// 16 oct. 2023 00:00:00 UTC+0
2. Livrare în orele de off-peak
Evită congestia rețelei prin trimiterea mesajelor în masă noaptea:
scheduled_delivery_time: "231015020000000+"
// 15 oct. 2023 02:00:00 UTC+0
3. Coordonarea fusului orar
Livrează mesajele la ora 9 dimineața, ora locală, pentru destinatarii din New York (UTC-5):
scheduled_delivery_time: "231015090000000-0500"
// 15 oct. 2023 09:00:00 UTC-05:00
Exemple de PDU-uri SMPP
Exemplul 1: Livrare imediată (NULL)
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ție ("654321")
00 // Clasa ESM
00 // ID-ul protocolului
00 // Flagul de prioritate
00 // Scheduled Delivery Time (NULL: imediat)
00 // Perioada de valabilitate
00 // Livrare înregistrată
00 // Înlocuire dacă este prezent
00 // Codarea datelor (DCS=0x00)
00 // ID-ul implicit al mesajului SM
07 // Lungimea SM (7 septeți)
C8329BFD06DDDF72 // Conținut ("Hello!")
Exemplul 2: Livrare viitoare (15 oct. 2023 14:30 UTC)
0000002A // Lungimea comenzii (42 de octeți)
00000004 // ID-ul comenzii (SubmitSM)
00000002 // 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ție ("654321")
00 // Clasa ESM
00 // ID-ul protocolului
00 // Flagul de prioritate
3233313031353134333030303030302B00 // "231015143000000+" (16 octeți + null)
00 // Perioada de valabilitate
00 // Livrare înregistrată
00 // Înlocuire dacă este prezent
00 // Codarea datelor (DCS=0x00)
00 // ID-ul implicit al mesajului SM
07 // Lungimea SM (7 septeți)
C8329BFD06DDDF72 // Conținut ("Hello!")
Interacțiuni cu alte câmpuri
- validity_period: Definește cât timp SMSC va încerca livrarea. Numărătoarea începe de la ora programată.
- priority_flag: Mesajele cu prioritate mai mare pot sări peste cozile de programare pe unele SMSC-uri.
Grese comune
- Utilizarea orei locale fără a specifica offset-ul de fus orar.
- Formatarea incorectă a șirului de dată (de ex., lună invalidă "13").
- Presupunerea că toate SMSC-urile acceptă livrarea programată (verifică cu furnizorul).
- Setarea unei ore din trecut, ceea ce duce la livrare imediată.
Unele SMSC-uri ignoră zecimile de secundă (
nn) sau limitează cât de departe în viitor pot fi programate mesajele (de ex., maxim 7 zile).
Concluzie
Câmpul Scheduled Delivery Time permite controlul precis al momentului în care mesajele SMS sunt livrate. Utilizarea corectă necesită o formatare atentă a șirurilor de timp și coordonarea cu capacitățile SMSC-ului. Testează întotdeauna mesajele programate cu furnizorul și consultă specificația SMPP v3.4 pentru cazuri limită (de ex., ani bisecți, tranziții de fus orar).