Envío de SMS mediante el protocolo SMPP
El protocolo abierto SMPP permite a técnicos y empresas integrar sus aplicaciones con la plataforma de mensajería SMS de LabsMobile utilizando un estándar ampliamente adoptado en las telecomunicaciones. Este protocolo es utilizado para el intercambio de mensajes SMS entre centros de servicio de mensajes cortos (SMSC) y aplicaciones externas de envío.
Las funcionalidades por medio del protocolo SMPP son:
- Envío de mensajes SMS Estándar
- Envío de mensajes SMS Unicode
- Envío de mensajes SMS Concatenados
- Recibir los estados de cada SMS (DLR)
Esta documentación explica detalladamente el proceso de integración y automatización de estas funcionalidades.
Para iniciar una integración con el envío por medio del protocolo SMPP son imprescindibles los siguientes requisitos:
- Una cuenta de LabsMobile asociada con un nombre de usuario (correo electrónico de registro). Crea una cuenta aquí.
- La cuenta debe tener saldo disponible para permitir el envío de mensajes.
A tener en cuenta
Esta documentación está destinada a desarrolladores de software y programadores que buscan implementar el envío de mensajes SMS usando el protocolo SMPP. Actualmente se maneja la versión 3.4.
Si esta integración no se ajusta a los requerimientos o si prefiere un enfoque más sencillo, es recomendable usar la API http/POST.
Activación del Servicio SMPP
Para activar este servicio es necesario diligenciar el siguiente formulario. En el formulario te solicitaran:
- Correo electrónico asociado a la cuenta.
- Si la cuenta y primera compra han sido validadas.
- Dirección IP del servidor que realizará las conexiones SMPP.
- Estimación de volumen mensual de mensajes.
Con la información anteriormente descrita se establecerá el usuario (system_id) y la contraseña que se manejará para la autenticación.
Recomendación Recomendamos activar las Recargas automáticas para que siempre existan créditos disponibles en la cuenta y no se interrumpa el servicio de envío SMS.
PDU SMPP compatibles
El servidor SMPP admite las siguientes PDU, fundamentales para establecer y mantener la comunicación entre el cliente y el servidor. A continuación se detallan sus funciones principales y cómo intervienen en la transmisión y recepción de mensajes SMS.
- Ampliar todo
Tipos de PDU
El servidor SMPP admite las siguientes PDU
bind_transmitter
Es una solicitud para establecer una sesión SMPP como transmisor (transmitter). El cliente envía este comando al SMSC (servidor) para autenticarse y enviar mensajes SMS salientes.
unbind
Se utiliza para cerrar una sesión SMPP de forma correcta. Indicando que ya no necesita mantener la conexión activa.
submit_sm
Se encarga de enviar un mensaje SMS a través de una sesión activa.
deliver_sm
Es el comando que el SMSC usa para confirmar el estado de entrega del mensaje (DLR).
enquire_link
Sirve como
ping
de mantenimiento para comprobar que la conexiónTCP
sigue activa entre el cliente y el sevidor.
Las PDUs pueden devolver los siguientes estados:
ESME_ROK | Indica que la operación fue aceptada correctamente. |
ESME_RUNKNOWNERR | Código de error genérico que indica un error desconocido en el servidor SMPP o falta de saldo en la cuenta. |
Recomendación Asegúrese de que la IP proporcionada esté correctamente configurada para establecer conexiones salientes hacia el servidor SMPP. Además, recomendamos utilizar una IP estática y un servidor dedicado para garantizar la estabilidad y seguridad de la conexión.
Parámetros de envío SMS
El comando submit_sm
es el método principal para enviar mensajes SMS a través de SMPP. En este apartado se detallan los parámetros clave que deben incluirse en cada solicitud para garantizar el correcto envío del mensaje.
- Ampliar todo
PARÁMETROS
Los parámetros o datos se envían cuando se realiza una conexión SMPP. A continuación se describen los valores y funcionalidad de todos los parámetros.
source_addr_ton integer obligatorio
Se recomienda usar el valor
5
para remitentes alfanuméricos,3
para short codes y0
o1
para números internacionales.Ejemplo:
"source_addr_ton":5
source_addr_npi integer obligatorio
Normalmente se utiliza el valor
0
para remitentes tipo short code o alfanuméricos. Si el remitente es un número internacional, se debe utilizar el valor1
.Ejemplo:
"source_addr_npi":0
source_addr string obligatorio
Puede ser un número short code, un número internacional o un texto alfanumérico, según los valores configurados en
TON
yNPI
. Se debe tener en cuenta que el remitente depende del país de destino. Para más información, puede validar la siguiente documentación.Ejemplo:
"source_addr":"LABSMOBILE"
dest_addr_ton integer obligatorio
Debe establecerse en
1
para indicar que el número es internacional.Ejemplo:
"dest_addr_ton":1
dest_addr_npi integer obligatorio
Debe establecerse en
1
para usar el formato internacional E.164 .Ejemplo:
"dest_addr_npi":1
destination_addr string obligatorio
Se debe indicar que el número es internacional utilizando los valores adecuados en
TON
yNPI
, y el número debe seguir el formato internacional E.164 .Ejemplo:
"destination_addr":"573124868812"
short_message string obligatorio
Texto del mensaje SMS que se desea enviar. La longitud máxima depende de la codificación utilizada
data_coding
.Si se envían SMS estándar sólo son válidos los caracteres del alfabeto GSM 3.38 7bit . Se pueden enviar también SMS Concatenados y SMS Unicode.
Ejemplo:
"short_message":"Hello world!"
data_coding integer obligatorio
Define el tipo de codificación del mensaje. Afecta la cantidad de caracteres y el tipo de símbolos permitidos.
Utilizar valor
0
(SMSC) o1
(IA5_ASCII) para mensajes estándar. Utilizar8
(UCS2) si el mensaje contiene caracteres especiales.Ejemplo:
"data_coding":8
{ "cmdName":"submit_sm", "params":{ "source_addr_ton":3, "source_addr_npi":0 "source_addr":"LABSMOBILE", "dest_addr_ton":1 "dest_addr_npi":1 "destination_addr":"573124868812", "short_message":"Hello world!", "registered_delivery":1, "data_coding":1, "sm_length":8 }, "seqNr":2, "cmdStatus":"ESME_ROK" }
Importante El código ESME_ROK
indica que la petición fue aceptada a nivel de protocolo, pero no implica que el mensaje fue entregado al dispositivo del usuario. Se debe esperar un DLR o objeto PDU para conocer el estado final de entrega.
Recomendación En caso de recibir ESME_RUNKNOWNERR
, verifique que su cuenta tenga saldo disponible para realizar envíos. Además, asegúrese de que se está especificando correctamente el número telefónico de destino y el contenido del mensaje.
Parámetros de conexión
Los siguientes datos son necesarios para establecer una conexión SMPP y permitir el envío de mensajes SMS. A continuación, se detallan los valores y la función de cada uno de los parámetros requeridos.
system_id | Identificador de usuario asignado para la autenticación SMPP | B000123456 |
password | Contraseña asociada al system_id | Kz234d&5 |
host | IP o dominio del servidor SMPP | smpp.labsmobile.com |
port | Puerto TCP para establecer la conexión | 2775 |
bind_type | Define qué operaciones puede realizar el cliente. | bind_transmitter |
Estados de entrega
Los estados de entrega se incluyen en el campo short_message
dentro del PDU deliver_sm
, el cual contiene información del resultado del envío de cada mensaje.
Formato típico: id:XXXXXXXXXX submit date:YYMMDDHHMM done date:YYMMDD
id
: Identificador del mensaje enviado.submit date
: Fecha y hora del envío en formatoYYMMDDHHMM
.done date
: Fecha y hora en que se completó el intento de entrega en formatoYYMMDDHHMM
.stat
: Estado final del mensaje (por ejemplo:DELIVRD
,UNDELIV
, etc.).err
: Código de error numérico, presente si el mensaje no fue entregado correctamente.
Ejemplo: short_message: "id:681ca29a4caec submit date:2505081
A continuación se describe cada uno de los estados de entrega:
DELIVRD | Estado de entrega que indica que el mensaje fue entregado exitosamente al dispositivo del destinatario. |
UNDELIV | No ha sido posible entregar el mensaje, normalmente porque el número es incorrecto. |
REJECTD | Mensaje rechazado por alguna política del operador o por el dispositivo móvil. |
Recursos de soporte
Recomendamos consultes y tengas en cuenta los siguientes recursos de soporte en tu integración:
- Guía técnica de un proceso de validación o autenticación OTP por SMS
- Todas las versiones y funcionalidades de la API de LabsMobile
- Tutorial primeros pasos de una integración API
- Crea una cuenta de prueba
- Recomendaciones y buenas prácticas en cualquier integración
- Plugins, módulos y extensiones
- ¿Necesitas ayuda? Contacta con nuestros técnicos