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).
More information
- How to configure the SMPP Service Type field
- How to configure the SMPP Phone Number fields
- How to configure the SMPP ESM Class field
- How to configure the SMPP PID field
- How to configure the SMPP Prioirity field
- How to configure the SMPP Scheduled Time field
- How to configure the SMPP Validity Period field
- How to configure the SMPP Registered Delivery field
- How to configure the SMPP Replace if Present field
- How to configure the sm_default_msg_id field
- How to configure the SMPP DCS field
- How to calculate the SMPP SM Length field
- How to put data into the SMPP SM field