Custom Messages Delivery
Si se ha creado contenido de plantilla personalizado en la plataforma de OTP, se debe utilizar esta API para enviar contenido de mensajes personalizado.
Endpoint de la API
POST https://otp.api.engagelab.cc/v1/custom-messages
Autenticación
Se utiliza HTTP Basic Authentication para la verificación. Añadir el encabezado Authorization en la solicitud HTTP:
Authorization: Basic ${base64_auth_string}
El valor base64_auth_string se genera mediante el siguiente algoritmo: base64(dev_key:dev_secret)
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": "+8618701235678",
"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 | Obligatorio | Descripción |
|---|---|---|---|
| to | String | Sí | Destinatario; puede ser un número de teléfono (p. ej., +8613800138000) o una dirección de correo electrónico (p. ej., support@engagelab.com). |
| template | JSON Object | Sí | Información de la plantilla. Los subparámetros se describen a continuación. |
| |_ id | String | Sí | ID de la plantilla. |
| |_ params | JSON Object | Opcional | Parámetros de la plantilla. |
| _ |_ code | String | Opcional | Obligatorio si el tipo de plantilla es un código de verificación. |
| _ |_ var | String | Opcional | Valores de variables de plantilla personalizadas. Si se definieron variables al crear la plantilla, se deben pasar aquí sus valores. Si no se proporcionan, se enviará la clave de la variable tal cual (p. ej., {{var1}}). |
Notas sobre params:
Para variables predefinidas de la plantilla, como {{brand_name}}, {{ttl}} y {{pwa_url}}, no es necesario pasar valores; el sistema las reemplazará automáticamente por el contenido especificado durante la creación de la plantilla.
Si el tipo de plantilla es un código de verificación, se debe pasar la variable {{code}}; de lo contrario, se producirá un error.
Para variables personalizadas definidas en el contenido de la plantilla, se deben asignar valores mediante params. Por ejemplo, si el contenido de la plantilla es Hi {{name}}, your verify code is {{code}}, se debe pasar el parámetro params:{"name":"Bob"}.
Ejemplos de solicitud
1. Envío de un código de verificación personalizado:
{
"to": "+8618701235678",
"template":{
"id":"code-template",
"params": {
"code": "123456"
}
}
}
2. Envío de una notificación personalizada:
{
"to": ["+8618701235678"],
"template": {
"id": "notification-template",
"params": {
"order": "123456"
}
}
}
3. Envío de contenido de marketing personalizado:
{
"to": ["+8618701235678"],
"template": {
"id": "marketing-template",
"params": {
"name": "EngageLab",
"promotion": "30%"
}
}
}
Parámetros de la respuesta
Respuesta correcta
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| message_id | String | Sí | ID del mensaje, que identifica un mensaje de forma única. |
| send_channel | String | Sí | Canal utilizado para la entrega. Valores posibles: whatsapp, sms, email, voice. |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Nota: El valor send_channel devuelto no representa el canal de entrega final al usuario, sino únicamente el canal utilizado en la etapa actual. Por ejemplo, si la estrategia de la plantilla está configurada para cambiar a SMS cuando la entrega por WhatsApp falla, la API devolverá inicialmente whatsapp. Si la entrega falla, el sistema cambiará automáticamente a SMS.
Respuesta de error
Los códigos de estado HTTP son 4xx o 5xx, y el cuerpo de la respuesta incluye los siguientes campos:
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| code | Int | Sí | Código de error. Consulte Códigos de error para obtener más detalles. |
| message | String | Sí | Detalles del error. |
{
"code": 5001,
"message": "sms send fail"
}
Códigos de error
| Código de error | Código HTTP | Descripción |
|---|---|---|
| 1000 | 500 | Error interno. |
| 2001 | 401 | Fallo de autenticación: token no válido o ausente. |
| 2002 | 401 | Fallo de autenticación: el token ha caducado o se ha deshabilitado. |
| 2004 | 403 | Sin permisos para llamar a esta API. |
| 3001 | 400 | Formato de parámetro de solicitud no válido. Verificar que el contenido JSON cumple el formato requerido. |
| 3002 | 400 | Parámetros de solicitud no válidos. Verificar si los parámetros cumplen los requisitos. |
| 3003 | 400 | Fallo en la validación de negocio. Consulte el campo message para obtener más detalles. |
| 3004 | 400 | Se ha superado el límite de frecuencia. Para la misma plantilla y el mismo usuario objetivo, no se pueden reenviar códigos de verificación dentro del periodo de validez. |
| 4001 | 400 | Recurso no encontrado (p. ej., se utilizó una plantilla inexistente para la entrega del mensaje). |
| 5001 | 400 | Échec d'envoi (général/autre) |
| 5011 | 400 | Format de numéro de téléphone invalide |
| 5012 | 400 | Destination injoignable |
| 5013 | 400 | Numéro ajouté à la liste noire |
| 5014 | 400 | Contenu non conforme aux réglementations |
| 5015 | 400 | Message intercepté/rejeté |
| 5016 | 400 | Erreur interne d'envoi |
| 5017 | 400 | Absence d'autorisation pour envoyer dans la région de Chine |
| 5018 | 400 | Panne du téléphone (éteint/suspendu) |
| 5019 | 400 | Utilisateur désabonné |
| 5020 | 400 | Numéro non enregistré/numéro invalide |

