Envoi de code OTP personnalisé
Si vous souhaitez générer vous-même les codes de vérification au lieu de les faire générer par la plateforme EngageLab, vous pouvez appeler cette API.
Cette API est spécifiquement conçue pour envoyer des codes de vérification pré-générés et ne génère pas elle-même de codes de vérification. Après l'envoi d'un code de vérification, il n'est pas nécessaire d'appeler une API de vérification pour le valider.
Si vous souhaitez que la plateforme EngageLab génère les codes de vérification, vous pouvez appeler l'API EngageLab OTP Verification Code Delivery.
Point de terminaison
POST https://otp.api.engagelab.cc/v1/codes
Authentification
Utilisez l'authentification HTTP Basic en ajoutant Authorization à l'en-tête HTTP :
Authorization: Basic ${base64_auth_string}
L'algorithme de génération de base64_auth_string ci-dessus est le suivant : base64(dev_key:dev_secret)
Exemple de requête
En-tête de requête
POST /v1/codes HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Corps de la requête
{
"to": "+6591234567",
"code": "398210",
"template": {
"id": "test-template-1",
"language": "default",
"params": {
"key1": "value1",
"key2": "value2"
}
}
}
Paramètres de requête
Un objet de requête est exprimé au format JSON ; l'en-tête de requête doit donc inclure Content-Type: application/json.
| Parameter | Type | Required | Description |
|---|---|---|---|
| to | String | Required | Cible de livraison : un numéro de téléphone ou une adresse e-mail, par exemple +6598765432 ou support@engagelab.com |
| code | String | Required | Le code de vérification personnalisé à envoyer |
| template | JSON Object | Required | Informations sur le modèle. Voir les paramètres de second niveau ci-dessous |
| |_ id | String | Required | ID du modèle |
| |_ language | String | Optional | Langue du modèle. Les langues suivantes sont prises en charge : default Langue par défaut zh_CN Chinois simplifié zh_HK Chinois traditionnel en Anglais ja Japonais th Thaï es Espagnol Si elle n'est pas fournie, la valeur par défaut est default (langue par défaut). |
| |_ params | JSON Object | Optional | Valeurs des variables personnalisées du modèle. Si vous avez défini des variables personnalisées lors de la création du modèle, attribuez-leur leurs valeurs ici. Si aucune valeur n'est fournie, la clé de variable sera envoyée directement, par exemple {{var}}. |
Description de params
- Pour les champs de modèle prédéfinis tels que
from_id, si la valeur du champparam_varsn'est pas fournie, lefrom_idprédéfini dans le modèle sera utilisé lors de l'envoi du message. - Si la valeur du champ
param_varsest fournie, par exempleparam_vars:{"from_id":"12345"}, lefrom_iddu modèle sera remplacé par12345lors de l'envoi du message. - Les champs de variables personnalisées dans le contenu du modèle, créés lors de la création du modèle, reçoivent également des valeurs via
param_vars. Par exemple, si le contenu du modèle estHi {{name}}, your verify code is {{code}}, le paramètre d'affectationparam_vars:{"name":"Bob"}est requis.
Paramètres de réponse
Réponse réussie
| Field | Type | Required | Description |
|---|---|---|---|
| message_id | String | Required | ID du message, qui identifie de manière unique un message |
| send_channel | String | Required | Indique le canal de livraison actuel. Valeurs possibles : whatsapp/sms/email/voice |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Veuillez noter que la valeur send_channel renvoyée ne représente pas le canal final utilisé pour livrer le message à l'utilisateur ; elle représente uniquement le canal actuellement utilisé. Par exemple, si la stratégie du modèle est configurée de sorte qu'une livraison via le canal WhatsApp soit automatiquement retentée via le canal SMS en cas d'échec, la réponse de l'API renverra la valeur whatsapp. Après un certain temps, si un échec de livraison est détecté, le système enverra le message via le canal SMS.
Réponse d'échec
Le code d'état HTTP est 4xx ou 5xx, et le corps de la réponse contient les champs suivants :
| Field | Type | Required | Description |
|---|---|---|---|
| code | int | Required | Code d'erreur. Pour plus de détails, voir Codes d'erreur |
| message | String | Required | Détails de l'erreur |
{
"code": 5001,
"message": "sms send fail"
}
Codes d'erreur
| Error Code | HTTP Code | Description |
|---|---|---|
| 1000 | 500 | Erreur interne |
| 2001 | 401 | Échec de l'authentification. Le jeton correct n'a pas été fourni. |
| 2002 | 401 | Échec de l'authentification. Le jeton a expiré ou a été désactivé. |
| 2004 | 403 | Aucune autorisation pour appeler cette API |
| 3001 | 400 | Format de paramètre de requête invalide. Veuillez vérifier si le contenu JSON correspond au format de paramètre requis. |
| 3002 | 400 | Paramètres de requête invalides. Veuillez vérifier si les paramètres de requête respectent les exigences. |
| 3003 | 400 | Paramètres de requête invalides. La validation métier associée a échoué. Reportez-vous à la description de l'erreur dans le champ message pour plus de détails. |
| 3004 | 400 | Limite de fréquence dépassée. Pour le même modèle et le même utilisateur cible, aucune nouvelle livraison ne peut être effectuée pendant la période de validité du code de vérification. |
| 4001 | 400 | La ressource associée n'existe pas, par exemple lorsqu'un modèle inexistant est utilisé lors de l'envoi d'un message basé sur un modèle. |
| 5001 | 400 | Échec de l'envoi (général/autre) |
| 5011 | 400 | Format de numéro de téléphone invalide |
| 5012 | 400 | Cible inaccessible |
| 5013 | 400 | Le numéro a été blacklisté |
| 5014 | 400 | Le contenu n'est pas conforme aux spécifications |
| 5015 | 400 | Message intercepté/rejeté |
| 5016 | 400 | Erreur interne d'envoi |
| 5017 | 400 | Aucune autorisation d'envoi vers la Chine continentale |
| 5018 | 400 | Dysfonctionnement du téléphone (éteint/service suspendu) |
| 5019 | 400 | L'utilisateur s'est désabonné |
| 5020 | 400 | Numéro non enregistré/numéro invalide |










