Jak skonfigurować pole Validity Period w SMPP

Co to jest pole Validity Period?

Validity Period w SMPP (Short Message Peer-to-Peer Protocol) to pole w postaci zakończonej znakiem null w PDU, takich jak submit_sm, które określa, jak długo SMSC będzie próbował dostarczyć wiadomość przed jej odrzuceniem. To pole jest kluczowe dla:

  • Zapobiegania nieskończonym próbom dostarczenia nieosiągalnych wiadomości
  • Zarządzania zasobami pamięci SMSC
  • Obsługi treści wrażliwych na czas (np. OTP, promocje)

Format i struktura pola

Okres ważności używa tego samego formatu czasu absolutnego co zaplanowany czas dostawy (specyfikacja SMPP v3.4):

YYMMDDhhmmssnnp

Gdzie składniki pasują do formatu zaplanowanego czasu dostawy. Obsługiwane są również skróty formatu względnego:

Format Przykład Opis
Absolutny 231215235959000+ 15 grudnia 2023 23:59:59 UTC+0
Względny 000003000000000R 3 dni od czasu wysłania
Wartości specjalne:
- NULL: Używa domyślnego okresu ważności SMSC (zazwyczaj 24-72 godziny)
- 00: Domyślny okres ważności SMSC (starsze systemy)

Kluczowe formaty Validity Period

1. Format czasu absolutnego

YYMMDDhhmmssnnp // Pełny format
231215143000000+  // 15 grudnia 2023 14:30:00 UTC+0

2. Format czasu względnego

00000X000000000R // X = Dni (00-99)
000003000000000R  // 3 dni ważności

Przykłady zastosowań

1. Wygaśnięcie OTP (krótki okres ważności)

validity_period: "000000010000000R" // 1 godzina ważności
    

2. Kampania promocyjna (dłuższy okres ważności)

validity_period: "000007000000000R" // 7 dni ważności
    

3. Wygaśnięcie o północy (czas absolutny)

validity_period: "231215235959000+" // Wygasa 15 grudnia 2023 23:59:59 UTC+0
    

Przykłady PDU SMPP

Przykład 1: 24-godzinny okres ważności (format względny)

0000001D  // Długość polecenia (29 bajtów)
00000004  // ID polecenia (SubmitSM)
00000001  // Numer sekwencji
...
00        // Flaga priorytetu
00        // Zaplanowany czas dostawy
303030303234303030303030305200  // "00002400000000R" (24 godziny)
00        // Zarejestrowana dostawa
...
    

Przykład 2: Absolutny czas wygaśnięcia

0000002A  // Długość polecenia (42 bajty)
00000004  // ID polecenia (SubmitSM)
00000002  // Numer sekwencji
...
00        // Zaplanowany czas dostawy
3233313231323332353935393030302B00  // "231212235959000+" (12 grudnia 2023 23:59:59 UTC+0)
...
    

Interakcje z innymi polami

  • scheduled_delivery_time: Odliczanie okresu ważności zaczyna się od zaplanowanego czasu, jeśli jest ustawiony
  • priority_flag: Wiadomości o wysokim priorytecie mogą nadpisać ustawienia okresu ważności w niektórych SMSC
  • registered_delivery: Potwierdzenia dostawy są wysyłane nawet po wygaśnięciu okresu ważności

Częste błędy

  • Używanie formatu względnego bez sufiksu 'R'
  • Ustawianie okresów ważności dłuższych niż limity SMSC (np. maksymalnie 30 dni)
  • Niezgodność stref czasowych między zaplanowanym czasem a okresem ważności
  • Założenie, że wszystkie SMSC obsługują format względny (należy to zweryfikować z dostawcą)
Uwaga dotycząca zachowania SMSC:
Wiele SMSC konwertuje okresy względne na znaczniki czasu absolutnego po otrzymaniu wiadomości. Odliczanie trwa nawet po restarcie SMSC.

Okres ważności a domyślne ustawienia SMSC

Wartość Validity Period Zachowanie SMSC
NULL lub 00 Używa domyślnego ustawienia SMSC (różni się w zależności od dostawcy)
Jawna wartość Przestrzega wartości (w granicach limitów SMSC)
Znacznik czasu z przeszłości Wiadomość odrzucana natychmiast

Podsumowanie

Pole Validity Period jest niezbędne do kontrolowania cyklu życia wiadomości w SMPP. Chociaż znaczniki czasu absolutnego zapewniają precyzję, formaty względne oferują prostotę dla typowych przypadków użycia. Zawsze koordynuj ustawienia ważności z politykami SMSC i testuj przypadki brzegowe (np. zmiany czasu letniego). Szczegółowe implementacje można znaleźć w sekcji 5.2.18 specyfikacji SMPP v3.4 oraz w dokumentacji GSM 03.40.

More information