Jak odbierać SMS-y za pomocą interfejsu SMPP API

Protokół Short Message Peer-to-Peer (SMPP) to zaawansowany, branżowy standard zaprojektowany w celu ułatwienia wymiany wiadomości SMS między External Short Message Entities (ESMEs) a Short Message Service Centers (SMSCs). Dla deweloperów i firm wykorzystujących SMPP API z Ozeki SMS Gateway jako główną platformę, zrozumienie niskopoziomowych operacji protokołu jest kluczowe dla budowania solidnych rozwiązań SMS. Ten artykuł stanowi kompleksowy przewodnik na temat odbierania wiadomości SMS za pomocą SMPP API, skupiając się na interakcjach na poziomie protokołu oraz konkretnych jednostkach danych protokołu (PDU) zaangażowanych w konfigurację, utrzymanie i wykorzystanie połączenia klienta SMPP API z Ozeki SMS Gateway.

Wprowadzenie do SMPP API i Ozeki SMS Gateway

SMPP API jest powszechnie stosowany w branży telekomunikacyjnej ze względu na swoją efektywność w obsłudze masowych wiadomości SMS przez połączenia TCP/IP. Ozeki SMS Gateway, wszechstronne oprogramowanie SMPP, działa zarówno jako klient, jak i serwer SMPP, co czyni je idealną platformą do wysyłania i odbierania wiadomości SMS. Implementując protokół SMPP (wersje 3.3 i 3.4, z obsługą 5.0 w Ozeki 10 SMS Gateway), Ozeki umożliwia płynną łączność z SMSCs, wspierając aplikacje takie jak kampanie marketingowe, uwierzytelnianie dwuskładnikowe i systemy powiadomień. Ten artykuł koncentruje się na odbieraniu wiadomości SMS, szczegółowo opisując PDU SMPP wymagane do nawiązania połączenia, jego utrzymania i odbioru wiadomości.

Zrozumienie PDU SMPP

SMPP działa poprzez wymianę jednostek danych protokołu (PDU) między klientem SMPP (np. Ozeki SMS Gateway) a serwerem SMPP (np. SMSC). Każde PDU to strukturalna wiadomość niosąca konkretne instrukcje lub dane, takie jak dane uwierzytelniające, treść SMS-a lub zapytania o status połączenia. Aby odbierać wiadomości SMS za pomocą SMPP API, klient musi nawiązać połączenie, utrzymać je i przetwarzać przychodzące wiadomości. Kluczowe PDU zaangażowane w ten proces to:

  • bind_transceiver: Nawiązuje połączenie zarówno do wysyłania, jak i odbierania SMS-ów.
  • enquire_link: Utrzymuje połączenie poprzez sprawdzanie jego statusu.
  • deliver_sm: Dostarcza przychodzące wiadomości SMS z SMSC do klienta.
  • unbind: Kończy sesję SMPP.

Poniżej szczegółowo omówimy każde PDU, w tym ich strukturę, konfigurację w Ozeki SMS Gateway oraz ich rolę w odbieraniu wiadomości SMS za pośrednictwem SMPP API.

Konfiguracja połączenia klienta SMPP API

Aby odbierać wiadomości SMS, pierwszym krokiem jest nawiązanie stabilnego połączenia klienta SMPP API z SMSC. Ozeki SMS Gateway upraszcza ten proces dzięki intuicyjnemu interfejsowi, ale zrozumienie operacji na poziomie protokołu jest kluczowe dla zaawansowanych użytkowników.

1. Konfiguracja klienta SMPP w Ozeki SMS Gateway

Aby skonfigurować połączenie klienta SMPP API w Ozeki SMS Gateway, wykonaj następujące kroki:

  1. Zaloguj się do konsoli zarządzania: Uzyskaj dostęp do interfejsu webowego Ozeki SMS Gateway za pomocą konta administratora (domyślna nazwa użytkownika: "admin").
  2. Dodaj nowe połączenie: Przejdź do panelu "Połączenia", kliknij "Dodaj nowe połączenie" i wybierz "Klient SMPP" z sekcji "Połączenia SMS IP".
  3. Skonfiguruj ustawienia SMPP: Podaj następujące dane, zwykle dostarczane przez dostawcę usług SMS:
    • Nazwa hosta: Adres IP lub nazwa hosta SMSC (np. "192.168.1.1").
    • Numer portu: Port TCP/IP do komunikacji SMPP (domyślnie 9500, ale potwierdź u dostawcy).
    • Nazwa użytkownika (System ID): Identyfikator Twojego konta w SMSC.
    • Hasło: Hasło powiązane z System ID.
    • Wersja SMPP: Wybierz v3.4 dla obsługi transceivera (zalecane do wysyłania i odbierania).
    • Typ systemu: Opcjonalne, często "SMPP", jak określone przez dostawcę.
    • Adres nadawcy: Domyślny numer telefonu dla wychodzących SMS (np. "+1234567890").
    • Zakres adresów: Opcjonalne, używane do odbierania wiadomości z wielu numerów.
  4. Tryb powiązania: Wybierz "Transceiver", aby umożliwić zarówno wysyłanie, jak i odbieranie SMS przez jedno połączenie.
  5. Ustawienia zaawansowane: Włącz "Automatyczne łączenie przy starcie" dla płynnego ponownego łączenia i zaznacz "Wysyłaj pakiety keepalive", aby utrzymać połączenie.
  6. Włącz logowanie: W zakładce "Zaawansowane" włącz "Loguj zdarzenia komunikacyjne", aby rejestrować PDU SMPP do debugowania.
  7. Zapisz i połącz: Kliknij "OK", aby zapisać konfigurację, a następnie "Połącz", aby zainicjować połączenie.

Te ustawienia przygotowują Ozeki SMS Gateway do nawiązania połączenia SMPP API przy użyciu PDU bind_transceiver.

2. PDU bind_transceiver

PDU bind_transceiver to pierwsze PDU wysyłane przez klienta SMPP w celu uwierzytelnienia i nawiązania połączenia z SMSC. Umożliwia zarówno wysyłanie, jak i odbieranie wiadomości SMS przez jedno połączenie TCP/IP, co czyni je idealnym dla większości aplikacji SMPP API.

Struktura PDU bind_transceiver

Długość polecenia: 4 bajty (całkowita długość PDU)
ID polecenia: 0x00000009 (bind_transceiver)
Status polecenia: 0x00000000 (ustawione na 0 dla żądań)
Numer sekwencji: Unikalny identyfikator PDU
System ID: Nazwa użytkownika do uwierzytelnienia (np. "smppuser")
Hasło: Hasło do uwierzytelnienia (np. "password123")
Typ systemu: Opcjonalne, często "SMPP"
Wersja interfejsu: Wersja SMPP (np. 0x34 dla v3.4)
Zakres adresów: Opcjonalne, do odbierania wiadomości z określonych numerów

Przykładowe PDU bind_transceiver (szesnastkowo):

0000002F 00000009 00000000 00000001 736D70707573657200 70617373776F726431323300 534D505000 34 00

Wyjaśnienie:

  • Długość polecenia (0000002F): Całkowita długość PDU (47 bajtów).
  • ID polecenia (00000009): Identyfikuje PDU jako bind_transceiver.
  • Status polecenia (00000000): Ustawione na 0 dla żądania.
  • Numer sekwencji (00000001): Unikalny ID do śledzenia PDU.
  • System ID (736D70707573657200): ASCII dla "smppuser" zakończone null.
  • Hasło (70617373776F726431323300): ASCII dla "password123" zakończone null.
  • Typ systemu (534D505000): ASCII dla "SMPP" zakończone null.
  • Wersja interfejsu (34): Wskazuje SMPP v3.4.
  • Zakres adresów (00): Null, ponieważ jest opcjonalne.

Po otrzymaniu PDU bind_transceiver, SMSC weryfikuje dane uwierzytelniające. Jeśli są poprawne, odpowiada PDU bind_transceiver_resp ze statusem polecenia 0x00000000, co oznacza udane połączenie. Ozeki SMS Gateway rejestruje tę interakcję, którą można obejrzeć w dzienniku "Zdarzenia komunikacyjne".

Utrzymanie połączenia SMPP API

Po nawiązaniu połączenia musi ono być utrzymywane, aby zapewnić ciągłe odbieranie SMS. Protokół SMPP używa PDU enquire_link do weryfikacji stanu połączenia i zapobiegania rozłączeniu z powodu braku aktywności.

PDU enquire_link

PDU enquire_link to lekki komunikat wysyłany okresowo przez klienta SMPP do SMSC w celu potwierdzenia, że połączenie jest aktywne. Jest to szczególnie ważne dla utrzymania długotrwałych połączeń, ponieważ serwery proxy lub SMSC mogą zakończyć nieaktywne połączenia.

Struktura PDU enquire_link

Długość polecenia: 0x00000010 (16 bajtów)
ID polecenia: 0x00000015 (enquire_link)
Status polecenia: 0x00000000 (ustawione na 0 dla żądań)
Numer sekwencji: Unikalny identyfikator PDU

Przykładowe PDU enquire_link (szesnastkowo):

00000010 00000015 00000000 00000002

Wyjaśnienie:

  • Długość polecenia (00000010): Całkowita długość (16 bajtów).
  • ID polecenia (00000015): Identyfikuje PDU jako enquire_link.
  • Status polecenia (00000000): Ustawione na 0 dla żądania.
  • Numer sekwencji (00000002): Unikalny ID do śledzenia PDU.

SMSC odpowiada PDU enquire_link_resp, potwierdzając stan połączenia. W Ozeki SMS Gateway włączenie opcji "Wysyłaj pakiety keepalive" w zakładce "Komunikacja" zapewnia automatyczne wysyłanie PDU enquire_link w regularnych odstępach czasu (np. co 30 sekund). To ustawienie jest kluczowe dla utrzymania stabilnego połączenia SMPP API, szczególnie przy sporadycznym odbieraniu wiadomości SMS.

Odbieranie wiadomości SMS za pomocą interfejsu SMPP API

Po nawiązaniu i utrzymaniu połączenia, klient SMPP API może odbierać wiadomości SMS za pomocą PDU deliver_sm. To PDU jest wysyłane przez SMSC do klienta, gdy dostępna jest przychodząca wiadomość SMS lub raport dostawy.

PDU deliver_sm

PDU deliver_sm przenosi treść przychodzącej wiadomości SMS lub raportu dostawy. W przypadku odbierania SMS, PDU zawiera numer telefonu nadawcy, numer odbiorcy (wirtualny numer przypisany przez dostawcę) oraz tekst wiadomości.

Struktura PDU deliver_sm

Długość polecenia: Zmienna (zależy od długości wiadomości)
ID polecenia: 0x00000005 (deliver_sm)
Status polecenia: 0x00000000 (ustawione na 0 dla żądań)
Numer sekwencyjny: Unikalny identyfikator PDU
Typ usługi: Opcjonalny, często null
TON adresu źródłowego: Typ numeru nadawcy
NPI adresu źródłowego: Wskaźnik planu numeracji nadawcy
Adres źródłowy: Numer telefonu nadawcy (np. "+1234567890")
TON adresu docelowego: Typ numeru odbiorcy
NPI adresu docelowego: Wskaźnik planu numeracji odbiorcy
Adres docelowy: Numer telefonu odbiorcy (np. numer wirtualny)
Klasa ESM: Typ wiadomości (np. 0x04 dla SMS)
Kodowanie danych: Kodowanie znaków (np. 0x00 dla GSM 7-bit)
Krótka wiadomość: Tekst wiadomości (do 160 znaków dla GSM)

Przykładowe PDU deliver_sm (szesnastkowo):

0000005F 00000005 00000000 00000003 00 01 01 2B3132333435363738393000 01 01 2B3938373635343332313000 00 00 00 00 00 48656C6C6F2C207468697320697320616E20534D5321

Wyjaśnienie:

  • Długość polecenia (0000005F): Całkowita długość (95 bajtów).
  • ID polecenia (00000005): Identyfikuje PDU jako deliver_sm.
  • Status polecenia (00000000): Ustawione na 0 dla żądania.
  • Numer sekwencyjny (00000003): Unikalny ID do śledzenia PDU.
  • Typ usługi (00): Null, ponieważ jest opcjonalny.
  • TON adresu źródłowego (01): Numer międzynarodowy.
  • NPI adresu źródłowego (01): Plan numeracji ISDN/telefoniczny.
  • Adres źródłowy (2B3132333435363738393000): ASCII dla "+1234567890".
  • TON adresu docelowego (01): Numer międzynarodowy.
  • NPI adresu docelowego (01): Plan numeracji ISDN/telefoniczny.
  • Adres docelowy (2B3938373635343332313000): ASCII dla "+9876543210".
  • Klasa ESM (00): Wskazuje standardowy SMS.
  • Kodowanie danych (00): Kodowanie GSM 7-bit.
  • Krótka wiadomość (48656C6C6F2C207468697320697320616E20534D5321): ASCII dla "Hello, this is an SMS!".

Po otrzymaniu PDU deliver_sm, Ozeki SMS Gateway przetwarza wiadomość i kieruje ją do skonfigurowanej aplikacji lub bazy danych. Klient musi odpowiedzieć PDU deliver_sm_resp, aby potwierdzić odbiór, zapewniając niezawodną dostawę. W Ozeki ta odpowiedź jest obsługiwana automatycznie, a wiadomość jest logowana w panelu "Wiadomości" lub zapisywana w bazie danych, jeśli jest skonfigurowana.

Konfiguracja Ozeki SMS Gateway do odbioru SMS

Aby zapewnić, że Ozeki SMS Gateway może odbierać wiadomości SMS:

  1. Konfiguracja numeru wirtualnego: Współpracuj z dostawcą usług SMS, aby przypisać numer wirtualny (IMSI) do odbioru SMS. Ten numer jest określony w polu "Zakres adresów" podczas konfiguracji.
  2. Integracja z bazą danych: Skonfiguruj Ozeki do przechowywania przychodzących wiadomości w bazie danych, modyfikując instrukcję SQL SELECT w konfiguracji "Użytkownik bazy danych" (np. "SELECT id, sender, receiver, msg, msgtype FROM ozekimessagein").
  3. Logowanie: Włącz logowanie PDU SMPP, aby monitorować przychodzące PDU deliver_sm w celach debugowania.

Po skonfigurowaniu, przychodzące wiadomości SMS są automatycznie kierowane do określonej aplikacji lub bazy danych, czyniąc Ozeki SMS Gateway solidną platformą do odbioru SMS za pomocą interfejsu SMPP API.

Zakończenie połączenia SMPP API

Gdy sesja SMPP API nie jest już potrzebna, klient wysyła PDU unbind, aby elegancko zakończyć połączenie.

PDU unbind

PDU unbind sygnalizuje SMSC zamknięcie sesji SMPP.

Struktura PDU unbind

Długość polecenia: 0x00000010 (16 bajtów)
ID polecenia: 0x00000006 (unbind)
Status polecenia: 0x00000000 (ustawione na 0 dla żądań)
Numer sekwencyjny: Unikalny identyfikator PDU

Przykładowe PDU unbind (szesnastkowo):

00000010 00000006 00000000 00000004

Wyjaśnienie:

  • Długość polecenia (00000010): Całkowita długość (16 bajtów).
  • ID polecenia (00000006): Identyfikuje PDU jako unbind.
  • Status polecenia (00000000): Ustawione na 0 dla żądania.
  • Numer sekwencyjny (00000004): Unikalny ID do śledzenia PDU.

SMSC odpowiada PDU unbind_resp, potwierdzając zakończenie sesji. W Ozeki SMS Gateway możesz zainicjować to, klikając "Rozłącz" w panelu "Połączenia".

Najlepsze praktyki dla użytkowników SMPP API

Aby zoptymalizować implementację SMPP API z Ozeki SMS Gateway do odbioru SMS:

  • Włącz pakiety keepalive: Upewnij się, że opcja "Wysyłaj pakiety keepalive" jest włączona, aby utrzymać stabilne połączenie.
  • Monitoruj logi: Regularnie sprawdzaj logi PDU SMPP, aby rozwiązywać problemy z PDU bind_transceiver, enquire_link lub deliver_sm.
  • Używaj trybu transceiver: Preferuj tryb transceiver dla efektywności, ponieważ obsługuje zarówno wysyłanie, jak i odbieranie przez jedno połączenie.
  • Bezpieczne połączenia: Jeśli to możliwe, używaj SMPPS (SMPP przez SSL/TLS) do szyfrowanej komunikacji.
  • Obsługuj raporty dostawy: Skonfiguruj Ozeki do przetwarzania PDU deliver_sm zawierających raporty dostawy, aby śledzić status wiadomości.
Podsumowanie

Odbieranie wiadomości SMS za pomocą interfejsu SMPP z bramką SMS Ozeki polega na nawiązaniu połączenia za pomocą PDU bind_transceiver, utrzymaniu go za pomocą PDU enquire_link oraz przetwarzaniu przychodzących wiadomości za pomocą PDU deliver_sm. Zrozumienie tych PDU i odpowiednia konfiguracja bramki SMS Ozeki pozwala programistom tworzyć niezawodne i wydajne aplikacje SMS. Elastyczność interfejsu SMPP oraz solidna implementacja Ozeki sprawiają, że jest to doskonały wybór dla firm wymagających skalowalnych rozwiązań SMS. Aby uzyskać więcej szczegółów, zapoznaj się z dokumentacją bramki SMS Ozeki lub skontaktuj się z dostawcą usług SMS w celu uzyskania konkretnych parametrów konfiguracyjnych.

More information