Template Management API
Vue d'ensemble
Grâce à l'API de gestion des modèles, vous pouvez ajouter, supprimer et consulter les modèles WABA.
Validation des appels
EngageLab REST API Authentification HTTP Basic : ajoutez l'en-tête HTTP Authorization (Header) :
Authorization: Basic ${base64_auth_string}
L'algorithme de génération du base64_auth_string est le suivant : base64(dev_key:dev_secret)
- Le nom de l'en-tête est "Authorization" et la valeur est une paire "username:password" convertie en base64 (avec deux-points au milieu).
- Dans le scénario de l'API WhatsApp, le username est DevKey et le password est DevSecret. Dans la console, allez dans gestion de la configuration - clé API pour obtenir la page.
Obtenir les modèles
Adresse d'appel
GET https://wa.api.engagelab.cc/v1/templates
Paramètres de la requête
| Paramètre | Type | Option | Description |
|---|---|---|---|
| name | String | Optionnel | Nom du modèle, ce champ utilise une correspondance floue |
| language_code | String | Optionnel | Langue du modèle, voir Code langue |
| category | String | Optionnel | Catégorie du modèle. ● AUTHENTICATION : Code de vérification ● MARKETING : Marketing ● UTILITY : Notification de service |
| status | String | Optionnel | Statut du modèle : Les développeurs doivent surtout surveiller APPROVED/PENDING/REJECTED/DISABLED |
Paramètres de réponse
| Paramètre | Type | Option | Description |
|---|---|---|---|
| id | String | requis | ID du modèle |
| name | String | requis | Nom du modèle |
| language | String | requis | Langue du modèle, voir code langue. |
| category | String | requis | Type du modèle. Remarque : la catégorie du modèle sera mise à jour : |
| components | Tableau d'objets | requis | Pour plus d'informations sur le contenu du modèle, voir créer des objets composants dans un modèle |
| status | String | requis | Statut du modèle : |
Exemple de réponse
// Un tableau json, chaque objet du tableau correspond à un modèle
[
{
"id": "406979728071589", // id du modèle
"name": "code", // nom du modèle
"language": "zh_CN", // langue du modèle
"status": "APPROVED", // statut, APPROVED signifie approuvé et utilisable
"category": "OTP", // catégorie, actuellement supporte OTP/TRANSACTIONAL/MARKETING
"components": [ // Contenu spécifique du modèle, peut inclure HEADER/BODY/FOOTER/BUTTON
{
"type": "HEADER",
"format": "text", // type, supporte text/image/location/video/document, par défaut TEXT
"text": "Code de vérification d'inscription" // Contenu texte, requis si format = text
},
{
"type": "BODY",
"text": "Votre code de vérification est {{1}}, veuillez le saisir dans les 5 minutes." // Double accolades {{}} indiquent les variables du modèle
}
]
},
…
]
Consulter les informations d'un modèle
Endpoint de l'API
GET https://wa.api.engagelab.cc/v1//{template_id}
Où {template_id} représente l'ID du modèle à consulter.
Paramètres de la requête
Aucun
Exemple de requête
GET https://wa.api.engagelab.cc/v1/templates/406979728071589
Paramètres de réponse
| Paramètre | Type | Requis | Description |
|---|---|---|---|
| id | String | Requis | ID du modèle |
| name | String | Requis | Nom du modèle |
| language | String | Requis | Langue du modèle, voir Codes langues. |
| category | String | Requis | Catégorie du modèle. Remarque : les catégories de modèles seront mises à jour au 1er mai 2023 : |
| components | Tableau d'objets | Requis | Composants du contenu du modèle, voir Objet Components dans Créer un modèle. |
| status | String | Requis | Statut du modèle : APPROVED, IN_APPEAL, PENDING, REJECTED, PENDING_DELETION, DELETED, DISABLED, PAUSED, LIMIT_EXCEEDED |
Exemple de réponse
{
"id": "406979728071589", // ID du modèle
"name": "code", // Nom du modèle
"language": "en", // Langue du modèle
"status": "APPROVED", // Statut, APPROVED signifie que le modèle est approuvé et utilisable
"category": "OTP", // Catégorie, actuellement supporte OTP/TRANSACTIONAL/MARKETING
"components": [ // Contenu spécifique du modèle, peut inclure HEADER/BODY/FOOTER/BUTTON
{
"type": "HEADER",
"format": "text", // Type, supporte text/image/location/video/document, par défaut TEXT
"text": "Code de vérification d'inscription" // Contenu texte, requis si format = text
},
{
"type": "BODY",
"text": "Votre code de vérification est {{1}}, veuillez le saisir dans les 5 minutes." // Double accolades {{}} indiquent les variables du modèle
}
]
}
Créer un modèle
Adresse d'appel
POST https://wa.api.engagelab.cc/v1/templates
Exemple d'appel
{
"name": "template_name", // nom du modèle, les modèles portant le même nom sont autorisés, seuls les lettres minuscules, chiffres et underscores sont acceptés
"language": "zh_CN", // Langue du modèle, il n'est pas permis d'avoir deux modèles de même nom et de même langue
"category": "OTP", // catégorie, actuellement supporte OTP/TRANSACTIONAL/MARKETING
"components": [
{ // contenu du modèle
"type": "BODY", // bloc de contenu, supporte actuellement HEADER/BODY/FOOTER/BUTTONS
"text": "define var as {{1}}", // texte spécifique, inutile de passer le champ format si body est text
"example": {
"body_text": [
[
"var1"
]
]
}
},
{
"type": "HEADER",
"format": "image", // type de contenu, supporte text/image/video/document/location
"example": {
"header_handle": [
"https://jiguang.cn/demopic.jpg"
]
}
},
{
"type": "FOOTER",
"text": "le pied de page ne supporte que le texte sans variable"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER", // type de bouton, supporte PHONE_NUMBER/URL/QUICK_REPLY
"text": "ceci est un numéro de téléphone",
"phone_number": "8613800138000"
}
]
}
]
}
Paramètres de la requête
| Paramètre | Type | Option | Description |
|---|---|---|---|
| name | String | requis | nom du modèle. Ne peut contenir que des lettres minuscules, chiffres et underscores. Ne doit pas dépasser 512 caractères. |
| language | String | requis | langue du modèle, voir code langue. |
| category | String | requis | type du modèle. Remarque : la catégorie du modèle sera mise à jour au plus tard le 1er mai 2023 : |
| components | Tableau d'objets | Composants requis décrivant le contenu du modèle. Pour plus d'informations, voir objet components |
objet components
Cet objet décrit le contenu du modèle. Le modèle est divisé en plusieurs composants, tels que HEADER, BODY, FOOTER et BUTTONS. Vous pouvez utiliser type pour spécifier ces composants. Différents types de composants supportent différents paramètres comme suit :
composant header
Le composant header est optionnel. Ne le définissez pas si vous n'en avez pas besoin.
| Paramètre | Type | Option | Description |
|---|---|---|---|
| type | String | requis | type du composant. Valeur valide : HEADER. |
| format | String | requis | format du header. Valeurs valides : text, image, video, document, correspondant à texte, image, vidéo et fichier. |
| text | String | optionnel | contenu texte du header. Ce champ doit être défini si format = text. Vous pouvez définir une variable dans le texte du header, mais une seule variable est autorisée, représentée par {{1}}. |
| example | Objet JSON | optionnel | exemple de header. Ce champ est requis si le texte contient une variable ou si le format est de type média. Voir description de l'objet exemple |
description de l'objet exemple
| Paramètre | Type | Option | Description |
|---|---|---|---|
| header_handle | Tableau de chaînes | optionnel | si le format est image, vidéo ou document, l'url du média correspondant est passée dans ce champ, et l'url doit être accessible. Sinon, la validation du modèle peut être refusée. Par exemple : "header_handle": [ "https://jiguang.cn/demopic.jpg"] |
| header_text | Tableau de chaînes | optionnel | si le format est text et contient une variable, elle est remplacée par ce champ. Par exemple : "header_text": ["var1"] |
| header_url | Tableau de chaînes | optionnel | usage identique à header_handle. Notez que ce champ ne sera plus supporté dans les futures versions de WhatsApp. Évitez de l'utiliser. Par exemple : "header_url": [ "https://jiguang.cn/demopic.jpg"] |
composant body
Le composant body est obligatoire. Vous devez définir le contenu du body.
| Paramètre | Type | Option | Description |
|---|---|---|---|
| type | String | requis | type du composant. Valeur valide : BODY. |
| text | String | requis | contenu du body. Jusqu'à 1024 caractères. Plusieurs variables possibles. La variable est composée de deux accolades et du numéro de séquence. Le numéro doit commencer à 1 et augmenter, par exemple {{1}} et {{2}}. |
| example | Objet JSON | optionnel | exemple de body. Les validateurs Meta jugeront la conformité de votre message sur cet exemple. Voir description de l'objet exemple ce champ est requis si le texte contient des variables. |
description de l'objet exemple
| Paramètre | Type | Option | Description |
|---|---|---|---|
| body_text | Tableau de chaînes | optionnel | si le texte contient des variables, ce champ est obligatoire. Toutes les variables dans l'ordre des numéros de séquence. Par exemple : "body_text": [["var1","var2","var3"]] |
composant footer
Le composant footer est optionnel. Ne le définissez pas si vous n'en avez pas besoin.
| Paramètre | Type | Option | Description |
|---|---|---|---|
| type | String | requis | type du composant. Valeur : FOOTER. |
| text | String | requis | contenu du footer. Seul du texte brut, aucune variable n'est autorisée. |
composant buttons
Le composant buttons est optionnel dans son ensemble. Ne le définissez pas si vous n'en avez pas besoin.
| Paramètre | Type | Option | Description |
|---|---|---|---|
| type | String | requis | type du composant. Valeur valide : BUTTONS. |
| buttons | Tableau d'objets | requis | informations sur les boutons, voir description de l'objet buttons. |
description de l'objet buttons
| Paramètre | Type | Option | Description |
|---|---|---|---|
| type | String | requis | type du bouton. Valeurs valides : QUICK_REPLY, URL, PHONE_NUMBER. |
| text | String | requis | texte du bouton, ne peut pas contenir de variable. Texte brut jusqu'à 25 caractères. |
| url | String | optionnel | requis si type = URL. Vous pouvez définir une variable à la fin de l'URL. Une seule variable possible, représentée par {{1}}. |
| phone_number | String | optionnel | requis si type = PHONE_NUMBER, ne peut pas contenir de variable, contenu = numéro de téléphone avec indicatif international. |
| example | Tableau de chaînes | optionnel | Requis si type = QUICK_REPLY ou type = URL |
Paramètres de réponse
Réponse en cas de succès
| Paramètre | Type | Option | Description |
|---|---|---|---|
| template_id | String | requis | ID du modèle. Ce paramètre est retourné si la création du modèle est réussie. |
{
"template_id": "1275172986566180" // id du modèle
}
Réponse en cas d'échec
| Paramètre | Type | Option | Description |
|---|---|---|---|
| code | int | requis | code d'erreur. En cas d'échec, le code d'erreur est retourné. |
| message | String | requis | message d'erreur retourné en cas d'échec. |
{
"code": 5002,
"message": "Paramètre invalide. code:100:2388042"
}
Mettre à jour un modèle
Adresse d'appel
PUT https://wa.api.engagelab.cc/v1/templates/{templateId}
Exemple d'appel
{
"components": [
{ // contenu du modèle
"type": "BODY", // bloc de contenu, supporte actuellement HEADER/BODY/FOOTER/BUTTONS
"text": "define var as {{1}}" // texte spécifique, inutile de passer le champ format si body est text
"example": {
"body_text": [
[
"var1"
]
]
}
},
{
"type": "HEADER",
"format": "image", // type de contenu, supporte text/image/video/document/location
"example": {
"header_url": [
"https://jiguang.cn/demopic.jpg"
]
}
},
{
"type": "FOOTER",
"text": "le pied de page ne supporte que le texte sans variable"
},
{
"type": "BUTTONS",
"buttons": [
{
"type": "PHONE_NUMBER", // type de bouton, supporte PHONE_NUMBER/URL/QUICK_REPLY
"text": "ceci est un numéro de téléphone",
"phone_number": "8613800138000"
}
]
}
]
}
Paramètres de la requête
Identiques aux paramètres de la requête de l'interface de création de modèle.
Paramètres de réponse
Réponse en cas de succès
| Paramètre | Type | Option | Description |
|---|---|---|---|
| code | int | requis | code de retour, toujours 0 |
| message | String | requis | information retournée. La valeur est toujours success. |
{
"code": 0,
"message": "success"
}
Réponse en cas d'échec
| Paramètre | Type | Option | Description |
|---|---|---|---|
| code | int | requis | code d'erreur. En cas d'échec, le code d'erreur est retourné. |
| message | String | requis | message d'erreur retourné en cas d'échec. |
{
"code": 5002,
"message": "Paramètre invalide. code:100:2593002"
}
Supprimer un modèle
Adresse d'appel
DELETE https://wa.api.engagelab.cc/v1/templates/{template_name}
Remarque : Ici, il faut passer le nom du modèle, pas l'ID du modèle. Cela supprimera le contenu du modèle pour toutes les langues de ce nom de modèle.
Paramètres de réponse
Réponse en cas de succès
| Paramètre | Type | Option | Description |
|---|---|---|---|
| code | int | requis | code de retour, toujours 0 |
| message | String | requis | information retournée. La valeur est toujours success. |
{
"code": 0,
"message": "success"
}
Réponse en cas d'échec
| Paramètre | Type | Option | Description |
|---|---|---|---|
| code | int | requis | code d'erreur. En cas d'échec, le code d'erreur est retourné. |
| message | String | requis | message d'erreur retourné en cas d'échec. |
{
"code": 2004,
"message": "une erreur est survenue"
}
Codes d'erreur
| Code | Code Http | Description |
|---|---|---|
| 1000 | 500 | erreur interne |
| 2001 | 401 | Authentification EngageLab échouée, token non valide. |
| 2002 | 401 | Authentification côté EngageLab échouée. Le token a expiré ou a été désactivé. |
| 2003 | 400 | Authentification WhatsApp échouée, veuillez contacter le service client EngageLab |
| 2004 | 403 | vous n'êtes pas autorisé à appeler cette API. |
| 3001 | 400 | Format des paramètres de la requête invalide. Vérifiez l'utilisation du format JSON. |
| 3002 | 400 | Les paramètres de la requête sont incorrects. Vérifiez qu'ils répondent aux exigences. |
| 3003 | 400 | Message d'erreur retourné car le paramètre de requête est invalide. |
| 4001 | 400 | Le modèle n'existe pas. |
| 5002 | 400 | La demande de modèle n'a pas pu être traitée par Meta. Voir la description du message pour plus d'informations. |
Commentaires
Exigences de format des messages média
| Type de média | Types de format Content-Type pris en charge | Limite de taille | | --- | --- | --- | --- | | image | image/jpeg, image/png, ne supporte pas les fonds transparents | 5 Mo | | vidéo | video/mp4 | 16 Mo | | document | Format PDF uniquement | 100 Mo |
code langue
| Langue | Code |
|---|---|
| Afrikaans | af |
| Albanais | sq |
| Arabe | ar |
| Azerbaïdjanais | az |
| Bengali | bn |
| Bulgare | bg |
| Catalan | ca |
| Chinois (CHN) | zh_CN |
| Chinois (HKG) | zh_HK |
| Chinois (TAI) | zh_TW |
| Croate | hr |
| Tchèque | cs |
| Danois | da |
| Néerlandais | nl |
| Anglais | en |
| Anglais (UK) | en_GB |
| Anglais (US) | en_US |
| Estonien | et |
| Philippin | fil |
| Finnois | fi |
| Français | fr |
| Géorgien | ka |
| Allemand | de |
| Grec | el |
| Gujarati | gu |
| Haoussa | ha |
| Hébreu | he |
| Hindi | hi |
| Hongrois | hu |
| Indonésien | id |
| Irlandais | ga |
| Italien | it |
| Japonais | ja |
| Kannada | kn |
| Kazakh | kk |
| Kinyarwanda | rw_RW |
| Coréen | ko |
| Kirghize (Kirghizistan) | ky_KG |
| Lao | lo |
| Letton | lv |
| Lituanien | lt |
| Macédonien | mk |
| Malais | ms |
| Malayalam | ml |
| Marathi | mr |
| Norvégien | nb |
| Persan | fa |
| Polonais | pl |
| Portugais (BR) | pt_BR |
| Portugais (POR) | pt_PT |
| Pendjabi | pa |
| Roumain | ro |
| Russe | ru |
| Serbe | sr |
| Slovaque | sk |
| Slovène | sl |
| Espagnol | es |
| Espagnol (ARG) | es_AR |
| Espagnol (ESP) | es_ES |
| Espagnol (MEX) | es_MX |
| Swahili | sw |
| Suédois | sv |
| Tamoul | ta |
| Télougou | te |
| Thaï | th |
| Turc | tr |
| Ukrainien | uk |
| Ourdou | ur |
| Ouzbek | uz |
| Vietnamien | vi |
| Zoulou | zu |
Pour plus d'informations sur la correspondance entre la langue et le code correspondant, vous pouvez également télécharger ce fichier :
Template language code.xlsx

