Specyfikacja techniczna SMPP

Pokaż jako Markdown

Poznaj specyfikację techniczną rozwiązania SMPP OVHcloud

Wprowadzenie

Poznaj specyfikację techniczną rozwiązania SMPP OVHcloud.

Glosariusz

  • PDU: Protocol Data Unit to obiekt/jednostka służąca do wymiany żądań i odpowiedzi
  • SMPP: Short Message Peer to Peer Protocol
  • SMSC: Short Message Service Centre (serwer)
  • ESME: External Short Message Entity (klient)
  • UDH: User Data Header
  • SM: Short Message
  • DLR: Delivery Receipt
  • PTT: Premium Tracking Technical to kod błędu przekazywany w treści DLR
  • MT: Mobile Terminated
  • MO: Mobile Originated

Aby uzyskać więcej informacji na temat skrótów, zapoznaj się ze stroną 10 specyfikacji SMPP serwisu smpp.org.

Prezentacja

Do czego służy SMPP?

SMPP (Short Message Peer-to-Peer) to protokół umożliwiający wymianę wiadomości SMS z operatorami telefonicznymi oraz przez dostawców treści. Zazwyczaj wykorzystuje dwa połączenia TCP/IP: jedno do wysyłania, drugie do odbierania danych.

Jakie są korzyści z SMPP w porównaniu ze standardową ofertą SMS?

  • Protokół jest ustandaryzowany i umożliwia integrację z wieloma narzędziami dostępnymi na rynku
  • Zapewnia wysoką przepustowość przy niskim opóźnieniu

Jak wygląda typowe zastosowanie wysyłania SMS przez SMPP?

Aplikacja klienta do wysyłania SMS (ESME) ma trzy sposoby komunikacji z SMSC:

  • Transmitter: wysyłanie wiadomości
  • Receiver: odbieranie wiadomości
  • Transceiver: wysyłanie i odbieranie wiadomości
Info

Więcej informacji o sposobach komunikacji znajdziesz w rozdziale Lista PDU.

Po nawiązaniu połączenia między ESME a SMSC OVHcloud można wysyłać i/lub odbierać wiadomości.

Uwierzytelnianie połączenia z SMSC odbywa się za pomocą system_id (identyfikator), password oraz adresu IP Twojej aplikacji.

Rozwiązanie SMPP OVHcloud umożliwia:

  • Wysyłanie wiadomości SMS z potwierdzeniem odbioru (DLR) lub bez niego
  • Odbieranie wiadomości wysłanej z telefonu komórkowego
SourceDestination
Wysłanie SMS (MT)- Shortcode (Francja metropolitalna i Belgia)
- Alfanumeryczny
- Numer wirtualny*
Numer międzynarodowy w formacie E.164
Wysłanie SMS umożliwiającego odpowiedź- Shortcode (Francja metropolitalna)Numer międzynarodowy w formacie E.164
Wysłanie SMS umożliwiającego odpowiedź ze stosunkiem MT/MO 1:1- Numer wirtualny*Numer wirtualny*
Odebranie SMS wysłanego z telefonu komórkowego (MO)- Numer telefonu komórkowegoNumer wirtualny*

Numer wirtualny*: wyłącznie kanał transakcyjny

Specyfikacja techniczna

Opis protokołów

Bind Request

ESME może połączyć się w jednym z trzech trybów: Transmitter, Receiver, Transceiver.

Te żądania połączenia są obsługiwane zgodnie ze specyfikacją protokołu SMPP v3.4.

Bind Response

Podczas procesu logowania ESME wysyła żądanie Bind, podając system_id (identyfikator) oraz swoje password.

Te informacje, wraz z IP Twojej aplikacji, służą do uwierzytelnienia żądania połączenia.

Następnie SMSC wysyła odpowiedź ze statusem określającym, czy uwierzytelnianie powiodło się, czy nie.

Lista PDU

bind_transceiver i bind_transceiver_resp

Ten typ bind służy do zainicjowania połączenia umożliwiającego dwukierunkową komunikację między SMSC a ESME (jest to połączenie trybów transmitter i receiver).

bind_transmitter i bind_transmitter_resp

Ten typ bind służy do zainicjowania połączenia umożliwiającego wyłącznie komunikację z ESME do SMSC (wysyłanie SMS na telefon komórkowy). SMSC wysyła odpowiedzi powiązane z żądaniami PDU za pośrednictwem tego samego połączenia.

bind_receiver i bind_receiver_resp

Ten typ bind służy do zainicjowania połączenia umożliwiającego wyłącznie komunikację z SMSC do ESME (wysyłanie potwierdzenia odbioru (DLR) lub wiadomości wysłanych z telefonu komórkowego). ESME wysyła odpowiedzi powiązane z żądaniami PDU za pośrednictwem tego samego połączenia.

unbind i unbind_resp

Żądanie zamknięcia połączenia inicjowane przez SMSC lub ESME. Strona otrzymująca żądanie odsyła odpowiedź, gdy jest gotowa do przerwania połączenia.

SMSC OVHcloud zamyka (unbind) połączenia co 24 godziny; ESME musi połączyć się ponownie automatycznie.

outbind

Nieobsługiwany

submit_sm i submit_sm_resp

submit_sm jest używany przez ESME do przesłania SMS do SMSC w celu przekazania go na numer telefonu komórkowego.

Parametry obowiązkowe:

Nazwa parametruRef. Spec 3.4Obsługiwany
service_type5.2.11Nie
source_addr_ton5.2.5Tak
source_addr_npi5.2.6Tak
source_addr5.2.8Tak
dest_addr_ton5.2.5Tak
dest_addr_npi5.2.6Tak
destination_addr5.2.9Tak
esm_class5.2.12Tak
protocol_id5.2.13Nie
priority_flag5.2.14Nie
schedule_delivery_time5.2.15Tak
validity_period5.2.16Tak
registered_delivery5.2.17Tak
replace_if_present_flag5.2.18Nie
data_coding5.2.19Tak
sm_default_msg_id5.2.20Nie
sm_length5.2.21Tak
short_message5.2.22Tak
  • source_addr może być numerem międzynarodowym, numerem alfanumerycznym lub numerem shortcode:
    • alfanumeryczny: te numery telefonu składają się z liter i cyfr (np. ovh123).
      • source_addr_ton = 5
      • source_addr_npi = 0
    • shortcode: te numery telefonu zawierają od 3 do 8 cyfr (np. 38069). Shortcode służy jedynie do poinformowania naszej usługi, że będziemy musieli go użyć. Rzeczywisty shortcode użyty do wysłania SMS zostanie określony przez operatora telekomunikacyjnego.
      • source_addr_ton = 3
      • source_addr_npi = 1
    • międzynarodowy: te numery telefonu składają się z identyfikatora kraju i zwykłego numeru bez początkowego 0 (na przykład 33601020304).
      • source_addr_ton = 1
      • source_addr_npi = 1
  • destination_addr musi być numerem międzynarodowym (np. 33600000001)
    • dest_addr_ton = 1
    • dest_addr_npi = 1

Parametry opcjonalne:

Nazwa parametruRef. Spec 3.4Obsługiwany
user_message_reference5.3.2.17Nie
source_port5.3.2.20Nie
source_addr_subunit5.3.2.2Nie
destination_port5.3.2.21Nie
dest_addr_subunit5.3.2.1Tak
sar_msg_ref_num5.3.2.22Nie
sar_total_segments5.3.2.23Nie
sar_segment_seqnum5.3.2.24Nie
more_messages_to_send5.3.2.34Nie
payload_type5.3.2.10Nie
message_payload5.3.2.32Nie
privacy_indicator5.3.2.14Nie
callback_num5.3.2.36Nie
callback_num_pres_ind5.3.2.37Nie
callback_num_atag5.3.2.38Nie
source_subaddress5.3.2.15Nie
dest_subaddress5.3.2.16Nie
user_response_code5.3.2.18Nie
display_time5.3.2.26Nie
sms_signal5.3.2.40Nie
ms_validity5.3.2.27Nie
ms_msg_wait_facilities5.3.2.13Nie
number_of_messages5.3.2.39Nie
alert_on_msg_delivery5.3.2.41Nie
language_indicator5.3.2.19Nie
its_reply_type5.3.2.42Nie
its_session_info5.3.2.43Nie
ussd_service_op5.3.2.44Nie

submit_sm_resp jest potwierdzeniem prawidłowego odebrania submit_sm przez SMSC.

Zawiera message_id, który jest identyfikatorem wiadomości SMSC umożliwiającym powiązanie z potwierdzeniem odbioru (DLR) wysłanym później, gdy telefon komórkowy odebrał SMS (pod warunkiem że żądanie DLR zostało określone w submit_sm).

deliver_sm i deliver_sm_resp

deliver_sm jest wysyłany przez SMSC w celu przesłania potwierdzenia odbioru (DLR) do ESME, jeśli ten zażądał go w submit_sm, lub w przypadku wiadomości przychodzącej (odpowiedź na shortcode lub SMS wysłany na numer wirtualny).

Parametry obowiązkowe:

Nazwa parametruRef. Spec 3.4Obsługiwany
service_type5.2.11Nie
source_addr_ton5.2.5Tak
source_addr_npi5.2.6Tak
source_addr5.2.8Tak
dest_addr_ton5.2.5Tak
dest_addr_npi5.2.6Tak
destination_addr5.2.9Tak
esm_class5.2.12Tak
protocol_id5.2.13Nie
priority_flag5.2.14Nie
schedule_delivery_time5.2.15Nie
validity_period5.2.16Nie
registered_delivery5.2.17Nie
replace_if_present_flag5.2.18Nie
data_coding5.2.19Tak
sm_default_msg_id5.2.20Nie
sm_length5.2.21Tak
short_message5.2.22Tak

Parametry opcjonalne:

Nazwa parametruRef. Spec 3.4Obsługiwany
receipted_message_id5.3.2.12Tak
user_message_reference5.3.2.17Nie
source_port5.3.2.20Nie
destination_port5.3.2.21Nie
sar_msg_ref_num5.3.2.22Nie
sar_total_segments5.3.2.23Nie
sar_segment_seqnum5.3.2.24Nie
user_response_code5.3.2.18Nie
privacy_indicator5.3.2.14Nie
payload_type5.3.2.10Nie
message_payload5.3.2.32Nie
callback_num5.3.2.36Nie
source_subaddress5.3.2.15Nie
dest_subaddress5.3.2.16Nie
language_indicator5.3.2.19Nie
its_session_info5.3.2.43Nie
network_error_code5.3.2.31Nie
message_state5.3.2.35Nie

Parametry specyficzne dla OVHcloud:

Nazwa parametruTag TLV (hex)Typ polaRozmiarOpis
outgoing_id0x1401Ciąg znaków zakończony znakiem null (\0)64 bajtyWewnętrzny identyfikator OVHcloud używany w przypadku DLR
incoming_id0x1402Ciąg znaków zakończony znakiem null (\0)64 bajtyWewnętrzny identyfikator OVHcloud używany w przypadku MO

Nasza usługa próbuje wysyłać deliver_sm do ESME przez maksymalnie 7 dni.

Kody błędów potwierdzeń odbioru (DLR)
Error code (PTT)Description
0No Error
1Internal Error
2Network Error
3Unreachable Destination
4Equipment Error
5Subscriber / Credit Related (e.g. Account or sender is invalid, Recipient number unreachable)
6Timeout
7Operator Related
8Parental Lock
9Undeliverable
10Account Credit (e.g. Not enough credit, Auto-recredit issue)
50Internal Error
51Internal Error
52Missing Template (e.g. US destination requires approved templates)
53Blacklisted (a STOP response sent by the recipient to block the sender)
54Forbidden destination
55Sender Temporarily Ratelimited (maximum sms sent exceeded during a short period)
100Invalid Destination Numbering Plan
101Invalid Content
102Invalid GSM7 Coding (e.g. error with packed/unpacked GSM7)
103Message too long for the number of allowed segments
254Pending
255Unknown Error
800Undeliverable
801Expired
802Deleted
803Rejected
804Unknown

PDU używany przez SMSC i ESME do sprawdzenia, czy połączenie jest nadal aktywne.

Zaleca się zachowanie 30-sekundowego odstępu między poszczególnymi żądaniami.

generic_nack

PDU zwracany przez SMSC, gdy PDU jest nieobsługiwany lub uszkodzony.

query_sm i query_sm_resp

Nieobsługiwane.

cancel_sm i cancel_sm_resp

Nieobsługiwane.

replace_sm i replace_sm_resp

Nieobsługiwane.

alert_notification

Nieobsługiwany.

submit_multi i submit_multi_resp

Nieobsługiwane.

data_sm i data_sm_resp

Nieobsługiwane.

Statusy PDU odpowiedzi

Każdy PDU odpowiedzi (te kończące się na _resp) ma status. Specyfikacja SMPP zawiera listę ogólnych statusów (SMPP 3.4, 5.1.3 command_status) wspólnych dla wszystkich SMSC.

Określony zakres statusów jest zarezerwowany dla SMSC. Oto te używane przez OVHcloud:

Error codeValueDescription
ESME_RBINDTHROTTLED0x00000400Too many bind authentication
ESME_RUNSDATACODING0x00000401Data Coding unsupported
ESME_RINVGSM7CODING0x00000402Short message GSM7 (GSM 03.38) encoding issues, contact support

Data Coding Scheme

Data coding jest używany przez submit_sm i deliver_sm do kodowania wiadomości.

Lista obsługiwanych data coding:

  • GSM 03.38 (GSM 7 bits)*
  • UCS2

GSM 03.38*: to kodowanie reprezentuje każdy znak za pomocą septetu, ale niektóre klienty SMPP reprezentują go za pomocą oktetu. Ponieważ format oktetowy jest najczęściej używany, Twoje konto SMPP jest domyślnie skonfigurowane na ten format. Jeśli napotkasz problemy z kodowaniem w swoim kliencie SMPP, skontaktuj się z pomocą techniczną OVHcloud, aby zmienić format.

TLV

TLV (Tag, Length, Value) umożliwia wzbogacenie PDU o dodatkowe, opcjonalne informacje. Niektóre są wspólne i używane przez wiele SMSC, a inne mogą być bardziej specyficzne dla OVHcloud.

System identyfikacji

System ID

system_id to identyfikator połączenia SMPP; jest generowany w postaci losowego ciągu znaków.

Password

Password jest generowane i dostarczane przy każdym utworzeniu konta SMPP.

Lista autoryzowanych adresów IP

Lista adresów IP jest wymagana, aby autoryzować maszynę lub maszyny do łączenia się z SMSC.

Typ połączenia

  • Połączenie zabezpieczone: połączenie szyfrowane za pomocą co najmniej TLS 1.3.
  • Połączenie niezabezpieczone: połączenie, które nie korzysta z szyfrowania TLS ze względu na potrzeby wstecznej kompatybilności (wszystkie wymiany odbywają się w postaci jawnej i są w związku z tym widoczne dla osób trzecich).

Limity wysyłania

Połączenie na strefę

Domyślnie konto SMPP może mieć tylko jedną parę Transmitter/Receiver lub jeden Transceiver na strefę.

Windowing

Domyślnie konto SMPP może przetwarzać maksymalnie 10 wiadomości jednocześnie.

Przepustowość

Domyślnie konto SMPP może przetwarzać maksymalnie 20 wiadomości na sekundę na połączenie.

Wersja protokołu

Wersja protokołu to 3.4.

Lista klientów SMPP przetestowanych przez OVHcloud

  • Kannel 1.4.5

Sprawdź również

Dokumentacja techniczna SMPP

Zarządzanie kontem SMS SMPP

Dołącz do grona naszych użytkowników.

Czy ta strona była pomocna?