Entrega de OTP
Esta API genera códigos de verificación a través de la plataforma EngageLab y los entrega según la estrategia de canal especificada en la plantilla.
Si quieres generar los códigos de verificación tú mismo en lugar de usar la plataforma EngageLab, puedes llamar a la API EngageLab OTP Custom Verification Code Delivery.
Endpoint
POST https://otp.api.engagelab.cc/v1/messages
Autenticación
Usa autenticación básica HTTP y añade Authorization a la cabecera HTTP:
Authorization: Basic ${base64_auth_string}
El algoritmo para generar base64_auth_string es: base64(dev_key:dev_secret)
Ejemplo de solicitud
Cabecera de la solicitud
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Cuerpo de la solicitud
{
"to": "+6591234567",
"template": {
"id": "test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
Parámetros de la solicitud
Un objeto de solicitud se expresa en formato JSON, por lo que la cabecera debe incluir Content-Type: application/json.
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | String | Required | Destinatario: número de teléfono o dirección de correo electrónico, por ejemplo, +6598765432 o support@engagelab.com |
| template | JSON Object | Required | Información de la plantilla. Consulta los parámetros anidados a continuación. |
| |_ id | String | Required | ID de la plantilla |
| |_ language | String | Optional | Idioma de la plantilla. Se admiten los siguientes idiomas: default: idioma predeterminado zh_CN: chino simplificado zh_HK: chino tradicional en: inglés ja: japonés th: tailandés es: español Si no se proporciona, el valor predeterminado es default (idioma predeterminado). |
| |_ params | JSON Object | Optional | Valores de las claves de variables personalizadas de la plantilla. Si definiste variables personalizadas al crear la plantilla, asígnales aquí sus valores. Si no se proporciona, la clave de la variable se enviará directamente, por ejemplo, {{var}}. |
Notas sobre params
- Para los campos predefinidos en la plantilla, como
from_id, si no se proporciona el valor del campoparam_vars, se utilizará elfrom_idpredefinido de la plantilla al entregar el mensaje. - Si se proporciona el valor del campo
param_vars, por ejemplo,param_vars:{"from_id":"12345"}, elfrom_idde la plantilla se sustituirá por12345cuando se entregue el mensaje. - Del mismo modo, los campos de variables personalizadas del contenido de la plantilla definidos durante su creación también se asignan mediante
param_vars. Por ejemplo, si el contenido de la plantilla esHi {{name}}, your verify code is {{code}}, se requerirá el parámetro de asignaciónparam_vars:{"name":"Bob"}.
Parámetros de respuesta
Respuesta correcta
| Field | Type | Required | Description |
|---|---|---|---|
| message_id | String | Required | ID del mensaje, que identifica de forma única un mensaje |
| send_channel | String | Required | Indica el canal de entrega actual. Los valores posibles son whatsapp, sms, email o voice. |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Ten en cuenta que el valor send_channel devuelto no representa el canal final utilizado para entregar el mensaje al usuario. Solo indica el canal que se está utilizando en ese momento. Por ejemplo, si la estrategia de la plantilla está configurada para que, si falla la entrega a través del canal de WhatsApp, se reintente automáticamente a través del canal SMS, la respuesta de la API devolverá el valor whatsapp. Transcurrido un cierto tiempo, una vez detectado el fallo de entrega, el sistema enviará el mensaje a través del canal SMS.
Respuesta fallida
El código de estado HTTP es 4xx o 5xx, y el cuerpo de la respuesta contiene los siguientes campos:
| Field | Type | Required | Description |
|---|---|---|---|
| code | int | Required | Código de error. Para más información, consulta Códigos de error |
| message | String | Required | Detalles del error |
{
"code": 5001,
"message": "sms send fail"
}
Códigos de error
| Error Code | HTTP Code | Description |
|---|---|---|
| 1000 | 500 | Error interno |
| 2001 | 401 | Error de autenticación; no se proporcionó el token correcto |
| 2002 | 401 | Error de autenticación; el token ha caducado o se ha deshabilitado |
| 2004 | 403 | No tienes permiso para llamar a esta API |
| 3001 | 400 | Formato de parámetro de solicitud no válido. Comprueba si el contenido JSON coincide con el formato de parámetro requerido |
| 3002 | 400 | Parámetros de solicitud no válidos. Comprueba si los parámetros de la solicitud cumplen los requisitos |
| 3003 | 400 | Parámetros de solicitud no válidos. La validación de negocio correspondiente ha fallado. Consulta la descripción del error en el campo message para obtener más detalles |
| 3004 | 400 | Límite de frecuencia superado. Para la misma plantilla y el mismo destinatario, no se puede volver a realizar la entrega dentro del periodo de validez del código de verificación |
| 4001 | 400 | El recurso correspondiente no existe. Por ejemplo, se usa una plantilla inexistente al enviar un mensaje de plantilla |
| 5001 | 400 | Error de envío (general/u otro) |
| 5011 | 400 | Formato de número de teléfono no válido |
| 5012 | 400 | Destino inaccesible |
| 5013 | 400 | El número se ha añadido a la lista negra |
| 5014 | 400 | El contenido no cumple las especificaciones |
| 5015 | 400 | Mensaje interceptado o rechazado |
| 5016 | 400 | Error interno de envío |
| 5017 | 400 | No tienes permiso para enviar a China continental |
| 5018 | 400 | Problema con el teléfono (apagado o servicio suspendido) |
| 5019 | 400 | El usuario se ha dado de baja |
| 5020 | 400 | Número no registrado o número no válido |










