Envío de código OTP personalizado
Si quieres generar tú mismo los códigos de verificación, en lugar de que los genere la plataforma EngageLab, puedes llamar a esta API.
Esta API se utiliza específicamente para enviar códigos de verificación pregenerados y no genera códigos de verificación por sí sola. Después de enviar un código de verificación, no es necesario llamar a una API de verificación para validarlo.
Si quieres que la plataforma EngageLab genere los códigos de verificación, puedes llamar a la API EngageLab OTP Verification Code Delivery.
Endpoint
POST https://otp.api.engagelab.cc/v1/codes
Autenticación
Utiliza autenticación básica HTTP añadiendo Authorization a la cabecera HTTP:
Authorization: Basic ${base64_auth_string}
El algoritmo de generación de base64_auth_string anterior es: base64(dev_key:dev_secret).
Ejemplo de solicitud
Cabecera de la solicitud
POST /v1/codes HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Cuerpo de la solicitud
{
"to": "+6591234567",
"code": "398210",
"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 de la solicitud debe incluir Content-Type: application/json.
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | String | Required | Destino de entrega: un número de teléfono o una dirección de correo electrónico, como +6598765432 o support@engagelab.com |
| code | String | Required | El código de verificación personalizado que se va a enviar |
| template | JSON Object | Required | Información de la plantilla. Consulta los parámetros de segundo nivel 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 (el idioma predeterminado). |
| |_ params | JSON Object | Optional | Valores para las claves de variables personalizadas de la plantilla. Si definiste variables personalizadas al crear la plantilla, asigna aquí sus valores. Si no se proporciona, la clave de variable se enviará directamente, como {{var}}. |
Descripción de params
- Para campos de plantilla predefinidos como
from_id, si no se proporciona el valor del campoparam_vars, se utilizará elfrom_idpredefinido en la plantilla cuando se envíe el mensaje. - Si se proporciona el valor del campo
param_vars, comoparam_vars:{"from_id":"12345"}, entonces elfrom_idde la plantilla se sustituirá por12345cuando se envíe el mensaje. - Los campos de variables personalizadas en el contenido de la plantilla creados durante la creación de la plantilla también reciben valores mediante
param_vars. Por ejemplo, si el contenido de la plantilla esHi {{name}}, your verify code is {{code}}, entonces se requiere 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. Valores posibles: whatsapp/sms/email/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 representa el canal que se está utilizando actualmente. Por ejemplo, si la estrategia de la plantilla está configurada para que el envío a través del canal de WhatsApp vuelva a intentarse automáticamente a través del canal SMS en caso de fallo, la respuesta de la API devolverá el valor whatsapp. Tras un determinado periodo de tiempo, si se detecta un fallo en la 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 detalles, 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 ha proporcionado el token correcto. |
| 2002 | 401 | Error de autenticación. El token ha caducado o ha sido 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 relacionada ha fallado. Consulta la descripción del error en el campo message para más detalles. |
| 3004 | 400 | Límite de frecuencia superado. Para la misma plantilla y el mismo usuario de destino, no se puede volver a realizar el envío dentro del periodo de validez del código de verificación. |
| 4001 | 400 | El recurso relacionado no existe, por ejemplo, usar una plantilla inexistente al enviar un mensaje de plantilla. |
| 5001 | 400 | Error de envío (general/otro) |
| 5011 | 400 | Formato de número de teléfono no válido |
| 5012 | 400 | Destino inalcanzable |
| 5013 | 400 | El número ha sido incluido en la lista negra |
| 5014 | 400 | El contenido no cumple las especificaciones |
| 5015 | 400 | Mensaje interceptado/rechazado |
| 5016 | 400 | Error interno de envío |
| 5017 | 400 | Sin permiso de envío para China continental |
| 5018 | 400 | Mal funcionamiento del teléfono (apagado/servicio suspendido) |
| 5019 | 400 | El usuario se ha dado de baja |
| 5020 | 400 | Número no registrado/número no válido |










