logoDocumentación
Buscar

Sending OTP Codes Securely - Explore Delivery Methods and Best Practices

Esta API genera el código de verificación a través de la plataforma EngageLab y lo entrega según la estrategia de canal especificada en la plantilla.

Si se prefiere generar el código de verificación internamente en lugar de usar la plataforma EngageLab, se puede llamar a la API de envío de OTP personalizado (Custom OTP Send) de EngageLab.

Endpoint

POST https://otp.api.engagelab.cc/v1/messages

Autenticación

Se utiliza HTTP Basic Authentication para la verificación. Añadir Authorization en el encabezado HTTP:

Authorization: Basic ${base64_auth_string}
              
              Authorization: Basic ${base64_auth_string}

            
Este bloque de código se muestra en una ventana flotante

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/messages HTTP/1.1 Content-Type: application/json Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
              
              POST /v1/messages  HTTP/1.1  
Content-Type: application/json  
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0

            
Este bloque de código se muestra en una ventana flotante

Cuerpo de la solicitud

{ "to": "+8618701235678", "template":{ "id":"test-template-1", "language": "default", "params": { "key1": "value1", "key2": "value2" } } }
              
              {
    "to": "+8618701235678",
    "template":{
      "id":"test-template-1",
      "language": "default",
        "params": {
        "key1": "value1",
        "key2": "value2"
        }
    }
}

            
Este bloque de código se muestra en una ventana flotante

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 Obligatoriedad Descripción
to String Obligatorio Destino; puede ser un número de teléfono o una dirección de correo electrónico, p. ej., +8613800138000, support@engagelab.com
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. Se admiten 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 será "default".
|_ params JSON Object Opcional Valores de variables de plantilla personalizadas. Si se han personalizado variables al crear la plantilla, se deben pasar aquí sus valores. Si no se proporcionan, las claves de las variables se enviarán tal cual, p. ej., {{var}}

Notas sobre params

  1. Para plantillas con campos preestablecidos como from_id, si no se pasa el valor del campo param_vars, durante el envío el mensaje utilizará el from_id preestablecido de la plantilla.
  2. Si se pasan valores del campo param_vars, como param_vars:{"from_id":"12345"}, entonces, durante el envío, el from_id de la plantilla se reemplazará por 12345.
  3. Del mismo modo, para campos de variables personalizadas en el contenido de la plantilla creada, se deben asignar valores mediante param_vars; p. ej., para el contenido de plantilla Hi {{name}}, your verify code is {{code}}, se deben asignar parámetros con param_vars:{"name":"Bob"}.

Parámetros de la respuesta

Respuesta correcta

Campo Tipo Obligatoriedad Descripción
message_id String Obligatorio ID del mensaje, que identifica un mensaje de forma única
send_channel String Obligatorio Indica el canal de entrega actual; las opciones incluyen whatsapp/sms/email/voice
{ "message_id": "1725407449772531712", "send_channel": "sms" }
              
              {
    "message_id": "1725407449772531712",
    "send_channel": "sms"
}

            
Este bloque de código se muestra en una ventana flotante

Se debe tener en cuenta que el valor send_channel devuelto 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 cambiar de WhatsApp a SMS cuando la entrega falla, la API devolverá 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 Obligatoriedad Descripción
code int Obligatorio Código de error; consultar Códigos de error para obtener más detalles
message String Obligatorio Detalles del error
{ "code": 5001, "message": "sms send fail" }
              
              {
    "code": 5001,
    "message": "sms send fail"
}

            
Este bloque de código se muestra en una ventana flotante

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; 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 si se ajusta al formato de parámetros JSON
3002 400 Parámetros de solicitud incorrectos; verificar conforme a los requisitos
3003 400 Parámetros de solicitud incorrectos; fallo en la validación de negocio; consultar el campo message para ver 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 del OTP
4001 400 El recurso relacionado no existe; p. ej., se utiliza 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
icon
Contacto