Especificaciones técnicas de SMPP

Ver como Markdown

Descubra las especificaciones técnicas de la solución SMPP de OVHcloud

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.

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.

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
SourceDestination
Envío de un SMS (MT)- Shortcode (Francia metropolitana y Bélgica)
- Alfanumérico
- 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óvilNú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ámetroRef. Spec 3.4Compatible
service_type5.2.11No
source_addr_ton5.2.5
source_addr_npi5.2.6
source_addr5.2.8
dest_addr_ton5.2.5
dest_addr_npi5.2.6
destination_addr5.2.9
esm_class5.2.12
protocol_id5.2.13No
priority_flag5.2.14No
schedule_delivery_time5.2.15
validity_period5.2.16
registered_delivery5.2.17
replace_if_present_flag5.2.18No
data_coding5.2.19
sm_default_msg_id5.2.20No
sm_length5.2.21
short_message5.2.22
  • 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ámetroRef. Spec 3.4Compatible
user_message_reference5.3.2.17No
source_port5.3.2.20No
source_addr_subunit5.3.2.2No
destination_port5.3.2.21No
dest_addr_subunit5.3.2.1
sar_msg_ref_num5.3.2.22No
sar_total_segments5.3.2.23No
sar_segment_seqnum5.3.2.24No
more_messages_to_send5.3.2.34No
payload_type5.3.2.10No
message_payload5.3.2.32No
privacy_indicator5.3.2.14No
callback_num5.3.2.36No
callback_num_pres_ind5.3.2.37No
callback_num_atag5.3.2.38No
source_subaddress5.3.2.15No
dest_subaddress5.3.2.16No
user_response_code5.3.2.18No
display_time5.3.2.26No
sms_signal5.3.2.40No
ms_validity5.3.2.27No
ms_msg_wait_facilities5.3.2.13No
number_of_messages5.3.2.39No
alert_on_msg_delivery5.3.2.41No
language_indicator5.3.2.19No
its_reply_type5.3.2.42No
its_session_info5.3.2.43No
ussd_service_op5.3.2.44No

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ámetroRef. Spec 3.4Compatible
service_type5.2.11No
source_addr_ton5.2.5
source_addr_npi5.2.6
source_addr5.2.8
dest_addr_ton5.2.5
dest_addr_npi5.2.6
destination_addr5.2.9
esm_class5.2.12
protocol_id5.2.13No
priority_flag5.2.14No
schedule_delivery_time5.2.15No
validity_period5.2.16No
registered_delivery5.2.17No
replace_if_present_flag5.2.18No
data_coding5.2.19
sm_default_msg_id5.2.20No
sm_length5.2.21
short_message5.2.22

Parámetros opcionales:

Nombre del parámetroRef. Spec 3.4Compatible
receipted_message_id5.3.2.12
user_message_reference5.3.2.17No
source_port5.3.2.20No
destination_port5.3.2.21No
sar_msg_ref_num5.3.2.22No
sar_total_segments5.3.2.23No
sar_segment_seqnum5.3.2.24No
user_response_code5.3.2.18No
privacy_indicator5.3.2.14No
payload_type5.3.2.10No
message_payload5.3.2.32No
callback_num5.3.2.36No
source_subaddress5.3.2.15No
dest_subaddress5.3.2.16No
language_indicator5.3.2.19No
its_session_info5.3.2.43No
network_error_code5.3.2.31No
message_state5.3.2.35No

Parámetros específicos de OVHcloud:

Nombre del parámetroTag TLV (hex)Tipo de campoTamañoDescripción
outgoing_id0x1401Cadena de caracteres terminada en null (\0)64 bytesID interno de OVHcloud utilizado en el caso de un DLR
incoming_id0x1402Cadena de caracteres terminada en null (\0)64 bytesID 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
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 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 codeValueDescription
ESME_RBINDTHROTTLED0x00000400Too many bind authentication
ESME_RUNSDATACODING0x00000401Data Coding unsupported
ESME_RINVGSM7CODING0x00000402Short 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

Gestionar una cuenta de SMS SMPP

Interactúe con nuestra comunidad de usuarios.

¿Le ha resultado útil esta página?