Sviluppa un agente AI per WhatsApp personalizzato per la tua azienda in grado di interpretare le comunicazioni dei clienti tramite testo, voce e immagini, rispondendo sia in formato scritto che parlato
Con questa guida puoi distribuire un assistente AI completamente operativo con funzionalità multimediali sul tuo sistema o infrastruttura cloud in pochi minuti. Questo assistente fungerà da rappresentante digitale del servizio clienti, adattato alle esigenze specifiche dell’azienda.
Scopri Flows! La nuova funzionalità di Wassenger per automatizzare i tuoi messaggi
Indice
- Introduzione
- Configurazione
- Personalizzazione
- Implementazione dell’elaborazione multimediale: Testo
- Implementazione dell’elaborazione multimediale: Voce
- Implementazione dell’elaborazione multimediale: Immagini
- Integrazione RAG (Retrieval-Augmented Generation)
- Lancio e test
🤩 🤖 Wassenger fornisce una piattaforma API completa per WhatsApp. Registrati per una prova gratuita di 7 giorni e inizia subito!
In questa guida scoprirai come creare un assistente WhatsApp basato su ChatGPT in grado di:
- Gestire e rispondere ai messaggi scritti con risposte contestuali e precise
- Convertire e analizzare le registrazioni vocali per fornire risposte adeguate
- Analizzare ed estrarre dati dalle immagini per creare risposte pertinenti
- Gestire combinazioni di questi formati di input in conversazioni fluide
Utilizzeremo la funzionalità integrata Flows di Wassenger (basata su n8n), l’API di Wassenger per la connettività WhatsApp e l’API OpenAI (ChatGPT) per fornire al nostro assistente capacità avanzate di elaborazione del linguaggio naturale e comprensione multimediale.
Al termine di questa guida avrai un assistente WhatsApp completamente operativo che può comprendere e rispondere alle richieste dei clienti indipendentemente dal formato in cui vengono presentate, migliorando notevolmente l’esperienza utente e l’efficacia del servizio clienti.
🤩 🤖 Wassenger fornisce una piattaforma API completa per WhatsApp con funzionalità integrate di Flows (automazione dei flussi di lavoro). Registrati per una prova gratuita di 7 giorni e inizia subito!
Iniziamo a configurare il nostro assistente multimediale per WhatsApp utilizzando la funzionalità Flows integrata di Wassenger.
Requisiti
- Account Wassenger con accesso alla funzione Flows: Registrati gratuitamente per ottenere accesso all’API e alle capacità di automazione dei workflow
- Numero WhatsApp: Almeno un numero WhatsApp collegato a Wassenger
- Credenziali API OpenAI: disponibili qui
- Account Google
Importante! 💬 La funzione Flows di Wassenger fornisce automazione dei workflow integrata basata sulla tecnologia n8n, eliminando la necessità di ospitare n8n autonomamente o configurare una piattaforma n8n separata. Tutto funziona direttamente all’interno della piattaforma Wassenger!
Ora, costruiamo il nostro nuovo Assistente AI! 🤖
Configurazione
1. Accedi alla funzionalità Flows di Wassenger
Nel tuo pannello Wassenger, vai alla sezione ‘Flows’ per accedere alla funzionalità di automazione dei workflow integrata, basata sulla tecnologia n8n.
🤩 🤖 Wassenger fornisce una piattaforma API completa per WhatsApp con funzionalità integrate di Flows (automazione dei workflow). Registrati per una prova gratuita di 7 giorni e inizia subito!
2. Configura il Trigger di Wassenger
Ora che sei nell’interfaccia Flows di Wassenger, imposteremo il trigger come segue:
- Seleziona ‘Add first step’
- Cerca ‘Wassenger Trigger’ (già integrato nella piattaforma)
- Scegli il trigger ‘On new inbound message received’
- Apparirà una finestra simile a questa
Poiché stai lavorando all’interno della piattaforma Wassenger, le credenziali API sono automaticamente configurate per il tuo account.
3. Configura il Trigger del Flow
Poiché stai utilizzando la funzione Flows integrata di Wassenger, la configurazione del webhook è gestita automaticamente all’interno della piattaforma. Semplicemente:
- Seleziona il numero WhatsApp che vuoi monitorare per i messaggi in arrivo
- Scegli i tipi di messaggi che vuoi processare (testo, audio, immagini)
- Il sistema instraderà automaticamente i messaggi verso il tuo Flow
🤩 🤖 Wassenger fornisce una piattaforma API completa per WhatsApp con funzionalità integrate di Flows (automazione dei workflow). Registrati per una prova gratuita di 7 giorni e inizia subito!
4. Costruisci un modulo che identifichi testo, voce e immagini
Per prima cosa, seleziona ‘Test step’ per ricevere i dati dei messaggi in arrivo nel tuo Flow Wassenger per la gestione e l’elaborazione:
Dopo aver inviato un messaggio al tuo numero WhatsApp connesso, vedrai qualcosa di simile a questo:
Ora possiamo iniziare a lavorare con i dati recuperati
Creiamo un modulo ‘Switch’ all’interno dell’interfaccia Flows
Imposteremo poi tre possibili scenari e includeremo un’espressione definita che smisterà i diversi tipi di messaggio
- Testo:
{{ $json.data.type }} - Voce:
{{ $json.data.media.type }} - Immagine:
{{ $json.data.media.type }}
5. Aggiungi l’agente AI
Aggiungeremo ora il modulo Agente AI che ci aiuterà ad analizzare tutti i messaggi in arrivo e a creare le risposte in uscita
Clicca sul nodo inferiore del modulo ‘Switch’
Apparirà la finestra seguente.
Procederemo con questa configurazione:
- Source for Prompt (User Message): DEFINE BELOW
- Prompt (User Message):
{{ $json.data.body }}
🤩 🤖 Wassenger fornisce una piattaforma API completa per WhatsApp con funzionalità integrate di Flows (automazione dei workflow). Registrati per una prova gratuita di 7 giorni e inizia subito!
6. Collega il modello chat OpenAI
Apparirà una finestra come questa, dove inserirai le tue credenziali OpenAI
Crea un account OpenAI e trova le tue credenziali qui
Quindi aggiungile al tuo Flow di Wassenger
Aggiungeremo ora un messaggio di sistema per fornire all’AI istruzioni aggiuntive, includendo con chi l’AI sta parlando (Cliente) e l’ora esatta della conversazione:
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 fornisce una piattaforma API completa per WhatsApp. Registrati per una prova gratuita di 7 giorni e inizia subito!
7. Aggiungi il nodo memoria
Il nodo Memory permette a un modello AI di ricordare e fare riferimento a interazioni precedenti; non richiede credenziali poiché viene memorizzato all’interno di n8n
- Estendi la ‘Context Window Length’ a 20
- Definisci la Session ID come indicato qui sotto
- Cambia il campo in Expression e aggiungi:
{{ $(‘Switch’) }}
8. Costruisci il flusso per i messaggi vocali
Successivamente, imposteremo come il nostro bot analizzerà e gestirà i messaggi vocali inviati dai clienti. Iniziamo!
Come mostrato nell’immagine qui sotto, il processo include 4 passaggi principali:
- Recuperare il messaggio vocale dall’API Wassenger
- Creare il file scaricabile tramite una richiesta HTTP
- Convertire il messaggio vocale usando l’AI
- Inviare questo testo convertito al nostro agente AI
Recuperiamo il messaggio vocale da Wassenger.
Cerca Wassenger > Chat Files Download File
Configura quanto segue:
- Aggiungi il tuo account Wassenger
- Seleziona Chat Files come Resource
- Operazione: Get File Details
- WhatsApp Number:
{{ $json.device.id }} - File ID:
{{ $json.data.media.id }}
Aggiungeremo quindi un modulo HTTP per recuperare il file
Configura il modulo come segue:
- 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: Usa le tue credenziali API Wassenger (disponibili automaticamente in Flows)
Poi aggiungi:
- Name: Token
- Value: Il tuo token API Wassenger (accessibile direttamente all’interno della piattaforma Flows)
🤩 🤖 Wassenger fornisce una piattaforma API completa per WhatsApp. Registrati per una prova gratuita di 7 giorni e inizia subito!
Ora, aggiungeremo il modulo OpenAI che converte il messaggio vocale
Cerca: New module > Advanced AI > OpenAI > Transcribe a recording
Quindi configura il modulo:
Infine, invieremo il messaggio vocale convertito al nostro agente AI usando il modulo SET
E configuralo:
- Mode: Manual Mapping
- Fields to Set:
data.bodycome String e{{ $json.text }}
Ora la nostra conversione vocale è pronta!
9. Elabora le immagini
Per permettere al nostro BOT di analizzare le immagini, eseguiremo un processo simile a quello dei messaggi vocali. Vediamolo
Dal modulo Switch, aggiungi un nuovo modulo Wassenger Download Media
Configura quanto segue:
- Aggiungi il tuo account Wassenger
- Seleziona Chat Files come Resource
- Operation: Get File Details
- WhatsApp Number:
{{ $json.device.id }} - File ID:
{{ $json.data.media.id }}
Successivamente, recuperiamo l’immagine usando il modulo HTTP come fatto in precedenza per i messaggi vocali
- 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: Usa le tue credenziali API Wassenger (disponibili automaticamente in Flows)
🤩 🤖 Wassenger fornisce una piattaforma API completa per WhatsApp. Registrati per una prova gratuita di 7 giorni e inizia subito!
Ora aggiungeremo il modulo OpenAI che elabora l’immagine
Cerca: New module > Advanced AI > OpenAI > Analyze image
E configura il modulo come segue:
- Credential to connect with: account OpenAI (imposta le credenziali menzionate in precedenza)
- Resource: Image
- Operation: Analyse Image
- Model: CHATGPT-4O-LATEST
- Text input: Analyse the image
- Input Type: Binary File(s)
- Input Data Field Name: data
Infine, aggiungi il modulo SET per trasferire tutte le informazioni al nostro agente AI
E configura:
- Mode: Manual Mapping
- Fields to Set:
data.bodycome String e
# The user submitted the following image and text.
## Image Description:
{{ $json.content }}
Perfetto! Ora abbiamo tre possibili scenari in cui il nostro bot può processare testo, voce e immagini
Ora configuriamo come vogliamo che il bot risponda in base al tipo di messaggio ricevuto
10. Costruisci la risposta vocale
Dal nostro modulo AI Agent, aggiungiamo un nuovo modulo chiamato ‘IF’. Questo ci aiuterà a modificare la risposta in base al tipo di messaggio ricevuto.
Per la configurazione, imposteremo un valore ‘true’ o ‘false’ a seconda che il messaggio ricevuto sia vocale o immagine/testo. Per i messaggi vocali risponderemo con un messaggio vocale diverso, ma questa configurazione può essere adattata alle tue preferenze. Le opzioni sono illimitate!
Condizioni: {{ $(‘Switch’).item.json.data.media.type }} è uguale a audio
Ora creeremo il flusso di risposta vocale, iniziando con l’aggiunta del modulo OpenAI per generare l’audio:
Add nodes > Advanced AI > OpenAI > Generate Audio
E configuralo così:
- Credential to connect with: OpenAI account (imposta le credenziali menzionate in precedenza)
- Resource: Audio
- Operation: Generate Audio
- Model: TTS-1
- Text input (Expression):
{{ $('AI Agent').item.json.output }} - Voice: Seleziona la tua preferenza
Perché WhatsApp riconosca il nostro audio generato, dobbiamo convertirlo da audio/mp3 a audio/mpeg usando un semplice script fornito di seguito:
Crea un nuovo modulo Code
- Configuralo con il seguente codice JavaScript:
// 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();
Una volta convertito l’audio nel formato corretto per l’invio tramite Wassenger, dobbiamo memorizzarlo localmente o sul cloud. Qui useremo il cloud, ottenendo così un URL pubblico per inviare il file tramite l’API Wassenger. Per questo tutorial abbiamo scelto Google Drive, ma puoi usare qualsiasi piattaforma che preferisci.
Crea un nuovo modulo per Google Drive (Upload File)
- Configura tutte le credenziali Google all’interno di Wassenger Flows
Se non sai come collegare il tuo account Google a Wassenger Flows, guarda questo tutorial
- Nel File Name, aggiungeremo l’espressione:
{{ $json.fineName }} - Imposta il Parent Drive su My Drive
- Per la cartella di destinazione, crea una nuova cartella nel tuo Drive
Poi rendi quella cartella pubblica per essere accessibile da Wassenger Flows. Se non rendi la cartella pubblica, la chiamata API restituirà accesso non autorizzato
🤩 🤖 Wassenger fornisce una piattaforma API completa per WhatsApp. Registrati per una prova gratuita di 7 giorni e inizia subito!
Ora creeremo un modulo Send Multimedia Message con Wassenger per inviare il nuovo audio generato, utilizzando l’URL fornito da Google Drive
Configura il modulo:
- Definisci il numero dal quale vuoi inviare il messaggio
- Imposta il numero di destinazione recuperato dai dati del webhook configurato inizialmente:
{{ $(‘Switch’).item.json.data.fromNumber }} - Imposta il file URL:
{{ $json.webContentLink }}
Infine, rimuoveremo il file da Google Drive per evitare di conservare troppi file nel cloud e terminare lo spazio di archiviazione. Questo passaggio è opzionale. Se vuoi mantenere tutti i file audio generati, puoi farlo, ma dovrai aggiungere una variabile per rinominare i file audio ed evitare errori.
Imposta l’ID del file da rimuovere: {{ $(‘Google Drive’).item.json.id }}
🤩 🤖 Wassenger è una soluzione API completa per WhatsApp. Iscriviti per una prova gratuita di 7 giorni e inizia in pochi minuti!
11. Costruisci la risposta testuale
Ora che abbiamo il generatore vocale, creeremo il generatore di messaggi testuali, che verrà eseguito dal modulo IF e gestirà i casi in cui gli utenti ci inviano immagini (il bot analizzerà il messaggio con l’immagine e restituirà testo) o quando ci inviano semplici messaggi di testo
Dall’IF, aggiungi un nuovo modulo
E configura il modulo:
- Credentials to connect with: Wassenger Key account
- Resource: Send Message
- Operation: Send Text Message
- WhatsApp number: Il tuo numero connesso
- Target: Phone
- Target:
{{ $(Wassenger Trigger’).item.json.data.fromNumber }}` - Message:
{{ $json.output }}
Ecco fatto! Il nostro bot è completamente configurato! Ora possiamo testare il workflow per confermare che tutto funzioni correttamente.
Ottieni il workflow completo qui!
{
"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 live 🤖
Dall’applicazione WhatsApp mobile
Congratulazioni! Hai appena imparato come configurare il workflow WhatsApp Agent Pro utilizzando la funzionalità Flows integrata di Wassenger, trasformando il tuo WhatsApp in un assistente intelligente alimentato dall’AI. Immagina le possibilità!
Se questa guida ti è stata utile, perché non condividere l’entusiasmo? Condividi questo articolo con la tua rete. Aiutiamo più persone a scoprire il potere dell’automazione WhatsApp con la piattaforma Flows integrata di Wassenger. Insieme, possiamo trasformare il modo in cui le aziende comunicano con i loro clienti.
Pronto a cominciare? Visita Wassenger ora ed esplora la funzionalità Flows per fare il primo passo verso comunicazioni con i clienti più intelligenti ed efficienti. Il tuo pubblico ti sta aspettando!






















































