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) |
-
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.
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).