Cum să configurezi câmpul Validity Period în SMPP

Ce este câmpul Validity Period?

Validity Period în SMPP (Short Message Peer-to-Peer Protocol) este un câmp de tip șir de caractere terminat cu null în PDU-uri precum submit_sm care definește durata în care un SMSC va încerca să livreze un mesaj înainte de a-l elimina. Acest câmp este critic pentru:

  • Prevenirea încercărilor indefinite pentru mesaje nedeliverabile
  • Gestionarea resurselor de stocare ale SMSC
  • Prelucrarea conținutului sensibil la timp (de ex., OTP-uri, promoții)

Formatul și structura câmpului

Perioada de valabilitate utilizează același format de timp absolut ca și timpul de livrare programat (specificația SMPP v3.4):

YYMMDDhhmmssnnp

Unde componentele corespund formatului timpului de livrare programat. Sunt acceptate și formate relative comune:

Format Exemplu Descriere
Absolut 231215235959000+ 15 dec. 2023 23:59:59 UTC+0
Relativ 000003000000000R 3 zile de la momentul trimiterii
Valori speciale:
- NULL: Utilizează valoarea implicită a SMSC (de obicei 24-72 de ore)
- 00: Valoarea implicită a SMSC (sisteme vechi)

Formate cheie pentru Validity Period

1. Format de timp absolut

YYMMDDhhmmssnnp // Format complet
231215143000000+  // 15 dec. 2023 14:30:00 UTC+0

2. Format de timp relativ

00000X000000000R // X = Zile (00-99)
000003000000000R  // 3 zile valabilitate

Cazuri de utilizare

1. Expirare OTP (Valabilitate scurtă)

validity_period: "000000010000000R" // 1 oră valabilitate
    

2. Campanie promoțională (Valabilitate extinsă)

validity_period: "000007000000000R" // 7 zile valabilitate
    

3. Expirare la miezul nopții (Timp absolut)

validity_period: "231215235959000+" // Expiră 15 dec. 2023 23:59:59 UTC+0
    

Exemple de PDU-uri SMPP

Exemplul 1: Valabilitate 24 de ore (Format relativ)

0000001D  // Lungimea comenzii (29 de octeți)
00000004  // ID-ul comenzii (SubmitSM)
00000001  // Numărul de secvență
...
00        // Flag de prioritate
00        // Timp de livrare programat
303030303234303030303030305200  // "00002400000000R" (24 de ore)
00        // Livrare înregistrată
...
    

Exemplul 2: Timp de expirare absolut

0000002A  // Lungimea comenzii (42 de octeți)
00000004  // ID-ul comenzii (SubmitSM)
00000002  // Numărul de secvență
...
00        // Timp de livrare programat
3233313231323332353935393030302B00  // "231212235959000+" (12 dec. 2023 23:59:59 UTC+0)
...
    

Interacțiuni cu alte câmpuri

  • scheduled_delivery_time: Perioada de valabilitate începe de la timpul programat dacă este setat
  • priority_flag: Mesajele cu prioritate mare pot suprascrie setările de valabilitate pe unele SMSC-uri
  • registered_delivery: Confirmările de livrare sunt trimise chiar și după expirarea perioadei de valabilitate

Grese comune

  • Utilizarea formatului relativ fără sufixul 'R'
  • Setarea perioadelor de valabilitate mai lungi decât limitele SMSC (de ex., maxim 30 de zile)
  • Neconcordanța fusurilor orare între timpul programat și perioada de valabilitate
  • Presupunerea că toate SMSC-urile acceptă formatul relativ (verifică cu furnizorul)
Notă privind comportamentul SMSC:
Multe SMSC-uri convertesc perioadele relative în timestamp-uri absolute la primirea mesajului. Numărătoarea inversă continuă chiar dacă SMSC-ul repornește.

Perioada de valabilitate vs. Valori implicite SMSC

Valoarea Validity Period Comportament SMSC
NULL sau 00 Folosește valoarea implicită a SMSC (variază în funcție de furnizor)
Valoare explicită Respectă valoarea (în limitele SMSC)
Timestamp în trecut Mesaj eliminat imediat

Concluzie

Câmpul Validity Period este esențial pentru controlul ciclului de viață al mesajelor în SMPP. În timp ce timestamp-urile absolute oferă precizie, formatele relative oferă simplitate pentru cazurile comune. Coordonează întotdeauna setările de valabilitate cu politicile SMSC și testează cazurile limită (de ex., tranziții la ora de vară). Pentru implementări detaliate, consultă Secțiunea 5.2.18 din SMPP v3.4 și documentația GSM 03.40.

More information