Envoi du code de vérification
Cette interface permet à la plateforme EngageLab de générer un code de vérification et de l'envoyer selon la stratégie de canal définie dans le modèle.
Si vous préférez générer le code de vérification vous-même plutôt que de le faire générer par la plateforme EngageLab, vous pouvez appeler l'interface Envoi de code de vérification personnalisé EngageLab OTP.
Adresse d'appel
POST https://otp.api.engagelab.cc/v1/messages
Authentification
Veuillez consulter Authentification pour savoir comment effectuer l'authentification de l'API.
Exemple de requête
En-tête de la requête
POST /v1/messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Corps de la requête
{
"to": "+6591234567",
"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 la requête doit donc inclure Content-Type: application/json.
| Paramètre | Type | Option | Description |
|---|---|---|---|
| to | String | Obligatoire | Cible de l'envoi, numéro de téléphone mobile ou adresse e-mail, +6598765432, support@engagelab.com |
| end_user_ip | String | Facultatif | Adresse IP de l'utilisateur final. Utilisée lorsqu'il faut limiter le plafond de requêtes d'une même adresse IP dans différentes fenêtres temporelles, p. ex. : 10.3.5.7 |
| template | JSON Object | Obligatoire | Informations sur le modèle, voir les paramètres de second niveau ci-dessous |
| |_ id | String | Obligatoire | ID du modèle |
| |_ language | String | Facultatif | Langue du modèle, prend en charge les langues suivantes : default langue par défaut zh_CN chinois simplifié zh_HK chinois traditionnel en anglais ja japonais th thaï es espagnol Si ce paramètre n'est pas transmis, la valeur par défaut est default (langue par défaut) |
| |_ params | JSON Object | Facultatif | Valeurs des clés de variables personnalisées du modèle |
| Si vous avez défini des variables personnalisées lors de la création du modèle, transmettez-en ici les valeurs ; sinon, elles seront envoyées telles quelles sous forme de clé de variable, comme {{var}} |
Remarques concernant params
- Pour les champs prédéfinis dans le modèle, tels que from_id, si aucune valeur n'est transmise dans le champ params, le from_id prédéfini du modèle est utilisé lors de l'envoi du message ;
- Si une valeur du champ params est transmise, comme
params:{"from_id":"12345"}, le from_id du modèle sera remplacé par 12345 lors de l'envoi du message ; - De même, les champs de variables personnalisées définis dans le contenu du modèle lors de sa création se voient également attribuer une valeur via params : par exemple, pour un contenu de modèle
Hi {{name}}, your verify code is {{code}}, vous devez attribuer le paramètreparams:{"name":"Bob"} - Variables spéciales du canal Email : pour le canal Email, vous pouvez remplacer dynamiquement l'objet de l'e-mail (
subject), le nom de l'expéditeur (from_name), l'adresse e-mail de l'expéditeur (from_mail), etc., viaparams. Pour les usages avancés détaillés, veuillez consulter Créer un modèle - Usage avancé des variables de modèle Email.
Paramètres de réponse
Réponse en cas de succès
| Champ | Type | Option | Description |
|---|---|---|---|
| message_id | String | Obligatoire | ID du message, identifie de façon unique un message |
| send_channel | String | Obligatoire | Indique le canal d'envoi actuel, les valeurs possibles sont whatsapp/sms/email/voice |
{
"message_id": "1725407449772531712",
"send_channel": "sms"
}
Notez que la valeur**send_channel**renvoyée ne représente pas le canal final de livraison à l'utilisateur, mais uniquement le canal utilisé à ce stade ; par exemple, si la stratégie configurée dans le modèle prévoit qu'en cas d'échec de livraison sur le canal WhatsApp, un renvoi automatique est effectué sur le canal SMS, l'interface renverra la valeur whatsapp. Une fois l'échec de livraison détecté après un certain délai, le système enverra le message via le canal SMS.
Réponse en cas d'échec
Le code de statut HTTP est 4xx ou 5xx, et le corps de la réponse contient les champs suivants :
| Champ | Type | Option | Description |
|---|---|---|---|
| code | int | Obligatoire | Code d'erreur, voir la description des codes d'erreur |
| message | String | Obligatoire | Détails de l'erreur |
{
"code": 5001,
"message": "sms send fail"
}
Codes d'erreur
Le tableau ci-dessous décrit uniquement les erreurs renvoyées par cette API lors de l'authentification, de la validation avant envoi et de la soumission synchrone. Les échecs de livraison asynchrones après acceptation par le fournisseur ne sont pas renvoyés par cette API ; obtenez-les via une requête d'état du message ou des callbacks.
L'appelant doit utiliser code pour déterminer le type d'erreur. Utilisez message pour afficher la raison concrète ou pour le diagnostic ; ne vous fiez pas à un texte fixe de message pour la logique métier.
| Code d'erreur | http code | Description |
|---|---|---|
| 1000 | 500 | Erreur interne |
| 2001 | 401 | Échec de l'authentification, token correct non fourni |
| 2002 | 401 | Échec de l'authentification, token expiré ou désactivé |
| 2003 | 403 | Cette IP n'est pas autorisée à envoyer de message. |
| 2004 | 403 | Aucune autorisation d'appeler cette API |
| 3001 | 400 | Format des paramètres de requête invalide, veuillez vérifier que le contenu JSON respecte le format des paramètres |
| 3002 | 400 | Paramètres de requête incorrects, veuillez vérifier que les paramètres de requête sont conformes aux exigences |
| 3003 | 400 | Paramètres de requête incorrects, échec de la validation métier associée, voir la description de l'erreur dans le champ message pour plus de détails |
| 3004 | 400 | Limite de fréquence dépassée : pour un même modèle et un même utilisateur cible, un nouvel envoi est impossible pendant la durée de validité du code de vérification |
| 3005 | 400 | Solde disponible du compte insuffisant |
| 3013 | 400 | Modèle non approuvé ou actuellement indisponible |
| 4001 | 400 | La ressource associée n'existe pas, par exemple l'utilisation d'un modèle inexistant lors de l'envoi d'un message basé sur un modèle |
| 5001 | 400 | Échec de l'envoi (générique/autre) |
| 5011 | 400 | Format de numéro de téléphone mobile invalide |
| 5012 | 400 | Cible injoignable |
| 5013 | 400 | Numéro placé sur liste noire |
| 5014 | 400 | Contenu non conforme aux règles |
| 5015 | 400 | Message intercepté/refusé |
| 5016 | 400 | Erreur interne d'envoi |
| 5017 | 400 | Aucune autorisation d'envoi vers la région de la Chine |
| 5018 | 400 | Défaillance du téléphone (éteint/hors service) |
| 5019 | 400 | L'utilisateur s'est désabonné |
| 5020 | 400 | Numéro non enregistré/numéro inexistant |
| 6001 | 429 | Fréquence d'envoi pour le même numéro de téléphone dépassée ; la fenêtre de limite peut être par minute, heure ou jour calendaire |
| 6002 | 429 | Fréquence d'envoi pour la même IP d'utilisateur final dépassée ; la fenêtre de limite peut être par minute ou heure ; vérifiée uniquement lorsque la requête inclut end_user_ip |
| 6003 | 429 | Le volume d'envoi quotidien ou mensuel global de l'application a atteint la limite |
| 6006 | 403 | L'envoi n'est pas autorisé pour le pays ou la région actuel(le) |
| 6007 | 403 | Le service d'envoi de codes de vérification par SMS est suspendu ; cela peut concerner tous les pays/régions ou le pays/région actuel(le) |
| 6008 | 429 | Le volume d'envoi quotidien ou mensuel du pays ou de la région actuel(le) a atteint la limite |
Notes sur les erreurs de limitation de débit et de volume d'envoi
3004est le contrôle de fréquence d'envoi OTP par modèle ; la fenêtre de limite dépend de la configuration du modèle et peut ne pas correspondre à la durée de validité du code.6001et6002sont des contrôles de fréquence de sécurité au niveau du numéro ou de l'IP de l'utilisateur final.6003et6008indiquent que cette requête a atteint une limite de volume d'envoi ; après atteinte de la limite et passage en état suspendu, les requêtes suivantes peuvent renvoyer6007.- En cas de HTTP 429, ne réessayez pas immédiatement en boucle ; réessayez plus tard et, si le problème persiste, contactez un administrateur ou le support technique.
5011à5019ne couvrent que les échecs identifiables lors de la soumission synchrone. Les statuts tels que numéro vide, téléphone éteint ou refus de l'opérateur après acceptation par le fournisseur peuvent encore être renvoyés via l'état asynchrone du message ou les callbacks.










