---
title: "Specifiche tecniche di SMPP"
description: "Scopri le specifiche tecniche della soluzione SMPP di OVHcloud"
url: https://docs.ovhcloud.com/it/guides/web-cloud/messaging/sms/smpp-specification
lang: it
lastUpdated: 2026-06-15
---
# Specifiche tecniche di SMPP

## Obiettivo

**Scopri le specifiche tecniche dell'offerta SMPP di OVHcloud.**

## Glossario

- PDU: Protocol Data Unit è l'oggetto/entità che permette di scambiare richieste e risposte
- SMPP: Short Message Peer to Peer Protocol
- SMSC: Short Message Service Center (server)
- ESME: External Short Message Entity (client)
- UDH: User Data Header
- SM: Short Message
- DLR: Delivery Receipt
- PTT: Premium Tracking Technical è un codice di errore comunicato nel messaggio di un DLR
- MT: Mobile Terminated
- MO: Mobile Originated

Per ulteriori spiegazioni sulle abbreviazioni, consulta pagina 10 delle [specifiche SMPP di smpp.org](https://smpp.org/SMPP_v3_4_Issue1_2.pdf).

## Presentazione

### A cosa serve l'SMPP?

SMPP (Short Message Peer-to-Peer) è un protocollo che permette di scambiare SMS con gli operatori telefonici e da parte dei fornitori di contenuti. Generalmente utilizza due connessioni TCP/IP, una per l'invio e una per la ricezione dei dati.

### Quali sono i vantaggi dell'SMPP rispetto all'offerta SMS standard?

- Il protocollo è standardizzato e permette di integrarsi con numerosi strumenti del mercato
- Permette di ottenere una velocità di trasmissione elevata con bassa latenza

### Qual è l'utilizzo tipico dell'invio di un SMS tramite SMPP?

**L'applicazione di invio SMS del cliente (ESME) dispone di tre mezzi di comunicazione con l'SMSC:**

- Transmitter: invio di un messaggio
- Receiver: ricezione di un messaggio
- Transceiver: invio e ricezione di un messaggio

:::info
Trova ulteriori informazioni sui mezzi di comunicazione nel capitolo [Elenco dei PDU](#pdu-list).
:::

Una volta stabilita la connessione tra l'ESME e un SMSC di OVHcloud, è possibile effettuare l'invio e/o la ricezione di un messaggio.

L'autenticazione della connessione all'SMSC avviene con il `system_id` (identificativo), la `password` e l'`indirizzo IP` della tua applicazione.

L'offerta SMPP di OVHcloud permette:

- L'invio di SMS con (o senza) avviso di ricezione (DLR)
- La ricezione di un messaggio inviato da un cellulare

|                                                                     | Source                                                                                      | Destination                            |
| ------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | -------------------------------------- |
| Invio di un SMS (MT)                                                | - Shortcode (Francia metropolitana e Belgio)<br /> - Alfanumerico <br />- Numero virtuale\* | Numero internazionale in formato E.164 |
| Invio di un SMS che consente una risposta                           | - Shortcode (Francia metropolitana)                                                         | Numero internazionale in formato E.164 |
| Invio di un SMS che consente una risposta con un rapporto MT/MO 1:1 | - Numero virtuale\*                                                                         | Numero virtuale\*                      |
| Ricezione di un SMS inviato da un cellulare (MO)                    | - Numero del telefono cellulare                                                             | Numero virtuale\*                      |

Numero virtuale\*: canale transazionale unicamente

## Specifiche tecniche

### Descrizione dei protocolli

#### Bind Request

Un ESME può connettersi in una delle tre modalità seguenti: Transmitter, Receiver, Transceiver.

Queste richieste di connessione sono gestite conformemente alla specifica del protocollo SMPP v3.4.

#### Bind Response

Durante il processo di connessione, l'ESME effettua una richiesta di Bind fornendo il `system_id` (identificativo) e la sua `password`.

Queste informazioni, insieme all'`IP` della tua applicazione, vengono utilizzate per autenticare la richiesta di connessione.

Successivamente, l'SMSC invia una risposta con uno stato che definisce se l'autenticazione è andata a buon fine o meno.

#### Elenco dei PDU [](#)
##### **bind\_transceiver e bind\_transceiver\_resp**

Questo tipo di bind viene utilizzato per avviare una connessione che permette la comunicazione bidirezionale tra l'SMSC e l'ESME (è la fusione delle modalità transmitter e receiver).

##### **bind\_transmitter e bind\_transmitter\_resp**

Questo tipo di bind viene utilizzato per avviare una connessione che permette unicamente la comunicazione dall'ESME verso l'SMSC (invio di SMS a un cellulare). L'SMSC invia le risposte associate ai PDU di richiesta sulla stessa connessione.

##### **bind\_receiver e bind\_receiver\_resp**

Questo tipo di bind viene utilizzato per avviare una connessione che permette unicamente la comunicazione dall'SMSC verso l'ESME (invio di avviso di ricezione (DLR) o di messaggi inviati da un cellulare). L'ESME invia le risposte associate ai PDU di richiesta sulla stessa connessione.

##### **unbind e unbind\_resp**

Richiesta di chiusura di una connessione avviata dall'SMSC o dall'ESME. La parte che riceve la richiesta invia una risposta quando è pronta a interrompere la connessione.

L'SMSC di OVHcloud chiude (_unbind_) le connessioni ogni 24 h; l'ESME deve riconnettersi automaticamente.

##### **outbind**

Non supportato

##### **submit\_sm e submit\_sm\_resp**

Il `submit_sm` viene utilizzato da un ESME per inviare un SMS all'SMSC per la trasmissione a un numero di telefono cellulare.

**Parametri obbligatori:**

| Nome del parametro         | Rif. Spec 3.4 | Supportato |
| -------------------------- | ------------- | ---------- |
| service\_type              | 5.2.11        | No         |
| source\_addr\_ton          | 5.2.5         | Sì         |
| source\_addr\_npi          | 5.2.6         | Sì         |
| source\_addr               | 5.2.8         | Sì         |
| dest\_addr\_ton            | 5.2.5         | Sì         |
| dest\_addr\_npi            | 5.2.6         | Sì         |
| destination\_addr          | 5.2.9         | Sì         |
| esm\_class                 | 5.2.12        | Sì         |
| protocol\_id               | 5.2.13        | No         |
| priority\_flag             | 5.2.14        | No         |
| schedule\_delivery\_time   | 5.2.15        | Sì         |
| validity\_period           | 5.2.16        | Sì         |
| registered\_delivery       | 5.2.17        | Sì         |
| replace\_if\_present\_flag | 5.2.18        | No         |
| data\_coding               | 5.2.19        | Sì         |
| sm\_default\_msg\_id       | 5.2.20        | No         |
| sm\_length                 | 5.2.21        | Sì         |
| short\_message             | 5.2.22        | Sì         |

- `source_addr` può essere un numero internazionale, un numero alfanumerico o un numero shortcode:
  - **alfanumerico**: questi numeri di telefono sono composti da lettere e cifre (es.: ovh123).
    - `source_addr_ton` = 5
    - `source_addr_npi` = 0
  - **shortcode**: questi numeri di telefono contengono tra 3 e 8 cifre (es.: 38069). Lo shortcode serve solo ad avvisare il nostro servizio che dovremo utilizzarne uno. Lo shortcode reale utilizzato per inviare l'SMS sarà definito dall'operatore di telecomunicazioni.
    - `source_addr_ton` = 3
    - `source_addr_npi` = 1
  - **internazionale**: questi numeri di telefono sono composti dall'identificativo del paese e dal numero abituale senza il primo 0 (per esempio 33601020304).
    - `source_addr_ton` = 1
    - `source_addr_npi` = 1
- `destination_addr` deve essere un numero internazionale (es.: 33600000001)
  - `dest_addr_ton` = 1
  - `dest_addr_npi` = 1

**Parametri opzionali:**

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

Il `submit_sm_resp` è la conferma della corretta ricezione del submit\_sm da parte dell'SMSC.

Contiene un `message_id`, che è l'identificativo del messaggio dell'SMSC e permette di collegarlo all'avviso di ricezione (DLR) inviato in seguito quando il cellulare ha ricevuto l'SMS (a condizione che la richiesta di un DLR sia stata specificata nel `submit_sm`).

##### **deliver\_sm e deliver\_sm\_resp**

Il `deliver_sm` viene emesso dall'SMSC per inviare un avviso di ricezione (DLR) all'ESME se quest'ultimo lo ha richiesto nel `submit_sm`, oppure quando viene ricevuto un SMS in entrata (risposta a uno shortcode o un SMS inviato verso un numero virtuale).

**Parametri obbligatori:**

| Nome del parametro         | Rif. Spec 3.4 | Supportato |
| -------------------------- | ------------- | ---------- |
| service\_type              | 5.2.11        | No         |
| source\_addr\_ton          | 5.2.5         | Sì         |
| source\_addr\_npi          | 5.2.6         | Sì         |
| source\_addr               | 5.2.8         | Sì         |
| dest\_addr\_ton            | 5.2.5         | Sì         |
| dest\_addr\_npi            | 5.2.6         | Sì         |
| destination\_addr          | 5.2.9         | Sì         |
| esm\_class                 | 5.2.12        | Sì         |
| protocol\_id               | 5.2.13        | No         |
| priority\_flag             | 5.2.14        | No         |
| schedule\_delivery\_time   | 5.2.15        | No         |
| validity\_period           | 5.2.16        | No         |
| registered\_delivery       | 5.2.17        | No         |
| replace\_if\_present\_flag | 5.2.18        | No         |
| data\_coding               | 5.2.19        | Sì         |
| sm\_default\_msg\_id       | 5.2.20        | No         |
| sm\_length                 | 5.2.21        | Sì         |
| short\_message             | 5.2.22        | Sì         |

**Parametri opzionali:**

| Nome del parametro       | Rif. Spec 3.4 | Supportato |
| ------------------------ | ------------- | ---------- |
| receipted\_message\_id   | 5.3.2.12      | Sì         |
| user\_message\_reference | 5.3.2.17      | No         |
| source\_port             | 5.3.2.20      | No         |
| destination\_port        | 5.3.2.21      | No         |
| sar\_msg\_ref\_num       | 5.3.2.22      | No         |
| sar\_total\_segments     | 5.3.2.23      | No         |
| sar\_segment\_seqnum     | 5.3.2.24      | No         |
| user\_response\_code     | 5.3.2.18      | No         |
| privacy\_indicator       | 5.3.2.14      | No         |
| payload\_type            | 5.3.2.10      | No         |
| message\_payload         | 5.3.2.32      | No         |
| callback\_num            | 5.3.2.36      | No         |
| source\_subaddress       | 5.3.2.15      | No         |
| dest\_subaddress         | 5.3.2.16      | No         |
| language\_indicator      | 5.3.2.19      | No         |
| its\_session\_info       | 5.3.2.43      | No         |
| network\_error\_code     | 5.3.2.31      | No         |
| message\_state           | 5.3.2.35      | No         |

**Parametri specifici di OVHcloud:**

| Nome del parametro | Tag TLV (hex) | Tipo di campo                               | Dimensione | Descrizione                                          |
| ------------------ | ------------- | ------------------------------------------- | ---------- | ---------------------------------------------------- |
| outgoing\_id       | 0x1401        | Stringa di caratteri terminata da null (\0) | 64 byte    | ID interno di OVHcloud utilizzato nel caso di un DLR |
| incoming\_id       | 0x1402        | Stringa di caratteri terminata da null (\0) | 64 byte    | ID interno di OVHcloud utilizzato nel caso di un MO  |

Il nostro servizio tenta di inviare i `deliver_sm` all'ESME per un massimo di 7 giorni.

###### **Codici di errore degli avvisi di ricezione (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 e enquire\_link\_resp**

PDU utilizzato dall'SMSC e dall'ESME per verificare se una connessione è ancora attiva.

Si consiglia di rispettare un intervallo di 30 secondi tra ogni richiesta.

##### **generic\_nack**

PDU restituito dall'SMSC quando un PDU non è supportato o è danneggiato.

##### **query\_sm e query\_sm\_resp**

Non supportati.

##### **cancel\_sm e cancel\_sm\_resp**

Non supportati.

##### **replace\_sm e replace\_sm\_resp**

Non supportati.

##### **alert\_notification**

Non supportato.

##### **submit\_multi e submit\_multi\_resp**

Non supportati.

##### **data\_sm e data\_sm\_resp**

Non supportati.

#### Stati dei PDU di risposta

Ogni PDU di risposta (quelli che terminano con `_resp`) ha uno stato. La specifica SMPP fornisce un elenco di stati generici (SMPP 3.4, 5.1.3 command\_status) comuni a tutti gli SMSC.

Un intervallo specifico di stati è riservato agli SMSC. Ecco quelli utilizzati da 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

Il data coding viene utilizzato dal `submit_sm` e dal `deliver_sm` per codificare il messaggio.

Elenco dei data coding supportati:

- GSM 03.38 (GSM 7 bits)\*
- UCS2

GSM 03.38\*: questa codifica rappresenta ogni carattere su un settetto, ma alcuni client SMPP lo rappresentano su un ottetto.
Poiché il formato ottetto è il più utilizzato, il tuo account SMPP è configurato su questo formato per impostazione predefinita. Se riscontri problemi di codifica con il tuo client SMPP, contatta il supporto OVHcloud per far modificare il formato.

#### TLV

Un TLV (_Tag, Length, Value_) permette di arricchire un PDU aggiungendovi informazioni opzionali. Alcuni sono comuni e utilizzati da diversi SMSC, mentre altri possono essere più specifici di OVHcloud.

### Sistema di identificazione

#### System ID

Il system\_id è l'identificativo di connessione SMPP; viene generato sotto forma di una stringa di caratteri casuali.

#### Password

La password viene generata e fornita a ogni creazione di un account SMPP.

#### Elenco degli IP autorizzati

È necessario un elenco di IP per autorizzare la o le macchine a connettersi all'SMSC.

### Tipo di connessione

- **Connessione sicura**: connessione crittografata con TLS 1.3 minimo.
- **Connessione non sicura**: connessione che non beneficia della crittografia TLS per esigenze di retrocompatibilità (tutti gli scambi sono in chiaro e quindi visibili a terzi).

### Limiti di invio

#### Connessione per zona

Per impostazione predefinita, un account SMPP può avere solo una coppia Transmitter/Receiver o un Transceiver per zona.

#### Windowing

Per impostazione predefinita, un account SMPP può elaborare fino a un massimo di 10 messaggi simultaneamente.

#### Velocità di trasmissione autorizzata

Per impostazione predefinita, un account SMPP può elaborare fino a un massimo di 20 messaggi al secondo per connessione.

### Versione del protocollo

La versione del protocollo è la 3.4.

### Elenco dei client SMPP testati da OVHcloud

- Kannel 1.4.5

## Per saperne di più

[Documentazione tecnica SMPP](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)

[Gestione di un account SMS SMPP](/it/guides/web-cloud/messaging/sms/smpp-control-panel.md)

Contatta la nostra [Community di utenti](https://community.ovhcloud.com/).
