Jak skonfigurować pola numeru telefonu w SMPP

SMPP (Short Message Peer-to-Peer) to protokół używany przez systemy telekomunikacyjne do wymiany wiadomości SMS między SMSC (Short Message Service Centers) a ESME (External Short Messaging Entities). Kluczowym elementem protokołu jest sposób kodowania numerów telefonów (adresów źródłowych i docelowych) w SMPP PDU (Protocol Data Unit).

Parametry adresu w SMPP

Główne pola używane do definiowania numeru telefonu w SMPP to:

  • addr_ton (Type of Number)
  • addr_npi (Numbering Plan Indicator)
  • address_range lub source_addr/destination_addr

Type of Number (TON)

To pole definiuje format numeru. Typowe wartości to:

WartośćTONOpis
0NieznanyNieznany format
1MiędzynarodowyNumer zawiera kod kraju
2KrajowyLokalny format numeru
5AlfanumerycznyUżywany dla nazw nadawców, np. "MojaFirma"

Numbering Plan Indicator (NPI)

To pole wskazuje format numeracji. Typowe wartości:

WartośćNPIOpis
0NieznanyNieznany format
1ISDN (E.164)Standardowy międzynarodowy format numeru telefonu
3DaneSieć danych (X.121)

Kodowanie adresu

Podczas kodowania numeru telefonu w SMPP system wysyła numer jako ciąg znaków ASCII zakończony znakiem NULL, wraz z odpowiednimi wartościami TON i NPI.

Przykład:

Numer telefonu: +14155552671
TON: 1 (Międzynarodowy)
NPI: 1 (ISDN/E.164)
Zakodowany jako: 31 34 31 35 35 35 35 32 36 37 31 00  (ASCII "14155552671" + NULL)

Przykładowe SMPP PDU

Poniżej znajduje się przykład PDU submit_sm zawierającego numer docelowy:

0000003F  // Długość polecenia (63 bajty)
00000004  // ID polecenia (submit_sm)
00000000  // Status polecenia
00000001  // Numer sekwencyjny
74657374  // service_type: "test"
01        // source_addr_ton: Międzynarodowy
01        // source_addr_npi: ISDN
31323334  // source_addr: "1234" (ASCII)
00        // NULL terminator
01        // dest_addr_ton: Międzynarodowy
01        // dest_addr_npi: ISDN
2B393138  // destination_addr: "+918123456789" (ASCII, bez +)
31323334
35363738
3900      // NULL terminator
00        // esm_class
00        // protocol_id
00        // priority_flag
00        // schedule_delivery_time (null)
00        // validity_period (null)
00        // registered_delivery
00        // replace_if_present_flag
00        // data_coding (domyślnie GSM)
00        // sm_default_msg_id
0D        // sm_length (13)
48656C6C  // Short message ("Hello, World!")
6F2C2057
6F726C64
2100

Przykład nadawcy alfanumerycznego

Przy użyciu alfanumerycznej nazwy nadawcy (częste dla masowych SMS-ów jednokierunkowych):

Nadawca: "MyBrand"
TON: 5 (Alfanumeryczny)
NPI: 0 (Nieznany lub nieistotny)
Zakodowany: ciąg ASCII "MyBrand" + NULL terminator

Ważne uwagi

  • Alfanumeryczne identyfikatory nadawcy muszą mieć 11 znaków lub mniej.
  • Adresy alfanumeryczne nie są obsługiwane we wszystkich krajach.
  • Zawsze dopasuj TON i NPI poprawnie do formatu adresu, aby uniknąć problemów z routingiem.

Podsumowanie

Kodowanie numerów w SMPP jest kluczowe dla zapewnienia prawidłowej dostawy wiadomości. Ustawiając poprawne wartości TON, NPI i kodując adres poprawnie w ASCII (zakończony NULL), programiści mogą zapewnić kompatybilność z SMSC i sieciami komórkowymi.

More information