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)
Valori speciale:
- 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ă.
Notă privind comportamentul SMSC:
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