---
title: "Specyfikacja techniczna SMPP"
description: "Poznaj specyfikację techniczną rozwiązania SMPP OVHcloud"
url: https://docs.ovhcloud.com/pl/guides/web-cloud/messaging/sms/smpp-specification
lang: pl
lastUpdated: 2026-06-15
---
# Specyfikacja techniczna SMPP

## 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](https://smpp.org/SMPP_v3_4_Issue1_2.pdf).

## 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](#pdu-list).
:::

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

|                                                                | Source                                                                                         | Destination                           |
| -------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- |
| Wysłanie SMS (MT)                                              | - Shortcode (Francja metropolitalna i Belgia)<br /> - Alfanumeryczny <br />- 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órkowego                                                                   | Numer 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 parametru            | Ref. Spec 3.4 | Obsługiwany |
| -------------------------- | ------------- | ----------- |
| service\_type              | 5.2.11        | Nie         |
| source\_addr\_ton          | 5.2.5         | Tak         |
| source\_addr\_npi          | 5.2.6         | Tak         |
| source\_addr               | 5.2.8         | Tak         |
| dest\_addr\_ton            | 5.2.5         | Tak         |
| dest\_addr\_npi            | 5.2.6         | Tak         |
| destination\_addr          | 5.2.9         | Tak         |
| esm\_class                 | 5.2.12        | Tak         |
| protocol\_id               | 5.2.13        | Nie         |
| priority\_flag             | 5.2.14        | Nie         |
| schedule\_delivery\_time   | 5.2.15        | Tak         |
| validity\_period           | 5.2.16        | Tak         |
| registered\_delivery       | 5.2.17        | Tak         |
| replace\_if\_present\_flag | 5.2.18        | Nie         |
| data\_coding               | 5.2.19        | Tak         |
| sm\_default\_msg\_id       | 5.2.20        | Nie         |
| sm\_length                 | 5.2.21        | Tak         |
| short\_message             | 5.2.22        | Tak         |

- `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 parametru           | Ref. Spec 3.4 | Obsługiwany |
| ------------------------- | ------------- | ----------- |
| user\_message\_reference  | 5.3.2.17      | Nie         |
| source\_port              | 5.3.2.20      | Nie         |
| source\_addr\_subunit     | 5.3.2.2       | Nie         |
| destination\_port         | 5.3.2.21      | Nie         |
| dest\_addr\_subunit       | 5.3.2.1       | Tak         |
| sar\_msg\_ref\_num        | 5.3.2.22      | Nie         |
| sar\_total\_segments      | 5.3.2.23      | Nie         |
| sar\_segment\_seqnum      | 5.3.2.24      | Nie         |
| more\_messages\_to\_send  | 5.3.2.34      | Nie         |
| payload\_type             | 5.3.2.10      | Nie         |
| message\_payload          | 5.3.2.32      | Nie         |
| privacy\_indicator        | 5.3.2.14      | Nie         |
| callback\_num             | 5.3.2.36      | Nie         |
| callback\_num\_pres\_ind  | 5.3.2.37      | Nie         |
| callback\_num\_atag       | 5.3.2.38      | Nie         |
| source\_subaddress        | 5.3.2.15      | Nie         |
| dest\_subaddress          | 5.3.2.16      | Nie         |
| user\_response\_code      | 5.3.2.18      | Nie         |
| display\_time             | 5.3.2.26      | Nie         |
| sms\_signal               | 5.3.2.40      | Nie         |
| ms\_validity              | 5.3.2.27      | Nie         |
| ms\_msg\_wait\_facilities | 5.3.2.13      | Nie         |
| number\_of\_messages      | 5.3.2.39      | Nie         |
| alert\_on\_msg\_delivery  | 5.3.2.41      | Nie         |
| language\_indicator       | 5.3.2.19      | Nie         |
| its\_reply\_type          | 5.3.2.42      | Nie         |
| its\_session\_info        | 5.3.2.43      | Nie         |
| ussd\_service\_op         | 5.3.2.44      | Nie         |

`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 parametru            | Ref. Spec 3.4 | Obsługiwany |
| -------------------------- | ------------- | ----------- |
| service\_type              | 5.2.11        | Nie         |
| source\_addr\_ton          | 5.2.5         | Tak         |
| source\_addr\_npi          | 5.2.6         | Tak         |
| source\_addr               | 5.2.8         | Tak         |
| dest\_addr\_ton            | 5.2.5         | Tak         |
| dest\_addr\_npi            | 5.2.6         | Tak         |
| destination\_addr          | 5.2.9         | Tak         |
| esm\_class                 | 5.2.12        | Tak         |
| protocol\_id               | 5.2.13        | Nie         |
| priority\_flag             | 5.2.14        | Nie         |
| schedule\_delivery\_time   | 5.2.15        | Nie         |
| validity\_period           | 5.2.16        | Nie         |
| registered\_delivery       | 5.2.17        | Nie         |
| replace\_if\_present\_flag | 5.2.18        | Nie         |
| data\_coding               | 5.2.19        | Tak         |
| sm\_default\_msg\_id       | 5.2.20        | Nie         |
| sm\_length                 | 5.2.21        | Tak         |
| short\_message             | 5.2.22        | Tak         |

**Parametry opcjonalne:**

| Nazwa parametru          | Ref. Spec 3.4 | Obsługiwany |
| ------------------------ | ------------- | ----------- |
| receipted\_message\_id   | 5.3.2.12      | Tak         |
| user\_message\_reference | 5.3.2.17      | Nie         |
| source\_port             | 5.3.2.20      | Nie         |
| destination\_port        | 5.3.2.21      | Nie         |
| sar\_msg\_ref\_num       | 5.3.2.22      | Nie         |
| sar\_total\_segments     | 5.3.2.23      | Nie         |
| sar\_segment\_seqnum     | 5.3.2.24      | Nie         |
| user\_response\_code     | 5.3.2.18      | Nie         |
| privacy\_indicator       | 5.3.2.14      | Nie         |
| payload\_type            | 5.3.2.10      | Nie         |
| message\_payload         | 5.3.2.32      | Nie         |
| callback\_num            | 5.3.2.36      | Nie         |
| source\_subaddress       | 5.3.2.15      | Nie         |
| dest\_subaddress         | 5.3.2.16      | Nie         |
| language\_indicator      | 5.3.2.19      | Nie         |
| its\_session\_info       | 5.3.2.43      | Nie         |
| network\_error\_code     | 5.3.2.31      | Nie         |
| message\_state           | 5.3.2.35      | Nie         |

**Parametry specyficzne dla OVHcloud:**

| Nazwa parametru | Tag TLV (hex) | Typ pola                                 | Rozmiar  | Opis                                                      |
| --------------- | ------------- | ---------------------------------------- | -------- | --------------------------------------------------------- |
| outgoing\_id    | 0x1401        | Ciąg znaków zakończony znakiem null (\0) | 64 bajty | Wewnętrzny identyfikator OVHcloud używany w przypadku DLR |
| incoming\_id    | 0x1402        | Ciąg znaków zakończony znakiem null (\0) | 64 bajty | Wewnę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                                                                                   |
| ---------------- | --------------------------------------------------------------------------------------------- |
| 0                | No Error                                                                                      |
| 1                | Internal Error                                                                                |
| 2                | Network Error                                                                                 |
| 3                | Unreachable Destination                                                                       |
| 4                | Equipment Error                                                                               |
| 5                | Subscriber / Credit Related (e.g. Account or sender is invalid, Recipient number unreachable) |
| 6                | Timeout                                                                                       |
| 7                | Operator Related                                                                              |
| 8                | Parental Lock                                                                                 |
| 9                | Undeliverable                                                                                 |
| 10               | Account Credit (e.g. Not enough credit, Auto-recredit issue)                                  |
| 50               | Internal Error                                                                                |
| 51               | Internal Error                                                                                |
| 52               | Missing Template (e.g. US destination requires approved templates)                            |
| 53               | Blacklisted (a STOP response sent by the recipient to block the sender)                       |
| 54               | Forbidden destination                                                                         |
| 55               | Sender Temporarily Ratelimited (maximum sms sent exceeded during a short period)              |
| 100              | Invalid Destination Numbering Plan                                                            |
| 101              | Invalid Content                                                                               |
| 102              | Invalid GSM7 Coding (e.g. error with packed/unpacked GSM7)                                    |
| 103              | Message too long for the number of allowed segments                                           |
| 254              | Pending                                                                                       |
| 255              | Unknown Error                                                                                 |
| 800              | Undeliverable                                                                                 |
| 801              | Expired                                                                                       |
| 802              | Deleted                                                                                       |
| 803              | Rejected                                                                                      |
| 804              | Unknown                                                                                       |

##### **enquire\_link i enquire\_link\_resp**

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 code           | Value      | Description                                                     |
| -------------------- | ---------- | --------------------------------------------------------------- |
| ESME\_RBINDTHROTTLED | 0x00000400 | Too many bind authentication                                    |
| ESME\_RUNSDATACODING | 0x00000401 | Data Coding unsupported                                         |
| ESME\_RINVGSM7CODING | 0x00000402 | Short 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](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)

[Zarządzanie kontem SMS SMPP](/pl/guides/web-cloud/messaging/sms/smpp-control-panel.md)

Dołącz do [grona naszych użytkowników](https://community.ovhcloud.com/).
