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ść | TON | Opis |
|---|---|---|
| 0 | Nieznany | Nieznany format |
| 1 | Międzynarodowy | Numer zawiera kod kraju |
| 2 | Krajowy | Lokalny format numeru |
| 5 | Alfanumeryczny | Używany dla nazw nadawców, np. "MojaFirma" |
Numbering Plan Indicator (NPI)
To pole wskazuje format numeracji. Typowe wartości:
| Wartość | NPI | Opis |
|---|---|---|
| 0 | Nieznany | Nieznany format |
| 1 | ISDN (E.164) | Standardowy międzynarodowy format numeru telefonu |
| 3 | Dane | Sieć 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.