# Sms
# Conceptos
# GSM7
GSM-7 es el alfabeto estándar utilizado para los mensajes SMS. En caso de envíar caracteres fuera del alcance de GSM-7, serán reemplazados por su parecido más próximo. Ej.: Una 'í' será reemplazado por una 'i' sin tílde.
Los caracteres admitidos por la codificación GSM7 son:

# Contabilización de mensajes
Los mensajes SMS permiten envíar hasta 160 caracteres para ser considerados como 1 mensaje, en caso se envíen más caracteres se contabilizará como lo indica la siguiente tabla:
| Cant. Caracteres | Costo |
|---|---|
| hasta 160 | 1 mensaje |
| hasta 305 | 2 mensajes |
| hasta 450 | 3 mensajes |
# POST Mensajes
Requisitos:
Contar con usuario y contraseña con acceso a la API.
Este servicio API permite enviar un SMS a una lista de números telefónicos. Debe considerar el contenido del mensaje en formato GSM-7. Para tener en cuenta los caracteres admitidos, ver Codificación GSM7
# Endpoint
https://api.enviamas.pe/api/sms/create_campaign
# Headers
| Tables | Are |
|---|---|
| Type | POST |
| Content-Type | application/json |
| Authorization | Basic Auth |
# Payload
{
"campaign_name": "Nombre de la campaña",
"messages": [
{
"phone": 9573144449,
"text": "Mensaje 1",
"message_id": "id-123"
},
{
"phone": 966278731,
"text": "Mensaje 2",
"message_id": "id-4321"
}
],
"options": {
"push": true,
"is_bidireccional": false
}
}
# Response
{
"succcess": true,
"message": "Campaña creada exitosamente",
"data": {
"campaign_id": "MjAyNzY3"
}
}
# Example CURL
curl --location 'https://api.enviamas.pe/api/sms/create_campaign' \
--header 'Content-Type: application/json' \
--header 'Authorization: ------tu-basic-auth----------' \
--data '{
"campaign_name": "Campaña de ejemplo",
"messages": [
{
"phone": 957314449,
"text": "Mensaje uno ",
"message_id": "asd21"
}
],
"options": {
"push": false,
"is_bidireccional": false
}
}'
# POST Mensajes prioritarios
Restricción:
Este servicio API no está diseñado para campañas de marketing. Recomendamos utilizar nuestro servicio API SMS (opens new window) específico para ese propósito. El servicio de Mensajes prioritarios debe reservarse exclusivamente para el envío de mensajes que requieren atención inmediata, como notificaciones críticas, claves de seguridad, tokens y autenticación de dos factores (2FA).
Requisitos:
Contar con usuario y contraseña con acceso a la API.
Este servicio API permite enviar un SMS prioritario o SMS OTP (One Time Password), este tipo de mensajes utilizan una ruta de entrega inmediada. Para tener en cuenta los caracteres admitidos, ver Codificación GSM7
# Endpoint
https://api.enviamas.pe/api/sms/create_campaign_otp
# Headers
| Tables | Are |
|---|---|
| Type | POST |
| Content-Type | application/json |
| Authorization | Basic Auth |
# Payload
{
"message_otp": {
"phone": 957314449, //no considerar código de país
"text": "Contenido del mensajes",
"message_id": "id-1234" //identificador opcional
},
"options": {
"push": true, //mensaje sms clase 0
"is_bidireccional": false //permise recibir mensajes
}
}
# Response
{
"succcess": true,
"message": "Mensaje enviado exitosamente",
"data": {
"campaign_id": "Mj...zY2"
}
}
# Example CURL
curl --location 'https://api.enviamas.pe/api/sms/create_campaign_otp' \
--header 'Content-Type: application/json' \
--header 'Authorization: ------tu-basic-auth----------' \
--data '{
"message_otp": {
"phone": "996653176",
"text": "mensaje de prueba",
"message_id": ""
},
"options": {
"push": false,
"is_bidireccional": false
}
}'
# GET Reportes
Requisitos:
Contar con usuario y contraseña con acceso a la API.
Requiere el campaign_id obtenido de los Mensajes y Mensajes prioritarios.
Este servicio API permite obtener un reporte detallado de los mensajes enviados en los servicios Mensajes y Mensajes prioritarios.
# Endpoint
https://api.enviamas.pe/api/sms/report_campaign/{campaign_id}
# Headers
| Tables | Are |
|---|---|
| Type | POST |
| Content-Type | application/json |
| Authorization | Basic Auth |
# Response
{
"success": true,
"message": "Reporte de mensajes por campaña",
"data": [
{
"message_id": "id-1234",
"phone": "9573144449",
"text": "Contenido del mensajes",
"send_at": "2023-09-15 13:34:03",
"status": "REJECTED",
"carrier": "ENTEL PERÚ"
}
]
}
# WEBHOOK Reportes
Este servicio permite a EnviaMas entregar a nuestros clientes el status de los mensajes SMS. Esto se realiza mediante una ejecución POST a un EndPoint que el cliente deberá habilitar para recibir estas notificaciones. La entrega de los status se dará en los próximos segundos de enviado el mensaje, y dependerá del operador telefónico que corresponda que el status sea entregado en tiempo y forma.
El servicio web a desarrollar debe atender a una solicitud POST del protocolo HTTP, el cuál recibe cadenas JSON y devuelve un resultado en texto plano. A continuación, se muestra la información necesaria para realizar la conexión del servicio:
# payload
{
"phone": "957314449",
"message_id": 12345678, //Tu message_id enviado en el api
"statusDelivery": "DELIVERED",
"sendDate": 1699996153513,
"carrier": "CLARO_PE"
}
Para configurar la URL del endpoint, debe hacerlo desde la plataforma APP EnviaMas, ingresar a la opción Mi Cuenta, ubicado en la parte superior derecha. Una vez adentro, se debe activar la opción DLR SMS, ingresar la URL, y si corresponde el usuario y contraseña para la autenticación Basic Auth que será enviado en la solicitud enviada por el servicio.
# WEBHOOK Recibidos
Este servicio permite a EnviaMas entregar un mensaje SMS recibido como respuesta a un mensaje enviado por el usuario hacia un enpoint desarrollado por el cliente, como se puede observar a continuación:

El payload que se entregará hacia el enpoint desarrollado por el cliente, tiene la siguiente estructura json:
# payload
{
"message_id": 323423324,
"phone": "940885890",
"message": "CONFIRMO"
}
Para indicar la URL del enpoint, deberá indicarlo en la plataforma EnviaMas, dirigiendose a Mi Cuenta->Servicios->SMS->Webhooks->Incoming messages Webhook

La URL es obligatoria, y deberá ser válida al momendo de configurarlo (debe responder 200 OK). Se puede enviar una cabecera de autenticación Basic Auth opcionalmente, eso permitirá que sólo EnviaMas pueda enviar datos al endpoint.
Le indicamos un código de ejemplo en lenguaje Javascript y Node.js que puede tomarlo como referencia para implementar su propio endpoint.
# Ejemplo de código del endpoint
//Código desarrollado en Node
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const PORT = 80;
// Middleware para parsear el cuerpo de las solicitudes
app.use(bodyParser.json());
// Endpoint para recibir el payload
app.post('/receive', (req, res) => {
const payload = req.body;
console.log('Payload recibido:', payload);
// Responder con "ok"
res.send('ok');
});
// Iniciar el servidor
app.listen(PORT, () => {
console.log(`Servidor escuchando en el puerto ${PORT}`);
});
Suponiendo que el dominio del servidor donde se el archivo es https://tudominio.com, entonces la direción de tu endpoint será: https://tudominio.com/receive.
El servidor deberá permitir recibir solicitudes de cualquier dirección IP.