logoDocumentation
Rechercher

Sending OTP Codes Securely - Explore Delivery Methods and Best Practices

Cette API génère le code de vérification via la plateforme EngageLab et le délivre selon la stratégie de canal spécifiée dans le modèle.

Si vous préférez générer le code de vérification vous-même au lieu d'utiliser la plateforme EngageLab, vous pouvez appeler l'API d'envoi OTP personnalisé d'EngageLab.

Endpoint

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

Authentification

Utilise l'authentification HTTP Basic pour la vérification. Ajoutez Authorization dans l'en-tête HTTP :

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

            
Afficher ce bloc de code dans la fenêtre flottante

L'algorithme de génération du base64_auth_string ci-dessus est : base64(dev_key:dev_secret)

Exemple de requête

En-tête de la requête

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

            
Afficher ce bloc de code dans la fenêtre flottante

Corps de la requête

{ "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"
        }
    }
}

            
Afficher ce bloc de code dans la fenêtre flottante

Paramètres de la requête

Un objet de requête est exprimé au format JSON, l'en-tête de la requête doit donc inclure Content-Type: application/json.

Paramètre Type Option Description
to String Obligatoire La cible, soit un numéro de téléphone, soit une adresse e-mail, ex. : +8613800138000, support@engagelab.com
template Objet JSON Obligatoire Informations du modèle, incluant les sous-paramètres ci-dessous
|_ id String Obligatoire ID du modèle
|_ language String Optionnel Langue du modèle, prenant en charge les options suivantes :
default (Langue par défaut)
zh_CN (Chinois simplifié)
zh_HK (Chinois traditionnel)
en (Anglais)
ja (Japonais)
th (Thaï)
es (Espagnol)
Par défaut à 'default' si non fourni
|_ params Objet JSON Optionnel Valeurs personnalisées des variables du modèle. Si vous avez personnalisé des variables lors de la création du modèle, transmettez leurs valeurs ici. Si non fourni, les clés de variables seront envoyées telles quelles, ex. : {{var}}

Remarques sur params

  1. Pour les modèles avec des champs prédéfinis comme from_id, si la valeur du champ param_vars n'est pas transmise, le message utilisera le from_id prédéfini du modèle lors de l'envoi ;
  2. Si les valeurs du champ param_vars sont transmises, comme param_vars:{"from_id":"12345"}, alors lors de l'envoi, le from_id du modèle sera remplacé par 12345 ;
  3. De même, pour les champs de variables personnalisées dans le contenu du modèle créé, attribuez des valeurs via param_vars, ex. : pour un contenu de modèle Hi {{name}}, your verify code is {{code}}, attribuez les paramètres avec param_vars:{"name":"Bob"}

Paramètres de réponse

Réponse en cas de succès

Champ Type Option Description
message_id String Obligatoire ID du message, identifiant unique d'un message
send_channel String Obligatoire Indique le canal de diffusion actuel, options possibles : whatsapp/sms/email/voice
{ "message_id": "1725407449772531712", "send_channel": "sms" }
              
              {
    "message_id": "1725407449772531712",
    "send_channel": "sms"
}

            
Afficher ce bloc de code dans la fenêtre flottante

Remarque : la valeur send_channel retournée ne représente pas le canal de livraison final à l'utilisateur, mais uniquement le canal de la phase en cours. Par exemple, si la stratégie du modèle est configurée pour basculer de WhatsApp à SMS en cas d'échec de livraison, l'API retournera d'abord whatsapp, puis, si un échec de livraison est détecté, le système utilisera le canal SMS pour l'envoi.

Réponse en cas d'échec

Code d'état HTTP 4xx ou 5xx, le corps de la réponse inclut les champs suivants :

Champ Type Option Description
code int Obligatoire Code d'erreur, voir Codes d'erreur pour plus de détails
message String Obligatoire Détails de l'erreur
{ "code": 5001, "message": "sms send fail" }
              
              {
    "code": 5001,
    "message": "sms send fail"
}

            
Afficher ce bloc de code dans la fenêtre flottante

Codes d'erreur

Code d'erreur Code HTTP Description
1000 500 Erreur interne
2001 401 Authentification échouée, token incorrect ou manquant
2002 401 Authentification échouée, token expiré ou désactivé
2004 403 Pas d'autorisation pour appeler cette API
3001 400 Format de paramètre de requête invalide, veuillez vérifier la conformité au format JSON
3002 400 Paramètres de requête incorrects, veuillez vérifier les exigences
3003 400 Paramètres de requête incorrects, validation métier échouée, reportez-vous au champ message pour la description de l'erreur
3004 400 Limite de fréquence dépassée, impossible de renvoyer au même modèle et utilisateur cible pendant la période de validité de l'OTP
4001 400 Ressource associée inexistante, ex. : utilisation d'un modèle inexistant pour l'envoi de messages
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
Contactez-nous