Envoi de message personnalisé
Si vous avez créé un contenu de modèle personnalisé sur la plateforme OTP, appelez cette interface pour envoyer le contenu de message personnalisé.
Adresse d'appel
POST https://otp.api.engagelab.cc/v1/custom-messages
Authentification
Veuillez consulter Authentification pour savoir comment effectuer l'authentification de l'API.
Format de la requête
En-tête de requête
POST /v1/custom-messages HTTP/1.1
Content-Type: application/json
Authorization: Basic amlndWFuZ2RldjpkZXZfc2VjcmV0
Corps de la requête
{
"to": "+6591234567",
"template":{
"id":"test-template-1",
"params": {
"code": "codevalue",
"var1":"value1"
}
}
}
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.
| Paramètre | Type | Option | Description |
|---|---|---|---|
| to | String | Obligatoire | Destinataire de l'envoi, numéro de téléphone ou adresse e-mail, +6598765432, support@engagelab.com |
| template | JSON Object | Obligatoire | Informations du modèle, voir les paramètres de second niveau ci-dessous |
| |_ id | String | Obligatoire | ID du modèle |
| |_ params | JSON Object | Facultatif | Paramètres du modèle |
| _ |_ code | String | Facultatif | Lorsque le type de modèle est un code de vérification, ce champ est obligatoire. |
| _ |_ var | String | Facultatif | Valeur de la clé d'une variable de modèle personnalisée |
| Si vous avez défini des variables personnalisées lors de la création du modèle, vous leur transmettez ici leurs valeurs ; si rien n'est transmis, la clé de la variable est envoyée telle quelle, comme {{var1}} |
Remarques sur params
- Pour les variables prédéfinies du modèle telles que {{brand_name}}, {{ttl}}, {{pwa_url}}, etc., il n'est pas nécessaire de les transmettre ; le système les remplace automatiquement par le contenu spécifié lors de la création du modèle ;
- Si le type de modèle est un code de vérification, la variable {{code}} doit obligatoirement être transmise, sinon une erreur sera renvoyée ;
- De même, pour les champs de variables personnalisées présents dans le contenu du modèle lors de sa création, leur valeur est également affectée via params. Par exemple, si le contenu du modèle est
Hi {{name}}, your verify code is {{code}}, vous devez affecter 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 l'utilisation avancée détaillée, veuillez consulter Créer un modèle - Utilisation avancée des variables de modèle Email.
Exemple de requête
1. Envoyer un code de vérification personnalisé :
{
"to": "+6591234567",
"template":{
"id":"code-template",
"params": {
"code": "123456"
}
}
}
2. Envoyer un contenu de notification personnalisé :
{
"to": "+6591234567",
"template": {
"id": "notification-template",
"params": {
"order": "123456"
}
}
}
3. Envoyer un contenu marketing personnalisé :
{
"to": ["+6591234567"],
"template": {
"id": "marketing-template",
"params": {
"name": "EngageLab",
"promotion": "30%"
}
}
}
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 manière unique un message donné |
| send_channel | String | Obligatoire | Indique le canal d'envoi actuel, valeurs possibles : 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 soit 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 utilisera le canal SMS pour l'envoi.
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
| Code d'erreur | http code | Description |
|---|---|---|
| 1000 | 500 | Erreur interne |
| 2001 | 401 | Échec de l'authentification, le token correct n'a pas été fourni |
| 2002 | 401 | Échec de l'authentification, le token a expiré ou a été désactivé |
| 2004 | 403 | Aucune autorisation pour appeler cette API |
| 3001 | 400 | Format des paramètres de requête invalide, veuillez vérifier que le contenu JSON est conforme au format des paramètres |
| 3002 | 400 | Paramètres de requête incorrects, veuillez vérifier que les paramètres de requête respectent les exigences |
| 3003 | 400 | Paramètres de requête incorrects, échec de la vérification métier associée, consultez 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 |
| 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 du numéro de téléphone invalide |
| 5012 | 400 | Cible inaccessible |
| 5013 | 400 | Numéro placé sur liste noire |
| 5014 | 400 | Contenu non conforme aux normes |
| 5015 | 400 | Message intercepté/rejeté |
| 5016 | 400 | Erreur interne d'envoi |
| 5017 | 400 | Aucune autorisation d'envoi pour la région Chine |
| 5018 | 400 | Téléphone hors service (éteint/suspendu) |
| 5019 | 400 | L'utilisateur s'est désabonné |
| 5020 | 400 | Numéro non enregistré/numéro inexistant |










