Construire un assistant IA complet pour WhatsApp avec N8n prêt à l'emploi

8 juillet 2025

Développez un agent IA WhatsApp personnalisé pour votre entreprise capable d'interpréter les communications clients via texte, voix et visuels, et de répondre en formats écrit et vocal.

Avec ce guide, vous pouvez déployer en quelques minutes un assistant IA entièrement opérationnel avec des capacités multimédia sur votre système ou infrastructure cloud. Cet assistant servira de représentant numérique du service client, adapté aux besoins spécifiques de l'entreprise.

Découvrez Flows ! La nouvelle fonctionnalité Wassenger pour automatiser vos messages

Table des matières

  • Introduction
  • Configuration
  • Personnalisation
  • Implémentation du traitement multimédia : Texte
  • Implémentation du traitement multimédia : Voix
  • Implémentation du traitement multimédia : Images
  • Intégration RAG (Retrieval-Augmented Generation)
  • Lancement et tests

🤩 🤖 Wassenger fournit une plateforme API complète pour WhatsApp. Inscrivez-vous pour un essai gratuit de 7 jours et commencez immédiatement !

Dans ce guide, vous apprendrez à construire un assistant WhatsApp piloté par ChatGPT capable de :

  • Gérer et répondre aux messages écrits avec des réponses contextuelles et précises
  • Convertir et analyser les enregistrements vocaux pour fournir des réponses appropriées
  • Analyser et extraire des informations à partir d’images pour créer des réponses pertinentes
  • Gérer des combinaisons de ces formats d’entrée dans des conversations fluides

Nous utiliserons la fonctionnalité intégrée Flows de Wassenger (alimentée par n8n), l’API Wassenger pour la connectivité WhatsApp, et l’API OpenAI (ChatGPT) pour fournir à notre assistant des capacités avancées de traitement du langage naturel et de compréhension multimédia.

À l’issue de ce guide, vous disposerez d’un assistant WhatsApp entièrement fonctionnel capable de comprendre et de répondre aux demandes des clients quel que soit le format de présentation, améliorant significativement l’expérience utilisateur et l’efficacité du service client.

🤩 🤖 Wassenger fournit une plateforme API complète pour WhatsApp avec la fonctionnalité intégrée Flows (automatisation des flux de travail). Inscrivez-vous pour un essai gratuit de 7 jours et commencez immédiatement !

Commençons par configurer notre assistant WhatsApp multimédia en utilisant la fonctionnalité Flows intégrée de Wassenger.

Prérequis

  • Compte Wassenger avec accès à la fonctionnalité Flows : Inscrivez-vous gratuitement pour obtenir l’accès à l’API et aux capacités d’automatisation des flux de travail
  • Numéro WhatsApp : Au moins un numéro WhatsApp connecté à Wassenger
  • Identifiants API OpenAI : disponibles ici
  • Compte Google

Important ! 💬 La fonctionnalité Flows de Wassenger offre une automatisation des flux de travail intégrée basée sur la technologie n8n, ce qui évite l’auto-hébergement ou la configuration séparée de la plateforme n8n. Tout fonctionne directement sur la plateforme Wassenger !

Maintenant, construisons notre nouvel assistant IA ! 🤖

Configuration

1. Accéder à la fonctionnalité Wassenger Flows

Dans votre tableau de bord Wassenger, rendez-vous dans la section ‘Flows’ pour accéder à la fonctionnalité d’automatisation des flux de travail intégrée, alimentée par la technologie n8n.

🤩 🤖 Wassenger fournit une plateforme API complète pour WhatsApp avec la fonctionnalité intégrée Flows (automatisation des flux de travail). Inscrivez-vous pour un essai gratuit de 7 jours et commencez immédiatement !

2. Configurer le déclencheur Wassenger

Maintenant que vous êtes dans l’interface Wassenger’s Flows, nous allons établir le déclencheur comme suit :

  • Sélectionnez ‘Add first step’
  • Recherchez ‘Wassenger Trigger’ (déjà intégré à la plateforme)
  • Choisissez le déclencheur ‘On new inbound message received
  • Une fenêtre similaire à celle-ci apparaîtra

Puisque vous travaillez au sein de la plateforme Wassenger, les identifiants API sont automatiquement configurés pour votre compte.

3. Configurer votre déclencheur de Flow

Puisque vous utilisez la fonctionnalité Flows intégrée de Wassenger, la configuration du webhook est automatiquement gérée au sein de la plateforme. Il suffit de :

  • Sélectionner le numéro WhatsApp que vous souhaitez surveiller pour les messages entrants

  • Choisir les types de messages que vous souhaitez traiter (texte, audio, images)

  • Le système dirigera automatiquement les messages vers votre Flow

🤩 🤖 Wassenger fournit une plateforme API complète pour WhatsApp avec la fonctionnalité intégrée Flows (automatisation des flux de travail). Inscrivez-vous pour un essai gratuit de 7 jours et commencez immédiatement !

4. Créer un module qui identifie le texte, la voix et les images

Tout d’abord, sélectionnez ‘Test step’ pour recevoir les données du message entrant dans votre Flow Wassenger pour gestion et traitement :

Après avoir envoyé un message à votre numéro WhatsApp connecté, vous verrez quelque chose de similaire à ceci :

Nous pouvons maintenant commencer à travailler avec les données récupérées.

Construisons un module ‘Switch’ dans l’interface Flows

Nous allons ensuite établir trois scénarios possibles et inclure une expression définie qui triera les différents types de messages

  • Texte : {{ $json.data.type }}
  • Voix : {{ $json.data.media.type }}
  • Image : {{ $json.data.media.type }}

5. Ajouter l’agent IA

Nous ajouterons maintenant le module Agent IA qui nous aidera à analyser tous les messages entrants et à créer les réponses sortantes.

Cliquez sur le nœud inférieur du module ‘Switch’

La fenêtre suivante apparaîtra.

Procédons avec cette configuration :

  • Source pour le Prompt (Message utilisateur) : DEFINE BELOW
  • Prompt (Message utilisateur) : {{ $json.data.body }}

🤩 🤖 Wassenger fournit une plateforme API complète pour WhatsApp avec la fonctionnalité intégrée Flows (automatisation des flux de travail). Inscrivez-vous pour un essai gratuit de 7 jours et commencez immédiatement !

6. Lier le modèle de chat OpenAI

Une fenêtre comme celle-ci apparaîtra, et vous y insérerez vos identifiants OpenAI

Créez un compte OpenAI et trouvez vos identifiants ici

Puis ajoutez-les à votre Flow Wassenger

Nous allons maintenant ajouter un message système pour donner des instructions supplémentaires à l’IA, incluant qui l’IA est en train de contacter (Client) et l’heure exacte de la conversation :

You are a helpful assistant named Sam.Respond with a friendly and kind tone.
You are currently speaking with {{ $('Switch').item.json.data.chat.name }}
The current time is {{ $now.toISO() }}

🤩 🤖 Wassenger fournit une plateforme API complète pour WhatsApp. Inscrivez-vous pour un essai gratuit de 7 jours et commencez immédiatement !

7. Ajouter le nœud mémoire

Le nœud Memory permet à un modèle IA de se souvenir et de référencer des interactions précédentes, sans nécessiter d’identifiants puisque c’est stocké dans n8n.

  • Allongez la ‘Context Window Length’ à 20
  • Définissez le Session ID comme indiqué ci-dessous
  • Changez le champ en Expression et ajoutez : {{ $(‘Switch’) }}

8. Construire le flux des messages vocaux

Ensuite, nous allons configurer la façon dont notre bot analysera et traitera les messages vocaux envoyés par nos clients. C’est parti !

Comme montré dans l’image ci-dessous, le processus comprend 4 étapes principales :

  1. Récupérer le message vocal depuis l’API Wassenger
  2. Créer le fichier téléchargeable via une requête HTTP
  3. Convertir le message vocal en texte avec l’IA
  4. Envoyer ce texte converti à notre agent IA

Récupérons le message vocal depuis Wassenger.

Recherchez Wassenger > Chat Files Download File

Configurez comme suit :

  • Ajoutez votre compte Wassenger
  • Sélectionnez Chat Files comme Resource
  • Operation : Get File Details
  • WhatsApp Number : {{ $json.device.id }}
  • File ID : {{ $json.data.media.id }}

Ensuite, nous ajouterons un module HTTP pour récupérer le fichier

Configurez le module comme suit :

  • Method : GET
  • URL : https://api.wassenger.com{{ $('Wassenger Trigger').item.json.data.media.links.download }}
  • Authentication : Generic Credential Type
  • Generic Auth Type : Header Auth
  • Header Auth : Utilisez vos identifiants API Wassenger (disponibles automatiquement dans Flows)

Puis, nous ajouterons :

  • Name : Token
  • Value : Votre token API Wassenger (accessible directement dans la plateforme Flows)

🤩 🤖 Wassenger fournit une plateforme API complète pour WhatsApp. Inscrivez-vous pour un essai gratuit de 7 jours et commencez immédiatement !

Maintenant, nous ajouterons le module OpenAI qui convertit le message vocal

Recherchez : New module > Advanced AI > OpenAI > Transcribe a recording

Puis configurez le module :

Enfin, nous enverrons le message vocal converti à notre agent IA en utilisant le module SET

Et configurez-le :

  • Mode : Manual Mapping
  • Fields to Set : data.body en String et {{ $json.text }}

Notre conversion vocale est maintenant prête !

9. Traiter les images

Pour que notre BOT analyse les images, nous allons exécuter un processus similaire à celui des messages vocaux. Voyons cela.

Depuis le module Switch, ajoutez un nouveau module Wassenger Download Media

Configurez comme suit :

  • Ajoutez votre compte Wassenger
  • Sélectionnez Chat Files comme Resource
  • Operation : Get File Details
  • WhatsApp Number : {{ $json.device.id }}
  • File ID : {{ $json.data.media.id }}

Ensuite, récupérons l’image en utilisant le module HTTP comme nous l’avons fait précédemment pour les messages vocaux

  • Method : GET
  • URL : https://api.wassenger.com{{ $('Wassenger Trigger').item.json.data.media.links.download }}
  • Authentication : Generic Credential Type
  • Generic Auth Type : Header Auth
  • Header Auth : Utilisez vos Wassenger API credentials (disponibles automatiquement dans Flows)

🤩 🤖 Wassenger fournit une plateforme API complète pour WhatsApp. Inscrivez-vous pour un essai gratuit de 7 jours et commencez immédiatement !

Maintenant, nous ajouterons le module OpenAI qui traite l’image

Recherchez : New module > Advanced AI > OpenAI > Analyze image

Et configurez le module comme suit :

  • Credential to connect with : compte OpenAI (définir les identifiants mentionnés précédemment)
  • Resource : Image
  • Operation : Analyse Image
  • Model : CHATGPT-4O-LATEST
  • Text input : Analyse the image
  • Input Type : Binary File(s)
  • Input Data Field Name : data

Enfin, ajoutez le module SET pour transférer toutes les informations à notre agent IA

Et configurez-le :

  • Mode : Manual Mapping
  • Fields to Set : data.body en String et
# The user submitted the following image and text.
## Image Description:
{{ $json.content }}

Parfait ! Nous avons désormais trois scénarios possibles pour que notre bot traite le texte, la voix et les images.

Définissons maintenant la manière dont notre bot doit répondre en fonction du type de message reçu.

10. Construire la réponse vocale

Depuis notre module AI Agent, ajoutons un nouveau module appelé ‘IF’. Cela nous aidera à modifier notre réponse selon le type de message reçu.

Pour la configuration, nous établirons une valeur ‘true’ ou ‘false’ selon que le message reçu est un message vocal ou une image/texte. Pour les messages vocaux, nous répondrons par un message vocal différent, mais cette configuration peut être ajustée selon vos préférences. Les possibilités sont illimitées !

Conditions : {{ $(‘Switch’).item.json.data.media.type }} est égal à audio

Nous allons maintenant créer le flux de réponse vocale, en commençant par ajouter le module OpenAI pour produire de l’audio :

Add nodes > Advanced AI > OpenAI > Generate Audio

Et configurez-le ainsi :

  • Credential to connect with : OpenAI account (définir les identifiants mentionnés précédemment)
  • Resource : Audio
  • Operation : Generate Audio
  • Model : TTS-1
  • Text input (Expression) : {{ $('AI Agent').item.json.output }}
  • Voice : Sélectionnez votre préférence

Pour que WhatsApp reconnaisse notre audio généré, nous devons le convertir de audio/mp3 en audio/mpeg à l’aide d’un simple script fourni ci-dessous :

Créez un nouveau module Code

  1. Configurez-le avec le code JavaScript suivant :
// Loop over input items and change the MIME type of binary data
for(const item of $input.all()) {
// Check if the item has binary data
if(item.binary) {
// Find the binary property name(assuming there's at least one)
const binaryPropertyNames = Object.keys(item.binary);
for(const propName of binaryPropertyNames) {
// If the MIME type is 'audio/mp3', change it to 'audio/mpeg'
if(item.binary[propName].mimeType === "audio/mp3") {
item.binary[propName].mimeType = "audio/mpeg";
}
}
}
}
return $input.all();

Une fois notre audio converti au bon format pour l’envoi via Wassenger, nous devons le stocker localement ou dans le cloud. Ici, nous utiliserons le cloud, ce qui nous fournira une URL publique pour que ce fichier puisse être envoyé via l’API Wassenger. Pour ce tutoriel, nous avons choisi Google Drive, mais vous pouvez utiliser toute plateforme qui vous convient le mieux.

Créez un nouveau module pour Google Drive (Upload File)

  1. Configurez toutes les informations d’authentification Google dans Wassenger Flows

Si vous ne savez pas comment connecter votre compte Google à Wassenger Flows, regardez ce tutoriel

  1. Dans File Name, nous ajouterons l’expression suivante : {{ $json.fineName }}
  2. Définissez le Parent Drive sur My Drive
  3. Pour le dossier parent, nous devons créer un nouveau dossier dans notre Drive

Ensuite, rendez ce dossier public pour qu’il soit accessible depuis Wassenger Flows. Si vous ne rendez pas le dossier public, l’appel API renverra un accès non autorisé.

🤩 🤖 Wassenger fournit une plateforme API complète pour WhatsApp. Inscrivez-vous pour un essai gratuit de 7 jours et commencez immédiatement !

Maintenant, nous créerons un module Send Multimedia Message avec Wassenger pour envoyer l’audio nouvellement généré à partir de l’URL fournie par Google Drive

Configurez le module :

  • Définissez le numéro depuis lequel vous souhaitez envoyer le message
  • Définissez le numéro cible récupéré depuis les données du webhook que nous avons configuré initialement : {{ $(‘Switch’).item.json.data.fromNumber }}
  • Définissez l’URL du fichier : {{ $json.webContentLink }}

Enfin, nous supprimerons notre fichier de Google Drive pour éviter de stocker trop de fichiers dans notre cloud et d’épuiser l’espace de stockage. Cette étape est facultative. Si vous souhaitez conserver tous les fichiers audio générés, vous pouvez le faire, mais vous devrez ajouter une variable pour nommer les fichiers audio afin d’éviter les erreurs.

Définissez l’ID du fichier à supprimer : {{ $(‘Google Drive’).item.json.id }}

🤩 🤖 Wassenger est une solution API complète pour WhatsApp. Inscrivez-vous pour un essai gratuit de 7 jours et commencez en quelques minutes !

11. Construire la réponse texte

Maintenant que nous avons notre générateur de voix, nous allons créer notre générateur de messages texte, qui s’exécutera depuis le module IF et prendra en charge les cas où les utilisateurs nous envoient des images (le bot analysera le message avec l’image et renverra du texte) ou lorsqu’ils nous envoient de simples messages texte.

Depuis IF, ajoutez un nouveau module

Et configurez le module :

  • Credentials to connect with : Wassenger Key account
  • Resource : Send Message
  • Operation : Send Text Message
  • WhatsApp number : Votre numéro connecté
  • Target : Phone
  • Target : {{ $(Wassenger Trigger’).item.json.data.fromNumber }}`
  • Message : {{ $json.output }}

Et voilà ! Notre bot est entièrement configuré ! Nous pouvons maintenant tester le workflow pour confirmer que tout fonctionne correctement.

Obtenez le workflow complet ici !

{
  "name": "WhatsApp Agent Pro",
  "nodes": [
    {
      "parameters": {
        "device": "[DEVICE_ID_HIDDEN]",
        "events": ["message:in:new"]
      },
      "type": "n8n-nodes-wassenger.wassengerTrigger",
      "typeVersion": 1,
      "position": [380, 240],
      "id": "3e55c9a4-ca16-4fb5-8d6a-220b8ad01c9d",
      "name": "Wassenger Trigger",
      "webhookId": "[WEBHOOK_ID_HIDDEN]",
      "credentials": {
        "wassengerApiKey": {
          "id": "[CREDENTIAL_ID_HIDDEN]",
          "name": "WhatsApp API key"
        }
      }
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "={{ $json.data.body }}",
        "options": {
          "systemMessage": "=You are a helpful assistant called Sam.Responde with a frendly and kinkd tone.\n\nYou are currently talking to {{ $('Switch').item.json.data.chat.name }}\n\nThe current time is {{ $now.toISO() }} "
        }
      },
      "type": "@n8n/n8n-nodes-langchain.agent",
      "typeVersion": 1.8,
      "position": [2700, 260],
      "id": "41d0158b-ef6b-43ab-9c46-bad27fcac028",
      "name": "AI Agent"
    },
    {
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "typeVersion": 1.2,
      "position": [2640, 460],
      "id": "87e73037-c99f-42a6-86eb-e49015c0ad8c",
      "name": "OpenAI Chat Model",
      "credentials": {
        "openAiApi": {
          "id": "[OPENAI_CREDENTIAL_ID_HIDDEN]",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "device": "[DEVICE_ID_HIDDEN]",
        "phone": "={{ $('Wassenger Trigger').item.json.data.fromNumber }}",
        "message": "={{ $json.output }}",
        "options": {}
      },
      "type": "n8n-nodes-wassenger.wassenger",
      "typeVersion": 1,
      "position": [3540, 420],
      "id": "f9b6dbd2-0494-441d-9993-2180259473c5",
      "name": "Wassenger",
      "credentials": {
        "wassengerApiKey": {
          "id": "[CREDENTIAL_ID_HIDDEN]",
          "name": "WhatsApp API key"
        }
      }
    },
    {
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "leftValue": "={{ $json.data.media.type }}",
                    "rightValue": "audio",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "id": "94a56d29-cb88-4eb0-8d6b-07b1b91bfc3f"
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Voice message"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "e14c0da3-f892-46c2-af90-c81c963a0df5",
                    "leftValue": "={{ $json.data.media.type }}",
                    "rightValue": "image",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Image message"
            },
            {
              "conditions": {
                "options": {
                  "caseSensitive": true,
                  "leftValue": "",
                  "typeValidation": "strict",
                  "version": 2
                },
                "conditions": [
                  {
                    "id": "6ce0d87f-bdfc-4c65-a3fb-8d86bb682c4e",
                    "leftValue": "={{ $json.data.type }}",
                    "rightValue": "text",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    }
                  }
                ],
                "combinator": "and"
              },
              "renameOutput": true,
              "outputKey": "Text message"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.switch",
      "typeVersion": 3.2,
      "position": [1120, 240],
      "id": "3961ea74-1586-444b-9796-44f911fc8790",
      "name": "Switch"
    },
    {
      "parameters": {
        "resource": "chat-files",
        "operation": "getDeviceFileDetails",
        "device": "={{ $json.device.id }}",
        "fileId": "={{ $json.data.media.id }}"
      },
      "type": "n8n-nodes-wassenger.wassenger",
      "typeVersion": 1,
      "position": [1660, -160],
      "id": "8e5f176a-62fd-4067-b7be-fd4e611d8e41",
      "name": "Download Audio",
      "credentials": {
        "wassengerApiKey": {
          "id": "[CREDENTIAL_ID_HIDDEN]",
          "name": "WhatsApp API key"
        }
      }
    },
    {
      "parameters": {
        "url": "=https://api.wassenger.com{{ $('Wassenger Trigger').item.json.data.media.links.download }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [1880, -160],
      "id": "5f99188d-8cf2-46d4-a756-790e7f34c74e",
      "name": "Download Audio1",
      "credentials": {
        "httpHeaderAuth": {
          "id": "[HTTP_AUTH_CREDENTIAL_ID_HIDDEN]",
          "name": "Header Auth account"
        }
      }
    },
    {
      "parameters": {
        "resource": "audio",
        "operation": "transcribe",
        "binaryPropertyName": "=data",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [2100, -160],
      "id": "3c455966-a4b7-4108-84e0-84e416ca6bdf",
      "name": "Audio transcription",
      "credentials": {
        "openAiApi": {
          "id": "[OPENAI_CREDENTIAL_ID_HIDDEN]",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "4aeaa661-b3e8-4587-851e-dac366a37d0c",
              "name": "data.body",
              "value": "={{ $json.text }}",
              "type": "string"
            }
          ]
        },
        "includeOtherFields": "=",
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [2320, -160],
      "id": "8b274388-06dc-4edf-94eb-084f3abf2851",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "conditions": {
          "options": {
            "caseSensitive": true,
            "leftValue": "",
            "typeValidation": "strict",
            "version": 2
          },
          "conditions": [
            {
              "id": "13087e41-3b49-4b44-96ed-5ff74651c371",
              "leftValue": "={{ $('Switch').item.json.data.media.type }}",
              "rightValue": "audio",
              "operator": {
                "type": "string",
                "operation": "equals"
              }
            }
          ],
          "combinator": "and"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.if",
      "typeVersion": 2.2,
      "position": [3200, 260],
      "id": "1c8d7147-9e91-4e76-b96d-9d88b5220aae",
      "name": "If"
    },
    {
      "parameters": {
        "sessionIdType": "customKey",
        "sessionKey": "={{ $('Switch') }}"
      },
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "typeVersion": 1.3,
      "position": [2820, 460],
      "id": "ce935651-35bc-4caf-bdd2-a84ad509d3fc",
      "name": "Simple Memory"
    },
    {
      "parameters": {
        "resource": "audio",
        "input": "={{ $('AI Agent').item.json.output }}",
        "voice": "nova",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [3540, 160],
      "id": "2888d451-832d-44f6-93ca-b3a9342cb9ad",
      "name": "OpenAI",
      "credentials": {
        "openAiApi": {
          "id": "[OPENAI_CREDENTIAL_ID_HIDDEN]",
          "name": "OpenAi account"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Loop over input items and change the MIME type of binary data\nfor(const item of $input.all()) {\n // Check if the item has binary data\n if(item.binary) {\n // Find the binary property name(assuming there's at least one)\n const binaryPropertyNames = Object.keys(item.binary);\n\n for(const propName of binaryPropertyNames) {\n // If the MIME type is 'audio/mp3', change it to 'audio/mpeg'\n if(item.binary[propName].mimeType === \"audio/mp3\") {\n item.binary[propName].mimeType = \"audio/mpeg\";\n }\n }\n }\n}\n\nreturn $input.all();"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [3760, 160],
      "id": "f2a0b34a-ec2e-4984-9c5c-8bc3ed823d95",
      "name": "Code"
    },
    {
      "parameters": {
        "name": "={{ $json.fileName }}",
        "driveId": {
          "__rl": true,
          "value": "My Drive",
          "mode": "list",
          "cachedResultName": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive"
        },
        "folderId": {
          "__rl": true,
          "value": "[GOOGLE_DRIVE_FOLDER_ID_HIDDEN]",
          "mode": "list",
          "cachedResultName": "n8n whatsapp audios",
          "cachedResultUrl": "[GOOGLE_DRIVE_FOLDER_URL_HIDDEN]"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [3980, 160],
      "id": "bfff5e16-8ebd-40bd-91f9-b9ab8b572e54",
      "name": "Google Drive",
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "[GOOGLE_DRIVE_CREDENTIAL_ID_HIDDEN]",
          "name": "Google Drive account"
        }
      }
    },
    {
      "parameters": {
        "operation": "sendMedia",
        "device": "[DEVICE_ID_HIDDEN]",
        "phone": "={{ $('Switch').item.json.data.fromNumber }}",
        "mediaUrl": "={{ $json.webContentLink }}",
        "options": {}
      },
      "type": "n8n-nodes-wassenger.wassenger",
      "typeVersion": 1,
      "position": [4200, 160],
      "id": "02d42a3e-c444-409f-a20b-2ad4c48b723e",
      "name": "Wassenger1",
      "credentials": {
        "wassengerApiKey": {
          "id": "[CREDENTIAL_ID_HIDDEN]",
          "name": "WhatsApp API key"
        }
      }
    },
    {
      "parameters": {
        "operation": "deleteFile",
        "fileId": {
          "__rl": true,
          "value": "={{ $('Google Drive').item.json.id }}",
          "mode": "id"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.googleDrive",
      "typeVersion": 3,
      "position": [4420, 160],
      "id": "dcd55245-6092-4599-bea9-03e1faf06c6a",
      "name": "Google Drive1",
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "[GOOGLE_DRIVE_CREDENTIAL_ID_HIDDEN]",
          "name": "Google Drive account"
        }
      }
    },
    {
      "parameters": {
        "resource": "chat-files",
        "operation": "downloadDeviceFileDetails",
        "device": "={{ $json.device.id }}",
        "fileId": "={{ $json.data.media.id }}"
      },
      "type": "n8n-nodes-wassenger.wassenger",
      "typeVersion": 1,
      "position": [1660, 100],
      "id": "e86972a8-a14e-4718-a63d-ef3064888f10",
      "name": "Download image",
      "credentials": {
        "wassengerApiKey": {
          "id": "[CREDENTIAL_ID_HIDDEN]",
          "name": "WhatsApp API key"
        }
      }
    },
    {
      "parameters": {
        "url": "=https://api.wassenger.com{{ $('Wassenger Trigger').item.json.data.media.links.download }}",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [1880, 100],
      "id": "58f5b3c9-b599-4d05-98df-7fafbea560d8",
      "name": "Download API audio",
      "credentials": {
        "httpHeaderAuth": {
          "id": "[HTTP_AUTH_CREDENTIAL_ID_HIDDEN]",
          "name": "Header Auth account"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "dcf61ad5-2b19-411d-8e84-b9a4cd9bc74c",
              "name": "data.body",
              "value": "=# The user provided the following image and text.\n\n## Image Description:\n{{ $json.content }}\n\n## User Message:\n{{ $('Wassenger Trigger').item.json.data.media.caption }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [2320, 100],
      "id": "a2922296-70bd-4998-9da3-0d35f12ffd47",
      "name": "Image + Text Prompt"
    },
    {
      "parameters": {
        "resource": "image",
        "operation": "analyze",
        "modelId": {
          "__rl": true,
          "value": "chatgpt-4o-latest",
          "mode": "list",
          "cachedResultName": "CHATGPT-4O-LATEST"
        },
        "text": "Analyze the image",
        "inputType": "base64",
        "options": {}
      },
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "typeVersion": 1.8,
      "position": [2100, 100],
      "id": "1a9206d8-960d-45e7-8144-c1b8b88fb762",
      "name": "Analyze Image",
      "credentials": {
        "openAiApi": {
          "id": "[OPENAI_CREDENTIAL_ID_HIDDEN]",
          "name": "OpenAi account"
        }
      }
    }
  ],
  "pinData": {},
  "connections": {
    "Wassenger Trigger": {
      "main": [
        [
          {
            "node": "Switch",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Agent",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "AI Agent": {
      "main": [
        [
          {
            "node": "If",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Switch": {
      "main": [
        [
          {
            "node": "Download Audio",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Download image",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Audio": {
      "main": [
        [
          {
            "node": "Download Audio1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Audio1": {
      "main": [
        [
          {
            "node": "Audio transcription",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Audio transcription": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "If": {
      "main": [
        [
          {
            "node": "OpenAI",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Wassenger",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Simple Memory": {
      "ai_memory": [
        [
          {
            "node": "AI Agent",
            "type": "ai_memory",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code": {
      "main": [
        [
          {
            "node": "Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Drive": {
      "main": [
        [
          {
            "node": "Wassenger1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wassenger1": {
      "main": [
        [
          {
            "node": "Google Drive1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download image": {
      "main": [
        [
          {
            "node": "Download API audio",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download API audio": {
      "main": [
        [
          {
            "node": "Analyze Image",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Image + Text Prompt": {
      "main": [
        [
          {
            "node": "AI Agent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Analyze Image": {
      "main": [
        [
          {
            "node": "Image + Text Prompt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {},
  "versionId": "[VERSION_ID_HIDDEN]",
  "meta": {
    "templateId": "9000001",
    "templateCredsSetupCompleted": true,
    "instanceId": "[INSTANCE_ID_HIDDEN]"
  },
  "id": "[WORKFLOW_ID_HIDDEN]",
  "tags": []
}

Test en direct 🤖

Depuis l’application mobile WhatsApp

Félicitations ! Vous venez d’apprendre à configurer le workflow WhatsApp Agent Pro en utilisant la fonctionnalité Flows intégrée de Wassenger, transformant votre WhatsApp en un assistant intelligent propulsé par l’IA. Imaginez les possibilités !

Si ce guide vous a aidé, pourquoi ne pas partager l’enthousiasme ? Faites circuler cet article auprès de votre réseau. Aidons davantage de personnes à découvrir la puissance de l’automatisation WhatsApp avec la plateforme Flows intégrée de Wassenger. Ensemble, nous pouvons transformer la manière dont les entreprises communiquent avec leurs clients.

Prêt à commencer ? Visitez Wassenger dès maintenant et explorez la fonctionnalité Flows pour franchir la première étape vers une communication client plus intelligente et efficace. Votre audience vous attend !

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free