Format raportu dostarczenia SMPP
Raporty dostarczenia SMPP są wysyłane przez serwer SMPP do klienta SMPP po pomyślnym dostarczeniu wiadomości tekstowej do telefonu. Oryginalna SMS jest przesyłana przez klienta SMPP przy użyciu żądania smpp submit_sm. Gdy submit_sm zostanie zaakceptowany przez serwer SMPP, zwraca on odpowiedź submit_sm_resp z identyfikatorem referencyjnym SMS. Raport dostarczenia przychodzi później. Zawiera czas dostarczenia oraz identyfikator referencyjny SMS, który identyfikuje wiadomość. Poniższy dokument wyjaśnia zawartość PDU raportu dostarczenia SMPP i przedstawia przykład raportu dostarczenia.
Jaki jest format raportu dostarczenia SMPP
Raport dostarczenia SMPP jest odbierany jako standardowa wiadomość tekstowa. Tekst wiadomości ma specjalny format, który zawiera różne pola dotyczące oryginalnie wysłanej SMS. Te pola mogą być używane do określenia stanu dostarczenia SMS.
Przykład raportu dostarczenia
Odebrano raport dostarczenia. +44251234567->+0000000 'Dostarczono; Do: +44251234567; O: 2022-10-03 12:07:00; Ref: 636445148; id:636445148 sub:000 dlvrd:001 data wysłania:2210031207 data wykonania:2210031207 stat:DELIVRD err: tekst:' Pomyślne dostarczenie zgłoszone do admin@localhost. ID zadania: cdfd66e1-880e-4ead-a559-7ca46d9ec669. Dostarczono; Do: +44251234567; O: 2022-10-03 12:07:00; Ref: 636445148; id:636445148 sub:000 dlvrd:001 data wysłania:2210031207 data wykonania:2210031207 stat:DELIVRD err: tekst:
Jak odebrać raport dostarczenia SMPP
Aby odebrać raport dostarczenia SMPP
- Połącz klienta SMPP
- Zbinduj jako transceiver
- Wyślij SMS przy użyciu PDU submit_sm
- Zapisz ID SMS z odpowiedzi submit_sm_resp
- Poczekaj, aż SMS dotrze do telefonu
- Odbierz PDU raportu dostarczenia SMS
- Dopasuj ID SMS do wysłanej wiadomości
- Zapisz znacznik czasu dostarczenia SMS
Parametry raportu dostarczenia SMPP
SMPP obsługuje potwierdzenia dostarczenia / raporty (DLR) dla wiadomości SMS, aby Twoja aplikacja mogła określić wynik dostarczenia.
Zwrot potwierdzenia dostarczenia / raportu (DLR) zależy od wartości ustawionej w polu registered_delivery wiadomości oryginalnie wysłanej z ESME do MC w operacji submit_sm. Może to być skonfigurowane dla scenariuszy braku dostarczenia i tylko dostarczenia, co może skutkować sytuacjami, w których potwierdzenie nie zostanie zwrócone. Potwierdzenia dostarczenia wiadomości są zwracane w operacjach deliver_sm i data_sm.
Następujące pola są istotne w operacjach deliver_sm i data_sm, gdy są używane do przesyłania potwierdzeń dostarczenia.
- adres źródłowy (tj. source_addr_ton, source_addr_npi, source_addr) - Adres źródłowy zostanie pobrany z adresu docelowego oryginalnej wiadomości krótkiej, która wygenerowała potwierdzenie dostarczenia. Potwierdzenie wygląda, jakby pochodziło od odbiorcy oryginalnej zarejestrowanej wiadomości.
- adres docelowy (tj. dest_addr_ton, dest_addr_npi, destination_addr) - Adres docelowy zostanie pobrany z adresu źródłowego oryginalnej wiadomości krótkiej, która wygenerowała potwierdzenie dostarczenia. Potwierdzenie jest adresowane do SME, które oryginalnie wysłało zarejestrowaną wiadomość.
- esm_class - Bit 2 esm_class jest ustawiony na 1, aby wskazać, że wiadomość jest potwierdzeniem dostarczenia MC. Jeśli bit 5 jest ustawiony, wiadomość jest Powiadomieniem Pośrednim.
- TLV message_state - Wskazuje końcowy stan oryginalnej wiadomości. Zobacz Stany wiadomości poniżej.
- TLV network_error_code - Zobacz Kody błędów poniżej.
- TLV receipted_message_id - ID wiadomości, które zostało zwrócone do ESME przez MC w PDU submit_sm_resp.
Potwierdzenie dostarczenia MC
Ten typ wiadomości jest używany do przenoszenia potwierdzenia dostarczenia MC. MC, po wykryciu końcowego stanu zarejestrowanej wiadomości, zwykle generuje nową wiadomość potwierdzenia adresowaną do nadawcy pierwszej wiadomości. Potwierdzenie dostarczenia MC jest następnie dostarczane do ESME w operacji deliver_sm lub data_sm.
ESME-do-MC: Ustaw bity 0 i 1 w polu registered_delivery operacji submit_sm, aby zażądać potwierdzenia dostarczenia MC.
Bit 1 | Bit 0 | Znaczenie |
---|---|---|
0 | 0 | brak potwierdzenia |
0 | 1 | potwierdzenie żądane, gdy końcowy wynik to sukces lub niepowodzenie dostarczenia |
1 | 0 | potwierdzenie żądane, gdy końcowy wynik to niepowodzenie dostarczenia |
1 | 1 | potwierdzenie żądane, gdy końcowy wynik to sukces dostarczenia (tylko SMPP v5) |
MC-do-ESME: Bit 2 w polu esm_class deliver_sm wskazuje, że potwierdzenie jest potwierdzeniem dostarczenia MC.
Powiadomienie Pośrednie
Powiadomienie pośrednie to specjalna forma wiadomości, którą MC może wysłać do ESME w przypadku dostarczenia wiadomości do odbiorcy mobilnego. Dostarcza ono pośredni status próby dostarczenia wiadomości.
Typowe zastosowania to raportowanie wyników prób dostarczenia wykonanych podczas okresu ponawiania wiadomości w MC. Może to być użyte do śledzenia różnych powodów, dla których wiadomość nie została dostarczona do celu, i wykorzystania tego do profilowania dostępności abonenta.
Obsługa funkcjonalności Powiadomień Pośrednich jest specyficzna dla implementacji MC i Dostawcy Usług MC i wykracza poza zakres tej specyfikacji.
ESME-do-MC: Ustaw bit 4 w polu registered_delivery PDU submit_sm, aby zażądać Powiadomienia Pośredniego.
MC-do-ESME: Bit 5 w polu esm_class deliver_sm wskazuje, że potwierdzenie jest Powiadomieniem Pośrednim.
Potwierdzenie odbioru w polu short_message
Wiele interfejsów API sprzed wersji 3.4 oraz centrów wiadomości obsługujących wersję 3.3 prawdopodobnie posiada sposób przekazywania informacji o potwierdzeniu odbioru w polu short_message.
Dotyczy to zarówno potwierdzeń dostarczenia MC, jak i powiadomień pośrednich. Szczegóły formatu tych informacji są zależne od bramki SMS oraz platformy SMSC i wykraczają poza zakres specyfikacji. Jednak poniżej przedstawiono typowe podejście:
id:123A456B sub:1 dlvrd:1 submit date:1702281424 done date:1702281424 stat:DELIVRD err:0 text:
Pola są określone następująco:
Pole
Rozmiar (oktety)
Opis
id
Zmienny
ID wiadomości przypisane przez SMSC podczas pierwotnego wysłania.
sub
3
Liczba pierwotnie wysłanych wiadomości krótkich. Wartość może być uzupełniona zerami wiodącymi.
dlvrd
3
Liczba dostarczonych wiadomości krótkich. Wartość może być uzupełniona zerami wiodącymi.
submit date
10
Czas i data wysłania wiadomości krótkiej. W przypadku wiadomości, która została zastąpiona, jest to data zastąpienia oryginalnej wiadomości. Format jest następujący:
RRMMDDggmm gdzie:
RR ostatnie dwie cyfry roku (00-99) MM = miesiąc (01-12)
DD dzień (01-31)
gg godzina (00-23)
mm minuta (00-59)
done date
10
Czas i data, w której wiadomość krótka osiągnęła swój końcowy stan. Format jest taki sam jak dla submit date.
stat
7
Końcowy status wiadomości. Patrz Stany wiadomości poniżej. Tekst stanu może być skrócony.
err
3
Kod błędu sieci lub SMSC dla wiadomości. Patrz Kody błędów poniżej.
text
20
Nieużywane pole, wynik będzie pusty.
Ulepszenia Ozeki SMPP
Po zaimplementowaniu bardzo dużej liczby połączeń SMPP, zidentyfikowaliśmy następujące problemy w różnych implementacjach:
Odkrycie 1:
Wartość pola ID w raporcie dostarczenia (które w Ozeki nazywamy Submit Reference) często różni się od ID otrzymanego od dostawcy usług SMS.
Najczęstsza różnica polega na tym, że oryginalne ID jest zwracane jako standardowa liczba całkowita, a ID w raporcie dostarczenia jest zwracane jako liczba szesnastkowa.
Może to również działać w odwrotną stronę. Dobrą wiadomością jest to, że w tej sytuacji, po konwersji, obie liczby pasują do siebie, więc raporty dostarczenia mogą być dopasowane.
Implementacje SMS Ozeki wykonują różne sprawdzenia i potrafią prawidłowo obsłużyć opisaną sytuację.
Odkrycie 2:
Wartości pól dat często występują w niestandardowych formatach. Ozeki obecnie
analizuje pola dat przy użyciu następujących wzorców. Możesz również zdefiniować własny
wzorzec pola daty w formularzu konfiguracyjnym oprogramowania.
- "yyMMddHHmm",
- "yyMMddHHmmss",
- "dd-MMM-yyHH:mm",
- "dd-MMM-yyHH:mm:ss",
- "dd-MMM-yy HH:mm",
- "dd-MMM-yy HH:mm:ss",
- "yyyyMMddHHmmss",
- "yyyyMMddHHmm",
- niestandardowy
Stany wiadomości
Poniżej znajduje się lista dopuszczalnych stanów dla krótkiej wiadomości. MC zwraca wartość message_state do ESME jako część PDU query_sm_resp, query_broadcast_sm_resp lub deliver_sm potwierdzenia dostarczenia.
Stany pośrednie to stany, które mogą ulec zmianie. Stany końcowe to stany, które reprezentują stan końcowy życia wiadomości.
Na przykład, wiadomość w stanie ponawiania może zwrócić stan ENROUTE. W pewnym momencie w przyszłości ta wiadomość wygaśnie lub zostanie dostarczona. Stan następnie przejdzie do EXPIRED lub DELIVERED. Zatem wiadomość w stanie ENROUTE jest uważana za stan pośredni.
Wiadomość w stanie DELIVERED lub EXPIRED nie może przejść do innego stanu. Te stany są zatem stanami końcowymi.
Stan wiadomości | Wartość | Typ |
---|---|---|
SCHEDULED | 0 | Pośredni |
Wiadomość jest zaplanowana. Dostarczenie nie zostało jeszcze zainicjowane. Wiadomość przesłana z zaplanowanym czasem dostarczenia może zwrócić ten stan podczas zapytania. Ta wartość została dodana dla SMPP v5.0. MC obsługujące wcześniejsze wersje SMPP v3.3 i SMPP v3.4 prawdopodobnie zwrócą ENROUTE dla wiadomości zaplanowanych. | ||
ENROUTE lub EN_ROUTE |
1 | Pośredni |
Wiadomość jest w stanie enroute. Jest to ogólny stan używany do opisania wiadomości jako aktywnej w MC. Wiadomość może być w trakcie ponawiania lub wysłana do sieci komórkowej w celu dostarczenia do odbiorcy. | ||
DELIVERED | 2 | Końcowy |
Wiadomość została dostarczona do odbiorcy. Wiadomość została dostarczona do celu. Nie będą podejmowane dalsze próby dostarczenia. | ||
EXPIRED | 3 | Końcowy |
Okres ważności wiadomości wygasł. Wiadomość nie została dostarczona w swoim okresie ważności i/lub okresie ponawiania. Nie będą podejmowane dalsze próby dostarczenia. | ||
DELETED | 4 | Końcowy |
Wiadomość została usunięta. Wiadomość została anulowana lub usunięta z MC. Nie będą podejmowane dalsze próby dostarczenia. | ||
UNDELIVERABLE | 5 | Końcowy |
Wiadomość jest niemożliwa do dostarczenia. Wiadomość napotkała błąd dostarczenia i jest uznawana za trwale niemożliwą do dostarczenia. Nie będą podejmowane dalsze próby dostarczenia. Pewne błędy sieciowe lub wewnętrzne MC skutkują trwałym niedostarczeniem wiadomości. Przykłady takich błędów to nieznany abonent lub błąd sieciowy wskazujący, że dany odbiorca mobilny został pozbawiony usługi SMS lub nie może jej obsługiwać. |
Kody błędów dostarczenia SMPP
Kody błędów zwracane w potwierdzeniach dostarczenia służą do wskazania sytuacji błędu napotkanej podczas próby dostarczenia wiadomości. Kody błędów są specyficzne dla bramki SMS i platformy SMSC. Jednak poniżej przedstawiono często stosowane podejście:
Kod Znaczenie 1 Numer MT jest nieznany w HLR sieci MT 2 Numer MT jest nieznany w HLR sieci MT 5 Numer MT jest nieznany w MSC sieci MT 9 Numer MT jest klasyfikowany jako nielegalny abonent w MSC sieci MT 11 MT HLR zwraca błąd „Teleservice not provisioned” w odpowiedzi na SRI 12 Urządzenie MT jest oznaczone jako nielegalne w MSC. 13 Klient jest zablokowany według HLR MT z powodu otrzymywania SMS 15 Klient MT jest częścią CUG, który nie może otrzymywać SMS 21 SMS nie jest obsługiwany w sieci MT. 22 SMS nie jest obsługiwany w MSC MT 31 Urządzenie MT jest zajęte. Kanał sterowania sygnalizacją jest w użyciu. (Prawdopodobnie odbiera inny SMS w tym samym czasie) 32 GPRS – Jak powyżej 34 Awaria systemu w sieci MT. 35 Brak danych w HLR lub MSC MT 36 Nieoczekiwana wartość danych otrzymana w odpowiedzi na FSM lub SRI 40 Przekroczona pojemność pamięci w urządzeniu MT 41 Błąd protokołu w urządzeniu MT 42 Urządzenie MT nie jest wyposażone do obsługi SMS 43 Typ wiadomości krótkiej „0” nie jest obsługiwany przez urządzenie MT. 44 Sieć MT nie może zastąpić SMS na urządzeniu klienta MT 45 Nieokreślony błąd protokołu w urządzeniu MT 46 Klasa wiadomości nie jest obsługiwana przez urządzenie MT 47 Nieokreślony błąd DCS (schemat kodowania danych) w urządzeniu MT 48 PDU warstwy transferowej nie jest obsługiwane przez urządzenie MT 49 Karta SIM pełna w urządzeniu MT 50 Karta SIM w urządzeniu MT nie może przechować wiadomości 51 Błąd w urządzeniu MT 52 Przekroczona pojemność pamięci w urządzeniu MT 53 Aplikacja SIM toolkit zajęta w urządzeniu MS 54 Błąd pobierania danych SIM w urządzeniu klienta MT 55 Nieokreślony błąd urządzenia MS 60 Abonent nieobecny. Przyczyna nieznana 61 Abonent nieobecny z powodu wyłączenia telefonu 62 Abonent nieobecny z powodu braku zasięgu/rozładowanej baterii 63 Abonent nieobecny z powodu ograniczenia roamingu/obszaru ograniczonego 64 Abonent nieobecny z powodu wyrejestrowania w HLR 65 Abonent nieobecny z powodu usunięcia w VLR (wyłączony przez 24+ godziny) 66 Abonent nieobecny (GPRS) nie może być przywołany przez SGSN 67 Abonent nieobecny z powodu odłączenia GPRS 68 Abonent nieobecny z powodu wyrejestrowania w HLR (GPRS) 69 Abonent nieobecny z powodu usunięcia GPRS MS w VLR 70 Abonent nieobecny z powodu nieznanego abonenta w MSC, do którego wysłano FSM. 71 Abonent nieobecny z powodu nieznanego abonenta w SGSN
Jak testować raporty dostarczenia SMPP
Możesz utworzyć konfigurację symulatora SMPP, aby testować raporty dostarczenia SMS. W symulatorze połączenie testera może zwracać raporty dostarczenia udane i nieudane. Zrobi to, jeśli skonfigurujesz „Żądanie raportu dostarczenia” na karcie „Zaawansowane” formularza konfiguracyjnego połączenia SMPP Tester. Jeśli ta opcja jest włączona, raport dostarczenia zostanie zwrócony dla każdego przesłanego SMS w losowym późniejszym terminie z losowym statusem udanego lub nieudanego dostarczenia.
FAQ
Co to jest raport dostawy?
Podczas wysyłania wiadomości SMS potwierdzenie jej dotarcia do telefonu odbiorcy jest kluczowe. SMS wykorzystuje dwuetapowy system potwierdzenia, aby to zapewnić.
Po przesłaniu wiadomości do Centrum Usług Wiadomości Krótkich (SMSC) sieci komórkowej, otrzymujesz „raport o przesłaniu wiadomości”. Ten raport oznacza, że SMSC zaakceptowało Twoją wiadomość do dostarczenia. Zawiera on również unikalny identyfikator, często nazywany „referencją wiadomości” lub „callback ID”, który umożliwia śledzenie wiadomości w systemie SMSC.
Po zaakceptowaniu wiadomość jest przechowywana w SMSC, aż będzie możliwe jej dostarczenie. Może to być opóźnione, jeśli telefon odbiorcy jest wyłączony, co może wydłużyć czas oczekiwania nawet do kilku dni.
Gdy telefon odbiorcy stanie się dostępny, wiadomość zostanie dostarczona. Po pomyślnym dostarczeniu „raport dostawy” jest wysyłany z powrotem do nadawcy jako oddzielna wiadomość SMS.
Ta potwierdzająca wiadomość SMS zawiera:
- Numer telefonu odbiorcy: Potwierdza, że wiadomość dotarła do zamierzonego odbiorcy.
- Referencję wiadomości (callback ID): Pasuje do identyfikatora z oryginalnego raportu przesłania, zapewniając jasne powiązanie między obydwoma etapami.
- Znacznik czasu dostarczenia: Podaje dokładny czas, w którym wiadomość dotarła do telefonu odbiorcy.
Czy mogę dostosować, jak długo wiadomość jest przechowywana w SMSC?
Chociaż wiadomości SMS oferują wygodny sposób komunikacji, kluczowe jest zapewnienie, że wiadomość dotrze do odbiorcy na czas. Tutaj pojawia się koncept „okresu ważności”.
Okres ważności odnosi się do czasu, przez jaki wiadomość SMS jest przechowywana w Centrum Usług Wiadomości Krótkich (SMSC), gdy telefon odbiorcy jest niedostępny. Jeśli wiadomość pozostanie niedostarczona po upływie tego okresu, jest automatycznie usuwana z SMSC, zapobiegając opóźnionej dostawie.
Korzyści z wykorzystania okresu ważności:
- Wiadomości czasowo wrażliwe: Wyobraź sobie wysłanie SMS-a dotyczącego wydarzenia czasowo wrażliwego, np. programu na żywo w TV. Ustawienie odpowiedniego okresu ważności zapewnia, że wiadomość nie zostanie dostarczona po zakończeniu wydarzenia, czyniąc ją nieaktualną.
- Efektywność sieci: Zapobiegając niepotrzebnym próbom dostarczenia do niedostępnych telefonów, okres ważności optymalizuje zasoby sieci.
Należy pamiętać, że nie wszystkie sieci komórkowe oferują konfigurowalne przez użytkownika okresy ważności, a niektóre mogą wymagać aktywacji przez użytkownika raportów dostawy (potwierdzenia, że wiadomość dotarła do odbiorcy).
More information
- Specyfikacja SMPP
- Porównanie wersji protokołu SMPP
- Logowanie PDU SMPP
- Jak używać API SMPP z językami programowania
- Bezpieczne połączenie SMPP przez SSL TLS
- Format raportu dostarczenia SMPP
- Co to jest symulator SMPP
- Kody błędów SMPP
- Jak wysłać testową wiadomość SMS przez SMPP
- Dekodowanie PDU SMPP
- Kodowanie znaków SMPP
- SMPP wireshark