WhatsApp Send Message API Documentation - EngageLab
Utilisez l'API de messagerie pour intégrer les fonctionnalités de messagerie de WhatsApp à vos systèmes d'entreprise.
Avant d'appeler l'API, connectez-vous à la console et créez une clé API sur la page dédiée.
Adresse d'appel
POST https://wa.api.engagelab.cc/v1/messages
Validation de l'appel
L'API REST EngageLab utilise l'authentification HTTP Basic comme méthode d'authentification, en ajoutant Authorization dans l'en-tête HTTP.
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 "nom d'utilisateur:mot de passe" convertie en base64 (avec deux-points au milieu).
- Dans le scénario de l'API WhatsApp, le nom d'utilisateur est DevKey et le mot de passe est DevSecret. Dans la console, allez dans gestion de la configuration - clé API pour obtenir la page.
Exemples de requêtes
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
{
"from": "+8613800138000",
"to": [
"00447911123456"
],
"body": {
"type": "template",
"template": {
"name": "code",
"language": "zh_CN",
"components": [
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "12345"
}
]
}
]
}
},
"request_id": "123asdbbqwe9faweg",
"custom_args": {
"arg1": "string val",
"arg2": 123
}
}
Paramètres de la requête
Un objet de requête est exprimé au format JSON, donc l'en-tête de la requête doit contenir Content-Type: application/json.
| Paramètre | Type | Option | Description |
|---|---|---|---|
| from | String | optionnel | numéro d'envoi |
| to | Tableau de chaînes | requis | le numéro de téléphone du destinataire. |
| body | Objet JSON | requis | corps du message |
| request_id | String | optionnel | l'ID de la requête personnalisée qui identifie la requête. |
| custom_args | Objet JSON | optionnel | les informations personnalisées sont renvoyées au développeur dans le callback du statut du message. |
from
| Paramètre | Type | Option | Description |
|---|---|---|---|
| from | String | optionnel |
to
| Paramètre | Type | Option | Description |
|---|---|---|---|
| to | Tableau de chaînes | requis | le numéro WhatsApp du destinataire, l'indicatif international doit être ajouté. |
body
Un corps de message qui contient les champs suivants :
| Paramètre | Type | Option | Description |
|---|---|---|---|
| type | string | requis | le type de message. Valeurs valides : seuls les messages modèles peuvent être envoyés aux utilisateurs. Les autres types de messages nécessitent que l'utilisateur réponde dans les 24 heures pour pouvoir être livrés. Les images, audios, vidéos, documents et stickers sont tous des messages médias. Exigences de format des messages médias |
| template | objet template | optionnel | utilisé lorsque type = template. Pour plus d'informations, voir description de l'objet template |
| text | objet text | optionnel | utilisé lorsque type = text. Pour plus d'informations, voir description de l'objet text |
| image | objet image | optionnel | utilisé lorsque type = image. Pour plus d'informations, voir description de l'objet image |
| audio | objet audio | optionnel | utilisé lorsque type = audio. Pour plus d'informations, voir description de l'objet audio |
| video | objet video | optionnel | utilisé lorsque type = video. Pour plus d'informations, voir description de l'objet video |
| document | objet document | optionnel | utilisé lorsque type = document. Pour plus d'informations, voir description de l'objet document |
| sticker | objet sticker | optionnel | utilisé lorsque type = sticker. Pour plus d'informations, voir description de l'objet sticker |
description de l'objet text
message texte
| Paramètre | Type | Option | Description |
|---|---|---|---|
| body | String | requis | le contenu texte. Le message WhatsApp ne doit pas dépasser 4096 caractères. |
Exemple
{
"from": "8613800138000", //numéro de téléphone de l'expéditeur
"to": "8613800138000", //numéro de téléphone du destinataire
"body": {
"type": "text", //type de message
"text": {
"body": "votre-contenu-de-message-texte" // contenu du message
}
}
}
description de l'objet image
message image
| Paramètre | Type | Option | Description |
|---|---|---|---|
| id | String | optionnel | l'id et le lien générés par WhatsApp doivent avoir une valeur. |
| link | String | optionnel | lien de l'image, lien http/https, respecter les exigences de format des messages médias |
| caption | String | optionnel | la description de l'image. Elle ne peut pas dépasser 1024 caractères. |
Exemple
{
"from": "8613800138000",//numéro de téléphone de l'expéditeur
"to": "8613800138000",//numéro de téléphone du destinataire
"body": {
"type": "image",//type de message
"image": {
"link": "https://img.jiguang.cn/jiguang/public/img/c866bd2.png", //lien de l'image
"caption": "informations de légende" // optionnel, description sous l'image, dans la limite de 1024 caractères
}
}
}
description de l'objet video
message vidéo
| Paramètre | Type | Option | Description |
|---|---|---|---|
| id | String | optionnel | media_id généré par WhatsApp ; id et link doivent avoir une valeur. |
| link | String | optionnel | lien vidéo, lien http/https, respecter les exigences de format des messages médias |
| caption | String | optionnel | Description de la vidéo, jusqu'à 1024 caractères. |
Exemple
{
"from": "8613800138000",//numéro de téléphone de l'expéditeur
"to": "8613800138001", //numéro de téléphone du destinataire
"body": {
"type": "video",//type de message
"video": {
"link": "https://img.jiguang.cn/jiguang/public/videos/432acc5.mp4", //lien vidéo
"caption": "informations de légende" // optionnel, description sous la vidéo, dans la limite de 1024 caractères
}
}
}
description de l'objet audio
message audio
| Paramètre | Type | Option | Description |
|---|---|---|---|
| id | String | optionnel | media_id généré par WhatsApp ; id et link doivent avoir une valeur. |
| link | String | optionnel | lien audio, lien http/https, respecter les exigences de format des messages médias |
Exemple
{
"from": "8613800138000",//numéro de téléphone de l'expéditeur
"to": "8613800138001", //numéro de téléphone du destinataire
"body": {
"type": "audio",//type de message
"audio": {
"link": "https://file-examples.com/storage/fe5947fd2362fc197a3c2df/2017/11/file_example_MP3_700KB.mp3" //lien audio
}
}
}
description de l'objet document
message fichier
| Paramètre | Type | Option | Description |
|---|---|---|---|
| id | String | optionnel | media_id généré par WhatsApp ; id et link doivent avoir une valeur. |
| link | String | optionnel | lien du document, lien http/https, respecter les exigences de format des messages médias |
| caption | String | optionnel | Description du fichier, jusqu'à 1024 caractères. |
| filename | String | optionnel | Le nom du fichier. Si le champ filename n'est pas renseigné mais que le champ caption l'est, la légende sera utilisée comme nom de fichier ; si filename est renseigné, sa valeur sera utilisée comme nom de fichier. |
Exemple
{
"from": "8613800138000",//numéro de téléphone de l'expéditeur
"to": "8613800138001", //numéro de téléphone du destinataire
"body": {
"type": "document",//type de message
"document": {
"link": "https://img.jiguang.cn/jiguang/public/videos/432acc5.mp4", // lien du document
"caption": "informations de légende", // optionnel, description sous le document, dans la limite de 1024 caractères
"filename": "nom du fichier document" // optionnel, nom du fichier
}
}
}
description de l'objet sticker
message sticker
| Paramètre | Type | Option | Description |
|---|---|---|---|
| id | String | optionnel | media_id côté WhatsApp ; id et link doivent avoir une valeur. |
| link | String | optionnel | lien du sticker, lien http/https, respecter les exigences de format des messages médias |
Exemple
{
"from": "8613800138000",//numéro de téléphone de l'expéditeur
"to": "8613800138001", //numéro de téléphone du destinataire
"body": {
"type": "sticker",//type de message
"sticker": {
"link": "http://sample-file.bazadanni.com/download/images/webp/sample.webp" //lien du sticker
}
}
}
description de l'objet template
message template, vous devez d'abord créer un template, vous pouvez le faire via la console ou créer via l'API.
| Paramètre | Type | Type | Description |
|---|---|---|---|
| name | String | requis | le nom du template. Vous pouvez le trouver sur la page des templates de messages dans la console. Seuls les chiffres minuscules et les underscores sont autorisés. |
| language | String | requis | code langue du template. Lors de la création d'un template, vous pouvez définir le contenu du même nom de template dans plusieurs langues. Vous devez donc utiliser les champs name et language pour déterminer le template sélectionné. |
| components | tableau d'objets components | optionnel | si une variable existe dans le template, vous devez remplir ce champ. Un seul élément d'objet components est défini dans le tableau. |
description de template.components object
| Paramètre | Type | Option | Description |
|---|---|---|---|
| type | String | requis | le composant du template. Si un composant du template contient des variables, vous devez passer la valeur au composant. Valeurs valides : |
| parameters | objet parameters | requis | définir le contenu de la variable |
description de template.components.parameters object
| Paramètre | Type | Option | Description |
|---|---|---|---|
| type | string | requis | le type de la variable. Valeurs valides : text, currency, date_time, image, video, et document. Les types de médias (image, vidéo, document) existent uniquement dans l'en-tête. Pour plus d'informations sur les formats pris en charge, voir exigences de format des messages médias . |
| text | string | optionnel | Lorsque type = text, c'est le contenu spécifique de la variable. |
| date_time | objet localisable | optionnel | Utilisé lorsque type = date_time, la différence avec text est qu'il peut être localisé et adapté à l'affichage |
| currency | objet localisable | optionnel | utilisé lorsque type = currency, la différence avec text est qu'il peut être localisé et adapté à l'affichage |
| image | objet image | optionnel | utilisé lorsque type = image, et objet image le format du contenu est identique. |
| video | objet video | optionnel | utilisé lorsque type = video, et objet video le format du contenu est identique. |
| document | objet document | optionnel | utilisé lorsque type = document, et objet document le format du contenu est identique. |
Exemple
{
"from": "+8613800138000",
"to": [
"00447911123456"
],
"body": {
"type": "template",
"template": {
"name": "your-template-name",
"language": "zh_CN",
"components": [
{
"type" : "header",
"parameters": [{
"type": "document",
"document": {
"link": "http(s)://the-url",
"filename": "your-document-filename"
}
}]
},
{
"type": "body",
"parameters": [
{
"type": "text",
"text": "your-text-string"
},
{
"type": "currency",
"currency": {
"fallback_value": "$100.99",
"code": "USD",
"amount_1000": 100990
}
},
{
"type": "date_time",
"date_time": {
"fallback_value": "25 février 1977",
"day_of_week": 5,
"day_of_month": 25,
"year": 1977,
"month": 2,
"hour": 15,
"minute": 33
}
},
{
"type": "date_time",
"date_time": {
"fallback_value": "25 février 1977",
"timestamp": 1485470276
}
}
]
}
]
}
}
}
Paramètres de réponse
Réponse en cas de succès
| Champ | Type | Option | Description |
|---|---|---|---|
| message_id | String | requis | l'ID du message WhatsApp EngageLab qui identifie de façon unique un message. |
| request_id | String | optionnel | l'ID personnalisé soumis lors de la requête. L'ID est renvoyé tel quel lors de la réception de la requête. |
{
"message_id": "cbggf4if6o9ukqaalfug",
"request_id": "your-sendno-string"
}
Réponse en cas d'échec
le code d'état http est 4xx ou 5xx. Le corps de la réponse contient les champs suivants :
| Champ | Type | Option | Description |
|---|---|---|---|
| code | int | requis | le code d'erreur. Pour plus d'informations, voir description des codes d'erreur |
| message | String | requis | détails de l'erreur |
{
"code": 3002,
"message": "le champ whatsapp.template doit être correctement défini lorsque le type est template"
}
Codes d'erreur
| Codes d'erreur | Code Http | Description |
|---|---|---|
| 1000 | 500 | erreur interne |
| 2001 | 401 | Authentification EngageLab échouée, aucun token 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'avez pas la permission d'appeler cette API. Vérifiez si vous avez la permission d'envoyer des messages (un numéro d'envoi) à cette clé API. |
| 3001 | 400 | Le format des paramètres de la requête est invalide. Vérifiez si le format JSON est utilisé. |
| 3002 | 400 | Les paramètres de la requête sont incorrects. Vérifiez si les paramètres de la requête répondent aux exigences. |
| 3003 | 400 | Message d'erreur renvoyé car le paramètre de la requête est invalide. Pour plus d'informations, voir la description du champ message. |
| 4001 | 400 | La ressource concernée n'existe pas. Par exemple, un template inexistant est utilisé lors de l'envoi du message template. |
Commentaires
Exigences de format des messages médias
| Type de média | Types de format pris en charge Content-Type | Limite de taille |
|---|---|---|
| image | image/jpeg, image/png, ne supporte pas le fond transparent | 5Mo |
| video | video/mp4 , video/3gpp note : l'encodage ne supporte que l'encodage vidéo H.264 et l'encodage audio AAC. |
16Mo |
| audio | audio/aac, audio/mp4, audio/amr, audio/mpeg audio/ogg; codecs = opus (note : audio/ogg de base non supporté, seul audio/ogg ; codecs = opus est supporté) |
16Mo |
| document | 1. Tout type MIME est supporté lors de l'envoi de messages fichiers. 2. Lors de l'envoi d'un message template, le fichier dans l'en-tête ne supporte que le format PDF. |
100Mo |
| sticker | image/webp | Stickers statiques : 100Ko Stickers animés : 500Ko |
Code langue
Pour plus d'informations sur la correspondance entre la langue et le code, téléchargez ce fichier :
Template language code.xlsx

