Custom OTP Code Delivery - Secure Transmission and Best Practices
Si prefiere generar usted mismo el código de verificación en lugar de utilizar la plataforma de EngageLab, puede llamar a esta API.
Esta API se utiliza específicamente para enviar códigos de verificación generados previamente y no generará los códigos por sí misma. Después de enviar el código de verificación, no es necesario llamar a la API de verificación para validarlo.
Si prefiere que la plataforma de EngageLab genere el código de verificación, puede llamar a la API de envío de OTP de EngageLab.
Endpoint
POST https://otp.api.engagelab.cc/v1/codes
Autenticación
Se utiliza HTTP Basic Authentication para la verificación. Añadir un Authorization en el encabezado HTTP:
Authorization: Basic ${base64_auth_string}
El algoritmo de generación del valor anterior base64_auth_string es: base64(dev_key:dev_secret)
Ejemplo de solicitud
Encabezado de solicitud
POST /v1/codes HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Cuerpo de la solicitud
{
"to": "+8618701235678",
"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 el encabezado de la solicitud debe incluir Content-Type: application/json.
| Parámetro | Tipo | Opción | Descripción |
|---|---|---|---|
| to | String | Obligatorio | El destino, ya sea un número de teléfono o una dirección de correo electrónico, p. ej., +8613800138000, support@engagelab.com |
| code | String | Obligatorio | El código de verificación personalizado |
| template | JSON Object | Obligatorio | Información de la plantilla, incluidos los subparámetros siguientes |
| |_ id | String | Obligatorio | ID de la plantilla |
| |_ language | String | Opcional | Idioma de la plantilla. Idiomas de plantilla compatibles con las siguientes opciones: 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 especifica, el valor predeterminado se establecerá en "default". |
| |_ params | JSON Object | Opcional | Valores de variables de plantilla personalizados. Si se han personalizado variables al crear la plantilla, pasar aquí sus valores. Si no se proporciona, las claves de las variables se enviarán tal cual, p. ej., {{var}} |
Notas sobre params
- Para plantillas con campos preconfigurados como from_id, si no se pasa el valor del campo param_vars, el mensaje utilizará el from_id preconfigurado de la plantilla durante el envío;
- Si se pasan valores del campo param_vars, como
param_vars:{"from_id":"12345"}, durante el envío, el from_id de la plantilla se sustituirá por 12345; - De forma similar, para campos de variables personalizados en el contenido de la plantilla creada, asignar valores mediante param_vars; p. ej., para el contenido de plantilla
Hi {{name}}, your verify code is {{code}}, asignar parámetros conparam_vars:{"name":"Bob"}
Parámetros de la respuesta
Respuesta correcta
| 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 entrega actual; las opciones incluyen whatsapp/sms/email/voice |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Se debe tener en cuenta que el valor devuelto de send_channel no representa el canal de entrega final al usuario, sino únicamente el canal de la fase actual. Por ejemplo, si la estrategia de la plantilla está configurada para conmutar de WhatsApp a SMS en caso de fallo de entrega, la respuesta de la API mostrará inicialmente whatsapp y, posteriormente, si se detecta un fallo de entrega, el sistema utilizará el canal SMS para el envío.
Respuesta de error
Código de estado HTTP 4xx o 5xx; el cuerpo de la respuesta incluye los siguientes campos:
| Campo | Tipo | Opción | Descripción |
|---|---|---|---|
| code | int | Obligatorio | Código de error; consulte Códigos de error para obtener más detalles |
| message | String | Obligatorio | 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 incorrecto o ausente |
| 2002 | 401 | Fallo de autenticación; token caducado o deshabilitado |
| 2004 | 403 | Sin permisos para llamar a esta API |
| 3001 | 400 | Formato de parámetro de solicitud no válido; comprobar si cumple el formato de parámetros JSON |
| 3002 | 400 | Parámetros de solicitud incorrectos; verificar según los requisitos |
| 3003 | 400 | Parámetros de solicitud incorrectos; falló la validación de negocio; consultar el campo message para la descripción del error |
| 3004 | 400 | Se ha superado el límite de frecuencia; no se puede reenviar a la misma plantilla y al mismo usuario objetivo dentro del periodo de validez de la OTP |
| 4001 | 400 | El recurso relacionado no existe; p. ej., uso de una plantilla inexistente para el envío 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 |

