Jak skonfigurować pole Registered Delivery w SMPP
Co to jest pole Registered Delivery?
Pole Registered Delivery w SMPP to 1-bajtowa maska bitowa w PDU, takich jak submit_sm i data_sm, która kontroluje
potwierdzenia dostarczenia i odbiór wiadomości. Umożliwia nadawcom śledzenie statusu dostarczenia wiadomości poprzez potwierdzenia generowane przez SMSC. Główne funkcje obejmują:
- Żądanie potwierdzeń dostarczenia (sukces/porażka)
- Włączanie powiadomień o pośrednim dostarczeniu
- Obsługę potwierdzeń SME (Short Message Entity)
Struktura pola i maska bitowa
Zdefiniowane w SMPP v3.4, pole używa następującej struktury maski bitowej:
| Bit | Opis |
|---|---|
| 0 | Potwierdzenie dostarczenia SMSC (0 = wyłączone, 1 = włączone) |
| 1 | Potwierdzenie od SME (0 = wyłączone, 1 = włączone) |
| 2 | Powiadomienie pośrednie (0 = wyłączone, 1 = włączone) |
| 3-7 | Zarezerwowane |
Typowe wartości
| Wartość (Hex) | Binarnie | Opis |
|---|---|---|
| 0x00 | 00000000 | Brak potwierdzeń |
| 0x01 | 00000001 | Tylko potwierdzenie dostarczenia SMSC |
| 0x03 | 00000011 | Potwierdzenie SMSC + potwierdzenie SME |
| 0x05 | 00000101 | Potwierdzenie SMSC + powiadomienia pośrednie |
Przykłady zastosowań
1. Podstawowe potwierdzenia dostarczenia
registered_delivery: 0x01 // Żądanie statusu dostarczenia
2. Wiadomości o wysokiej niezawodności
registered_delivery: 0x05 // Potwierdzenie + powiadomienia pośrednie
3. Komunikacja dwukierunkowa
registered_delivery: 0x03 // Potwierdzenie dostarczenia SMSC i SME
Przykłady PDU SMPP
Przykład 1: Brak potwierdzeń (0x00)
0000001D // Długość polecenia (29 bajtów)
00000004 // ID polecenia (SubmitSM)
00000001 // Numer sekwencji
00 // Źródło TON
00 // Źródło NPI
736F7572636500 // Adres źródłowy ("source")
00 // Cel TON
00 // Cel NPI
36353433323100 // Adres docelowy ("654321")
00 // Klasa ESM
00 // ID protokołu
00 // Flaga priorytetu
00 // Czas dostarczenia
00 // Okres ważności
00 // Registered Delivery (0x00: Brak potwierdzeń)
00 // Replace-if-Present
00 // Kodowanie danych (DCS=0x00)
00 // Domyślne ID wiadomości
07 // Długość wiadomości (7 septetów)
C8329BFD06DDDF72 // Zawartość ("Hello!")
Przykład 2: Potwierdzenie dostarczenia SMSC (0x01)
0000001D // Długość polecenia (29 bajtów)
00000004 // ID polecenia (SubmitSM)
00000002 // Numer sekwencji
...
00 // Okres ważności
01 // Registered Delivery (0x01: Potwierdzenie SMSC)
00 // Replace-if-Present
...
Przykład 3: Powiadomienia pośrednie (0x05)
0000001D // Długość polecenia (29 bajtów)
00000004 // ID polecenia (SubmitSM)
00000003 // Numer sekwencji
...
05 // Registered Delivery (0x05: Potwierdzenie SMSC + powiadomienia pośrednie)
...
Format potwierdzenia dostarczenia
SMSC zwraca potwierdzenia poprzez PDU deliver_sm z zawartością w formacie:
id:IIIIIIIIII sub:SSS dlvrd:DDD submit date:YYMMDDhhmm done date:YYMMDDhhmm stat:STATUS err:EEE
Przykład potwierdzenia dostarczenia:
id:1896384752 sub:001 dlvrd:001 submit date:2310151430 done date:2310151431 stat:DELIVRD err:000
Interakcje z innymi polami
- esm_class: Bit 6 (flaga potwierdzenia dostarczenia) musi być zgodny z ustawieniami registered_delivery
- validity_period: Określa, jak długo SMSC będzie próbował dostarczyć wiadomość przed wysłaniem potwierdzenia porażki
- message_id: Kluczowe dla powiązania potwierdzeń z oryginalnymi wiadomościami
Typowe problemy
- Włączanie potwierdzeń bez nasłuchiwania PDU
deliver_sm - Zakładanie, że wszystkie SMSC obsługują potwierdzenia SME (0x02)
- Niezgodność flag
registered_deliveryiesm_class - Ignorowanie limitów SMSC dotyczących generowania potwierdzeń
Niektórzy dostawcy pobierają dodatkowe opłaty za potwierdzenia dostarczenia. Potwierdź cennik przed włączeniem.
Podsumowanie
Pole Registered Delivery jest niezbędne do śledzenia statusu dostarczenia SMS w SMPP. Podczas gdy podstawowa obsługa potwierdzeń (0x01) jest powszechnie obsługiwana,
zaawansowane funkcje, takie jak powiadomienia pośrednie, wymagają testów specyficznych dla SMSC. Zawsze implementuj solidne parsowanie potwierdzeń i powiązuj wiadomości
za pomocą message_id. Aby uzyskać szczegółowe informacje, zapoznaj się z sekcją 5.2.17 SMPP v3.4 i dokumentacją dostawcy.