Jak skonfigurować pole Scheduled Delivery Time w SMPP

Co to jest pole Scheduled Delivery Time?

Pole Scheduled Delivery Time w SMPP (Short Message Peer-to-Peer Protocol) to opcjonalny parametr w PDU submit_sm, który umożliwia zaplanowanie wysłania wiadomości na określoną datę i godzinę w przyszłości. To pole jest kluczowe dla:

  • Opóźnienia dostarczenia wiadomości poza godziny szczytu
  • Planowania kampanii czasowych (np. życzenia urodzinowe)
  • Koordynacji wiadomości w różnych strefach czasowych

Format i struktura pola

Specyfikacja SMPP v3.4 definiuje to pole jako C-Octet String (zakończony znakiem null) z określonym formatem daty i godziny:

YYMMDDhhmmssnnp

Gdzie:

Składnik Opis Zakres
YY Dwie ostatnie cyfry roku 00-99
MM Miesiąc 01-12
DD Dzień 01-31
hh Godzina (format 24h) 00-23
mm Minuta 00-59
ss Sekunda 00-59
nn Ułamki sekund (opcjonalne) 00-99
p Przesunięcie strefy czasowej (np. +, -) +/- followed by 4 digits (HHMM)
Wartości specjalne:
- NULL (natychmiastowe dostarczenie)
- 000000000000000 (natychmiastowe dostarczenie, systemy legacy)

Przykładowe ciągi czasowe

Cząg czasowy Interpretacja
231015143000000+ 15 paź 2023 14:30:00 UTC+0
231015143000000-0800 15 paź 2023 14:30:00 UTC-08:00
000000000000000 Natychmiastowe dostarczenie (legacy)
NULL Natychmiastowe dostarczenie (zalecane)

Przykłady zastosowań

1. Wiadomości urodzinowe

Zaplanuj wiadomość na dokładnie północ w dniu urodzin odbiorcy:

scheduled_delivery_time: "231016000000000+"
// 16 paź 2023 00:00:00 UTC+0
    

2. Dostarczenie poza godzinami szczytu

Unikaj przeciążenia sieci, wysyłając masowe wiadomości w nocy:

scheduled_delivery_time: "231015020000000+"
// 15 paź 2023 02:00:00 UTC+0
    

3. Koordynacja stref czasowych

Dostarcz wiadomości o 9 rano czasu lokalnego dla odbiorców w Nowym Jorku (UTC-5):

scheduled_delivery_time: "231015090000000-0500"
// 15 paź 2023 09:00:00 UTC-05:00
    

Przykładowe PDU SMPP

Przykład 1: Natychmiastowe dostarczenie (NULL)

0000001D  // Długość polecenia (29 bajtów)
00000004  // ID polecenia (SubmitSM)
00000001  // Numer sekwencji
00        // Źródłowy TON
00        // Źródłowy NPI
736F7572636500  // Adres źródłowy ("source")
00        // Docelowy TON
00        // Docelowy NPI
36353433323100  // Adres docelowy ("654321")
00        // Klasa ESM
00        // ID protokołu
00        // Flaga priorytetu
00        // Scheduled Delivery Time (NULL: natychmiastowe)
00        // Okres ważności
00        // Zarejestrowane dostarczenie
00        // Zastąp jeśli obecne
00        // Kodowanie danych (DCS=0x00)
00        // Domyślny ID wiadomości SM
07        // Długość SM (7 septetów)
C8329BFD06DDDF72  // Zawartość ("Hello!")
    

Przykład 2: Dostarczenie w przyszłości (15 paź 2023 14:30 UTC)

0000002A  // Długość polecenia (42 bajty)
00000004  // ID polecenia (SubmitSM)
00000002  // Numer sekwencji
00        // Źródłowy TON
00        // Źródłowy NPI
736F7572636500  // Adres źródłowy ("source")
00        // Docelowy TON
00        // Docelowy NPI
36353433323100  // Adres docelowy ("654321")
00        // Klasa ESM
00        // ID protokołu
00        // Flaga priorytetu
3233313031353134333030303030302B00  // "231015143000000+" (16 bajtów + null)
00        // Okres ważności
00        // Zarejestrowane dostarczenie
00        // Zastąp jeśli obecne
00        // Kodowanie danych (DCS=0x00)
00        // Domyślny ID wiadomości SM
07        // Długość SM (7 septetów)
C8329BFD06DDDF72  // Zawartość ("Hello!")
    

Interakcje z innymi polami

  • validity_period: Określa, jak długo SMSC będzie próbować dostarczyć wiadomość. Odliczanie zaczyna się od zaplanowanego czasu.
  • priority_flag: Wiadomości o wyższym priorytecie mogą omijać kolejki planowania w niektórych SMSC.

Częste problemy

  • Używanie czasu lokalnego bez określenia przesunięcia strefy czasowej.
  • Nieprawidłowe formatowanie ciągu daty (np. nieprawidłowy miesiąc "13").
  • Założenie, że wszystkie SMSC obsługują zaplanowane dostarczenie (należy to zweryfikować z dostawcą).
  • Ustawienie czasu w przeszłości, co powoduje natychmiastowe dostarczenie.
Uwaga dotycząca zachowania SMSC:
Niektóre SMSC ignorują ułamki sekund (nn) lub ograniczają, jak daleko w przyszłość można zaplanować wiadomości (np. maksymalnie 7 dni).

Podsumowanie

Pole Scheduled Delivery Time umożliwia precyzyjną kontrolę nad czasem dostarczenia wiadomości SMS. Właściwe użycie wymaga starannego formatowania ciągów czasowych i koordynacji z możliwościami SMSC. Zawsze testuj zaplanowane wiadomości z dostawcą i odwołuj się do specyfikacji SMPP v3.4 w przypadku szczególnych sytuacji (np. lata przestępne, zmiany stref czasowych).

More information