Envío de mensajes personalizados
Si ha creado contenido de plantilla personalizado en la plataforma OTP, llame a esta interfaz para enviar el contenido del mensaje personalizado.
Dirección de la llamada
POST https://otp.api.engagelab.cc/v1/custom-messages
Autenticación de llamadas
Consulte Autenticación de llamadas para saber cómo autenticar la API.
Formato de la solicitud
Encabezados de la solicitud
POST /v1/custom-messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Cuerpo de la solicitud
{
"to": "+6591234567",
"template":{
"id":"test-template-1",
"params": {
"code": "codevalue",
"var1":"value1"
}
}
}
Parámetros de la solicitud
Un objeto de solicitud se expresa en formato JSON, por lo que el encabezado de la solicitud debe incluir Content-Type: application/json.
| Parámetro | Tipo | Opción | Descripción |
|---|---|---|---|
| to | String | Obligatorio | Destino del envío, número de teléfono o dirección de correo, +6598765432, support@engagelab.com |
| template | JSON Object | Obligatorio | Información de la plantilla; los parámetros de segundo nivel que contiene se indican a continuación |
| |_ id | String | Obligatorio | ID de la plantilla |
| |_ params | JSON Object | Opcional | Parámetros de la plantilla |
| _ |_ code | String | Opcional | Cuando el tipo de plantilla es código de verificación, este campo es obligatorio. |
| _ |_ var | String | Opcional | Valor de la Key de variable personalizada de la plantilla |
| Si definió variables personalizadas al crear la plantilla, asígneles aquí su valor; si no se pasa, se enviará directamente con la Key de la variable, como {{var1}} |
Acerca de params
- Para las variables preestablecidas de la plantilla como {{brand_name}}, {{ttl}}, {{pwa_url}}, no es necesario pasarlas; el sistema las sustituirá automáticamente por el contenido especificado al crear la plantilla;
- Si el tipo de plantilla es código de verificación, es obligatorio pasar la variable {{code}}; de lo contrario, se producirá un error.;
- Asimismo, para los campos de variables personalizadas del contenido de la plantilla definidos al crearla, también se asignan sus valores mediante params; por ejemplo, si el contenido de la plantilla es
Hi {{name}}, your verify code is {{code}}, deberá asignar el parámetroparams:{"name":"Bob"} - Variables especiales del canal Email: para el canal Email, se admite sobrescribir dinámicamente mediante
paramsel asunto del correo (subject), el nombre del remitente (from_name), el correo del remitente (from_mail), etc. Para el uso avanzado detallado, consulte Crear plantilla - Uso avanzado de las variables de plantilla de Email.
Ejemplos de solicitud
1. Enviar un código de verificación personalizado:
{
"to": "+6591234567",
"template":{
"id":"code-template",
"params": {
"code": "123456"
}
}
}
2. Enviar contenido de notificación personalizado:
{
"to": "+6591234567",
"template": {
"id": "notification-template",
"params": {
"order": "123456"
}
}
}
3. Enviar contenido de marketing personalizado:
{
"to": ["+6591234567"],
"template": {
"id": "marketing-template",
"params": {
"name": "EngageLab",
"promotion": "30%"
}
}
}
Parámetros de la respuesta
Respuesta exitosa
| Campo | Tipo | Opción | Descripción |
|---|---|---|---|
| message_id | String | Obligatorio | ID del mensaje, identifica de forma única un mensaje |
| send_channel | String | Obligatorio | Indica el canal de envío actual; los valores posibles son whatsapp/sms/email/voice |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Tenga en cuenta que el valor de**send_channel**devuelto no representa el canal final por el que se entrega al usuario, sino únicamente el canal usado en la etapa actual; por ejemplo, si en la estrategia configurada en la plantilla se establece que, ante un fallo de entrega por el canal WhatsApp, se reenvíe automáticamente por el canal SMS, la interfaz devolverá el valor whatsapp y, tras detectar el fallo de entrega pasado un tiempo, el sistema enviará por el canal SMS.
Respuesta de error
El código de estado HTTP es 4xx o 5xx, y el cuerpo de la respuesta contiene los siguientes campos:
| Campo | Tipo | Opción | Descripción |
|---|---|---|---|
| code | int | Obligatorio | Código de error; véase la descripción de los códigos de error |
| message | String | Obligatorio | Detalles del error |
{
"code": 5001,
"message": "sms send fail"
}
Códigos de error
| Código de error | http code | Descripción |
|---|---|---|
| 1000 | 500 | Error interno |
| 2001 | 401 | Error de autenticación; no se incluyó un token correcto |
| 2002 | 401 | Error de autenticación; el token ha expirado o ha sido deshabilitado |
| 2004 | 403 | Sin permiso para llamar a esta API |
| 3001 | 400 | Formato de los parámetros de la solicitud no válido; compruebe que el contenido JSON cumple el formato de los parámetros |
| 3002 | 400 | Parámetros de la solicitud incorrectos; compruebe que los parámetros de la solicitud cumplen los requisitos |
| 3003 | 400 | Parámetros de la solicitud incorrectos; falló la validación de negocio correspondiente; consulte la descripción del error en el campo message |
| 3004 | 400 | Se superó el límite de frecuencia; para la misma plantilla y el mismo usuario de destino, no se puede volver a enviar dentro del periodo de validez del código de verificación |
| 4001 | 400 | El recurso correspondiente no existe; por ejemplo, se usó una plantilla inexistente al enviar el mensaje de plantilla |
| 5001 | 400 | Error de envío (genérico/otros) |
| 5011 | 400 | Formato del número de teléfono no válido |
| 5012 | 400 | Destino inalcanzable |
| 5013 | 400 | El número está en la lista negra |
| 5014 | 400 | El contenido no cumple las normas |
| 5015 | 400 | Mensaje interceptado/rechazado |
| 5016 | 400 | Error interno de envío |
| 5017 | 400 | Sin permiso de envío a la región de China |
| 5018 | 400 | Teléfono averiado (apagado/suspendido) |
| 5019 | 400 | El usuario ha cancelado la suscripción |
| 5020 | 400 | Número no registrado/inexistente |










