---
title: "Especificaciones técnicas de SMPP"
description: "Descubra las especificaciones técnicas de la solución SMPP de OVHcloud"
url: https://docs.ovhcloud.com/es/guides/web-cloud/messaging/sms/smpp-specification
lang: es
lastUpdated: 2026-06-15
---
# Especificaciones técnicas de SMPP

:::info
Las ofertas de SMS de OVHcloud solo están disponibles en los siguientes países: Francia, Reino Unido, Irlanda, España, Italia y Polonia.
:::

## Objetivo

**Descubra las especificaciones técnicas de la oferta SMPP de OVHcloud.**

## Glosario

- PDU: Protocol Data Unit es el objeto/entidad que permite intercambiar solicitudes y respuestas
- SMPP: Short Message Peer to Peer Protocol
- SMSC: Short Message Service Center (servidor)
- ESME: External Short Message Entity (cliente)
- UDH: User Data Header
- SM: Short Message
- DLR: Delivery Receipt
- PTT: Premium Tracking Technical es un código de error comunicado en el mensaje de un DLR
- MT: Mobile Terminated
- MO: Mobile Originated

Para obtener más información sobre las abreviaturas, consulte la página 10 de las [especificaciones SMPP de smpp.org](https://smpp.org/SMPP_v3_4_Issue1_2.pdf).

## Presentación

### ¿Para qué sirve SMPP?

SMPP (Short Message Peer-to-Peer) es un protocolo que permite intercambiar SMS con los operadores telefónicos y por parte de los proveedores de contenido. Generalmente utiliza dos conexiones TCP/IP, una para el envío y otra para la recepción de datos.

### ¿Cuáles son las ventajas de SMPP frente a la oferta estándar de SMS?

- El protocolo está estandarizado y permite integrarse con numerosas herramientas del mercado
- Permite obtener un caudal elevado con poca latencia

### ¿Cuál es el uso habitual del envío de un SMS por SMPP?

**La aplicación de envío de SMS del cliente (ESME) dispone de tres medios de comunicación con el SMSC:**

- Transmitter: emisión de un mensaje
- Receiver: recepción de un mensaje
- Transceiver: emisión y recepción de un mensaje

:::info
Encontrará información adicional sobre los medios de comunicación en el capítulo [Lista de PDU](#pdu-list).
:::

Una vez establecida la conexión entre el ESME y un SMSC de OVHcloud, se pueden realizar la emisión o la recepción de un mensaje.

La autenticación de la conexión al SMSC se realiza con el `system_id` (identificador), la `password` y la `dirección IP` de su aplicación.

La oferta SMPP de OVHcloud permite:

- El envío de SMS con (o sin) acuse de recibo (DLR)
- La recepción de un mensaje enviado desde un móvil

|                                                                        | Source                                                                                      | Destination                           |
| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------- |
| Envío de un SMS (MT)                                                   | - Shortcode (Francia metropolitana y Bélgica)<br /> - Alfanumérico <br />- Número virtual\* | Número internacional en formato E.164 |
| Envío de un SMS que permite una respuesta                              | - Shortcode (Francia metropolitana)                                                         | Número internacional en formato E.164 |
| Envío de un SMS que permite una respuesta con una proporción MT/MO 1:1 | - Número virtual\*                                                                          | Número virtual\*                      |
| Recepción de un SMS enviado desde un móvil (MO)                        | - Número del teléfono móvil                                                                 | Número virtual\*                      |

Número virtual\*: canal transaccional únicamente

## Especificaciones técnicas

### Descripción de los protocolos

#### Bind Request

Un ESME puede conectarse en uno de los tres modos siguientes: Transmitter, Receiver, Transceiver.

Estas solicitudes de conexión se gestionan conforme a la especificación del protocolo SMPP v3.4.

#### Bind Response

Durante el proceso de conexión, el ESME realiza una solicitud de Bind proporcionando el `system_id` (identificador) y su `password`.

Esta información, junto con la `IP` de su aplicación, se utiliza para autenticar la solicitud de conexión.

A continuación, el SMSC envía una respuesta con un estado que define si la autenticación se ha realizado correctamente o no.

#### Lista de PDU [](#)
##### **bind\_transceiver y bind\_transceiver\_resp**

Este tipo de bind se utiliza para iniciar una conexión que permite la comunicación bidireccional entre el SMSC y el ESME (es la fusión de los modos transmitter y receiver).

##### **bind\_transmitter y bind\_transmitter\_resp**

Este tipo de bind se utiliza para iniciar una conexión que solo permite la comunicación del ESME hacia el SMSC (envío de SMS a un móvil). El SMSC envía las respuestas asociadas a los PDU de solicitud por la misma conexión.

##### **bind\_receiver y bind\_receiver\_resp**

Este tipo de bind se utiliza para iniciar una conexión que solo permite la comunicación del SMSC hacia el ESME (envío de acuse de recibo (DLR) o de mensajes enviados desde un móvil). El ESME envía las respuestas asociadas a los PDU de solicitud por la misma conexión.

##### **unbind y unbind\_resp**

Solicitud de cierre de una conexión iniciada por el SMSC o el ESME. La parte que recibe la solicitud devuelve una respuesta cuando está lista para cortar la conexión.

El SMSC de OVHcloud cierra (_unbind_) las conexiones cada 24 h; el ESME debe volver a conectarse automáticamente.

##### **outbind**

No compatible

##### **submit\_sm y submit\_sm\_resp**

El `submit_sm` lo utiliza un ESME para enviar un SMS al SMSC con el fin de transmitirlo a un número de teléfono móvil.

**Parámetros obligatorios:**

| Nombre del parámetro       | Ref. Spec 3.4 | Compatible |
| -------------------------- | ------------- | ---------- |
| 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` puede ser un número internacional, un número alfanumérico o un número shortcode:
  - **alfanumérico**: estos números de teléfono se componen de letras y cifras (ej.: ovh123).
    - `source_addr_ton` = 5
    - `source_addr_npi` = 0
  - **shortcode**: estos números de teléfono contienen entre 3 y 8 cifras (ej.: 38069). El shortcode solo sirve para avisar a nuestro servicio de que vamos a tener que utilizar uno. El shortcode real utilizado para enviar el SMS lo definirá el operador de telecomunicaciones.
    - `source_addr_ton` = 3
    - `source_addr_npi` = 1
  - **internacional**: estos números de teléfono se componen del identificador del país y del número habitual sin el primer 0 (por ejemplo, 33601020304).
    - `source_addr_ton` = 1
    - `source_addr_npi` = 1
- `destination_addr` debe ser un número internacional (ej.: 33600000001)
  - `dest_addr_ton` = 1
  - `dest_addr_npi` = 1

**Parámetros opcionales:**

| Nombre del parámetro      | Ref. Spec 3.4 | Compatible |
| ------------------------- | ------------- | ---------- |
| 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         |

El `submit_sm_resp` es la confirmación de la correcta recepción del submit\_sm por parte del SMSC.

Contiene un `message_id`, que es el identificador del mensaje del SMSC y permite establecer el vínculo con el acuse de recibo (DLR) enviado más tarde cuando el móvil ha recibido el SMS (siempre que se haya especificado la solicitud de un DLR en el `submit_sm`).

##### **deliver\_sm y deliver\_sm\_resp**

El `deliver_sm` lo emite el SMSC para enviar un acuse de recibo (DLR) al ESME si este lo ha solicitado en el `submit_sm`, o cuando se recibe un SMS entrante (respuesta a un shortcode o un SMS enviado a un número virtual).

**Parámetros obligatorios:**

| Nombre del parámetro       | Ref. Spec 3.4 | Compatible |
| -------------------------- | ------------- | ---------- |
| 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í         |

**Parámetros opcionales:**

| Nombre del parámetro     | Ref. Spec 3.4 | Compatible |
| ------------------------ | ------------- | ---------- |
| 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         |

**Parámetros específicos de OVHcloud:**

| Nombre del parámetro | Tag TLV (hex) | Tipo de campo                               | Tamaño   | Descripción                                           |
| -------------------- | ------------- | ------------------------------------------- | -------- | ----------------------------------------------------- |
| outgoing\_id         | 0x1401        | Cadena de caracteres terminada en null (\0) | 64 bytes | ID interno de OVHcloud utilizado en el caso de un DLR |
| incoming\_id         | 0x1402        | Cadena de caracteres terminada en null (\0) | 64 bytes | ID interno de OVHcloud utilizado en el caso de un MO  |

Nuestro servicio intenta enviar los `deliver_sm` al ESME durante un máximo de 7 días.

###### **Códigos de error de los acuses de recibo (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 y enquire\_link\_resp**

PDU utilizado por el SMSC y el ESME para comprobar si una conexión sigue activa.

Se recomienda respetar un intervalo de 30 segundos entre cada solicitud.

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

PDU devuelto por el SMSC cuando un PDU no es compatible o está dañado.

##### **query\_sm y query\_sm\_resp**

No compatibles.

##### **cancel\_sm y cancel\_sm\_resp**

No compatibles.

##### **replace\_sm y replace\_sm\_resp**

No compatibles.

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

No compatible.

##### **submit\_multi y submit\_multi\_resp**

No compatibles.

##### **data\_sm y data\_sm\_resp**

No compatibles.

#### Estados de los PDU de respuesta

Todo PDU de respuesta (los que terminan en `_resp`) tiene un estado. La especificación SMPP proporciona una lista de estados genéricos (SMPP 3.4, 5.1.3 command\_status) comunes a todos los SMSC.

Un rango específico de estados está reservado a los SMSC. Estos son los que utiliza 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

El data coding lo utilizan el `submit_sm` y el `deliver_sm` para codificar el mensaje.

Lista de los data coding compatibles:

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

GSM 03.38\*: esta codificación representa cada carácter en un septeto, pero algunos clientes SMPP lo representan en un octeto.
Dado que el formato de octeto es el más utilizado, su cuenta SMPP está configurada en este formato de forma predeterminada. Si experimenta problemas de codificación con su cliente SMPP, póngase en contacto con el soporte de OVHcloud para que se modifique el formato.

#### TLV

Un TLV (_Tag, Length, Value_) permite enriquecer un PDU añadiéndole información opcional. Algunos son comunes y los utilizan varios SMSC, y otros pueden ser más específicos de OVHcloud.

### Sistema de identificación

#### System ID

El system\_id es el identificador de conexión SMPP; se genera en forma de una cadena de caracteres aleatorios.

#### Password

La password se genera y se proporciona cada vez que se crea una cuenta SMPP.

#### Lista de IP autorizadas

Es necesaria una lista de IP para autorizar a la máquina o máquinas a conectarse al SMSC.

### Tipo de conexión

- **Conexión segura**: conexión cifrada con TLS 1.3 como mínimo.
- **Conexión no segura**: conexión que no dispone de cifrado TLS por necesidades de retrocompatibilidad (todos los intercambios están en claro y, por tanto, son visibles para terceros).

### Límites de envío

#### Conexión por zona

De forma predeterminada, una cuenta SMPP solo puede tener un par Transmitter/Receiver o un Transceiver por zona.

#### Windowing

De forma predeterminada, una cuenta SMPP puede procesar hasta un máximo de 10 mensajes simultáneamente.

#### Caudal autorizado

De forma predeterminada, una cuenta SMPP puede procesar hasta un máximo de 20 mensajes por segundo y por conexión.

### Versión del protocolo

La versión del protocolo es la 3.4.

### Lista de clientes SMPP probados por OVHcloud

- Kannel 1.4.5

## Más información

[Documentación técnica de SMPP](https://smpp.org/SMPP_v3_4_Issue1_2.pdf)

[Gestionar una cuenta de SMS SMPP](/es/guides/web-cloud/messaging/sms/smpp-control-panel.md)

Interactúe con nuestra [comunidad de usuarios](https://community.ovhcloud.com/).
