Construye un asistente de IA para WhatsApp completo con flujo de trabajo listo para usar en N8n

8 de julio de 2025

Desarrolla un agente de IA para WhatsApp personalizado para tu empresa que pueda interpretar comunicaciones de clientes mediante texto, voz y elementos visuales, respondiendo tanto en formato escrito como hablado.

Con esta guía, puedes desplegar un asistente de IA totalmente operativo con capacidades multimedia en tu sistema o infraestructura en la nube en cuestión de minutos. Este asistente funcionará como un representante digital de atención al cliente adaptado a necesidades comerciales específicas.

Descubre Flows! La nueva función de Wassenger para automatizar tus mensajes

Tabla de contenidos

  • Introducción
  • Configuración
  • Personalización
  • Implementación del procesamiento multimedia: Texto
  • Implementación del procesamiento multimedia: Voz
  • Implementación del procesamiento multimedia: Imágenes
  • Integración RAG (Retrieval-Augmented Generation)
  • Lanzamiento y pruebas

🤩 🤖 Wassenger proporciona una plataforma API completa para WhatsApp. Regístrate para una prueba gratuita de 7 días y comienza de inmediato!

En esta guía descubrirás cómo construir un asistente de WhatsApp impulsado por ChatGPT que puede:

  • Gestionar y responder mensajes escritos con respuestas contextuales y precisas
  • Convertir y analizar grabaciones de voz para ofrecer respuestas adecuadas
  • Analizar y extraer datos de imágenes para generar respuestas relevantes
  • Manejar combinaciones de estos formatos de entrada en conversaciones fluidas

Utilizaremos la función integrada Flows de Wassenger (impulsada por n8n), la API de Wassenger para la conectividad de WhatsApp y la API de OpenAI (ChatGPT) para dotar a nuestro asistente de capacidades avanzadas de procesamiento de lenguaje natural y comprensión multimedia.

Al completar esta guía, contarás con un asistente de WhatsApp completamente funcional que puede comprender y responder a las consultas de los clientes sin importar su formato de presentación, mejorando sustancialmente la experiencia del usuario y la eficacia del servicio al cliente.

🤩 🤖 Wassenger ofrece una plataforma API completa para WhatsApp con la funcionalidad integrada de Flows (automatización de flujos de trabajo). Regístrate para una prueba gratuita de 7 días y comienza de inmediato!

Comencemos con la configuración de nuestro asistente multimedia para WhatsApp usando la función integrada Flows de Wassenger.

Requisitos

  • Cuenta de Wassenger con acceso a la función Flows: Regístrate sin costo para obtener acceso a la API y a las capacidades de automatización de flujos de trabajo
  • Número de WhatsApp: Al menos un número de WhatsApp vinculado a Wassenger
  • Credenciales de la API de OpenAI: disponibles aquí
  • Cuenta de Google

¡Importante! 💬 La función Flows de Wassenger proporciona automatización de flujos de trabajo integrada basada en la tecnología n8n, eliminando la necesidad de autoalojar o configurar la plataforma n8n por separado. ¡Todo se ejecuta directamente dentro de la plataforma de Wassenger!

Ahora, ¡construyamos nuestro nuevo Asistente de IA! 🤖

Configuración

1. Accede a la función Flows de Wassenger

En el panel de Wassenger, navega a la sección ‘Flows’ para acceder a la funcionalidad de automatización de flujos de trabajo integrada basada en la tecnología n8n.

🤩 🤖 Wassenger ofrece una plataforma API completa para WhatsApp con la funcionalidad integrada de Flows (automatización de flujos de trabajo). Regístrate para una prueba gratuita de 7 días y comienza de inmediato!

2. Configura el Trigger de Wassenger

Ahora que estamos dentro de la interfaz de Wassenger Flows, estableceremos el trigger de la siguiente manera:

  • Selecciona ‘Add first step’
  • Busca ‘Wassenger Trigger’ (ya integrado en la plataforma)
  • Elige el trigger ‘On new inbound message received
  • Aparecerá una ventana similar a esta

Dado que estás trabajando dentro de la plataforma de Wassenger, las credenciales de la API se configuran automáticamente para tu cuenta.

3. Configura tu Trigger del Flow

Como estás utilizando la función Flows integrada de Wassenger, la configuración del webhook se gestiona automáticamente dentro de la plataforma. Simplemente:

  • Selecciona el número de WhatsApp que deseas monitorizar para recibir mensajes entrantes

  • Elige los tipos de mensajes que deseas procesar (texto, audio, imágenes)

  • El sistema enrutarará automáticamente los mensajes a tu Flow

🤩 🤖 Wassenger ofrece una plataforma API completa para WhatsApp con la funcionalidad integrada de Flows (automatización de flujos de trabajo). Regístrate para una prueba gratuita de 7 días y comienza de inmediato!

4. Construye un módulo que identifique texto, voz e imágenes

Primero, selecciona ‘Test step’ para recibir los datos del mensaje entrante en tu Flow de Wassenger para su gestión y procesamiento:

Después de enviar un mensaje a tu número de WhatsApp conectado, verás algo similar a esto:

Ahora podemos empezar a trabajar con los datos recuperados.

Construyamos un módulo ‘Switch’ dentro de la interfaz de Flows

A continuación estableceremos tres posibles escenarios e incluiremos una expresión definida que clasificará los diferentes tipos de mensajes

  • Text: {{ $json.data.type }}
  • Voice: {{ $json.data.media.type }}
  • Image: {{ $json.data.media.type }}

5. Incluye el Agente de IA

Ahora agregaremos el módulo del Agente de IA que nos ayudará a analizar todos los mensajes entrantes y a crear las respuestas salientes

Haz clic en el nodo inferior del módulo ‘Switch’

Aparecerá la siguiente ventana.

Procederemos con esta configuración:

  • Source for Prompt (User Message): DEFINE BELOW
  • Prompt (User Message): {{ $json.data.body }}

🤩 🤖 Wassenger ofrece una plataforma API completa para WhatsApp con la funcionalidad integrada de Flows (automatización de flujos de trabajo). Regístrate para una prueba gratuita de 7 días y comienza de inmediato!

6. Vincula el modelo de chat de OpenAI

Aparecerá una ventana como esta, y deberás insertar tus credenciales de OpenAI

Crea una cuenta en OpenAI y localiza tus credenciales aquí

Luego añádelas a tu Flow de Wassenger

Ahora añadiremos un mensaje de sistema para proporcionar al IA instrucciones adicionales, incluyendo con quién está hablando la IA (Cliente) y la hora exacta de la conversación:

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 proporciona una plataforma API completa para WhatsApp. Regístrate para una prueba gratuita de 7 días y comienza de inmediato!

7. Incluye el nodo de memoria

El nodo Memory permite que un modelo de IA recuerde y haga referencia a interacciones previas; no requiere credenciales ya que se almacena dentro de n8n

  • Amplía la ‘Context Window Length’ a 20
  • Define el Session ID como se indica abajo
  • Cambia el campo a Expression y añade: {{ $(‘Switch’) }}

8. Construye el flujo de mensajes de voz

A continuación, configuraremos cómo nuestro bot analizará y gestionará los mensajes de voz enviados por nuestros clientes. ¡Comencemos!

Como se muestra en la imagen a continuación, el proceso incluye 4 pasos principales:

  1. Recuperar el mensaje de voz desde la API de Wassenger
  2. Crear el archivo de descarga mediante una petición HTTP
  3. Convertir el mensaje de voz usando IA
  4. Enviar este texto convertido a nuestro agente de IA

Vamos a recuperar el mensaje de voz desde Wassenger.

Busca Wassenger > Chat Files Download File

Configura lo siguiente:

  • Añade tu cuenta de Wassenger
  • Selecciona Chat Files como Resource
  • Operation: Get File Details
  • WhatsApp Number: {{ $json.device.id }}
  • File ID: {{ $json.data.media.id }}

A continuación, añadiremos un módulo HTTP para recuperar el archivo

Configura el módulo de la siguiente manera:

  • 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 tus credenciales de la API de Wassenger (disponibles automáticamente en Flows)

Después, añadiremos:

  • Name: Token
  • Value: Tu token de la API de Wassenger (accesible directamente dentro de la plataforma Flows)

🤩 🤖 Wassenger proporciona una plataforma API completa para WhatsApp. Regístrate para una prueba gratuita de 7 días y comienza de inmediato!

Ahora añadiremos el módulo de OpenAI que convierte el mensaje de voz

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

Luego configura el módulo:

Finalmente, enviaremos el mensaje de voz convertido a nuestro agente de IA usando el módulo SET

Y configúralo:

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

¡Ahora nuestra conversión de voz está lista!

9. Procesar imágenes

Para que nuestro BOT analice imágenes, ejecutaremos un proceso similar al de los mensajes de voz. Veámoslo.

Desde el módulo Switch, añade un nuevo módulo Wassenger Download Media

Configura lo siguiente:

  • Añade tu cuenta de Wassenger
  • Selecciona Chat Files como Resource
  • Operation: Get File Details
  • WhatsApp Number: {{ $json.device.id }}
  • File ID: {{ $json.data.media.id }}

A continuación, recuperemos la imagen usando el módulo HTTP como hicimos anteriormente con los mensajes de voz

  • 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 tus credenciales de la API de Wassenger (disponibles automáticamente en Flows)

🤩 🤖 Wassenger proporciona una plataforma API completa para WhatsApp. Regístrate para una prueba gratuita de 7 días y comienza de inmediato!

Ahora añadiremos el módulo de OpenAI que procesa la imagen

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

Y configura el módulo así:

  • Credential to connect with: Cuenta de OpenAI (Configura las credenciales mencionadas anteriormente)
  • Resource: Image
  • Operation: Analyse Image
  • Model: CHATGPT-4O-LATEST
  • Text input: Analyse the image
  • Input Type: Binary File(s)
  • Input Data Field Name: data

Finalmente, añade el módulo SET para transferir toda la información a nuestro agente de IA

Y configúralo:

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

¡Perfecto! Ahora tenemos tres escenarios posibles para que nuestro bot procese texto, voz e imágenes.

Ahora configuremos cómo queremos que nuestro bot responda según el tipo de mensaje que reciba.

10. Construye la respuesta de voz

Desde nuestro módulo AI Agent, añadamos un nuevo módulo llamado ‘IF’. Esto nos ayudará a modificar nuestra respuesta dependiendo del tipo de mensaje recibido.

Para la configuración, estableceremos un valor de ‘true’ o ‘false’ según si el mensaje recibido es de voz o una imagen/texto. Para los mensajes de voz, responderemos con un mensaje de voz diferente, aunque esta configuración puede ajustarse a tu preferencia. ¡Las opciones son ilimitadas!

Condiciones: {{ $(‘Switch’).item.json.data.media.type }} es igual a audio

Ahora, crearemos el flujo de respuesta de voz, empezando por añadir el módulo OpenAI para producir audio:

Add nodes > Advanced AI > OpenAI > Generate Audio

Y configúralo así:

  • Credential to connect with: OpenAI account (Configura las credenciales mencionadas anteriormente)
  • Resource: Audio
  • Operation: Generate Audio
  • Model: TTS-1
  • Text input (Expression): {{ $('AI Agent').item.json.output }}
  • Voice: Selecciona tu preferencia

Para que WhatsApp reconozca nuestro audio generado, necesitamos convertirlo de audio/mp3 a audio/mpeg usando un script simple proporcionado a continuación:

Crea un nuevo módulo Code

  1. Configúralo con el siguiente código 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 vez que nuestro audio esté convertido al formato correcto para enviarlo a través de Wassenger, necesitamos almacenarlo localmente o en la nube. Aquí usaremos la nube, lo que nos proporciona una URL pública para que este archivo pueda ser enviado mediante la API de Wassenger. Para este tutorial, seleccionamos Google Drive, pero puedes usar cualquier plataforma que funcione mejor para ti.

Crea un nuevo módulo para Google Drive (Upload File)

  1. Configura todas las credenciales de Google dentro de Wassenger Flows

Si no sabes cómo conectar tu cuenta de Google a Wassenger Flows, mira este tutorial

  1. En File Name, añadiremos la siguiente expresión: {{ $json.fineName }}
  2. Establece el Parent Drive como My Drive
  3. Para la Parent Folder, necesitamos crear una nueva carpeta dentro de nuestro Drive

Luego, haz pública esa carpeta para que sea accesible desde Wassenger Flows. Si no haces pública la carpeta, la llamada a la API devolverá acceso no autorizado.

🤩 🤖 Wassenger proporciona una plataforma API completa para WhatsApp. Regístrate para una prueba gratuita de 7 días y comienza de inmediato!

Ahora crearemos un módulo Send Multimedia Message con Wassenger para enviar el audio recién generado a partir de la URL proporcionada por Google Drive

Configura el módulo:

  • Define el número desde el que quieres enviar el mensaje
  • Establece el número objetivo recuperado de los datos del webhook que configuramos inicialmente: {{ $(‘Switch’).item.json.data.fromNumber }}
  • Establece la URL del archivo: {{ $json.webContentLink }}

Finalmente, eliminaremos nuestro archivo de Google Drive para evitar almacenar demasiados archivos en la nube y quedarnos sin espacio. Este paso es opcional. Si deseas conservar todos los archivos de audio generados, puedes hacerlo, pero necesitarás añadir una variable para nombrar los archivos de audio y evitar errores.

Establece el ID del archivo a eliminar: {{ $(‘Google Drive’).item.json.id }}

🤩 🤖 Wassenger es una solución API completa para WhatsApp. Regístrate para una prueba gratuita de 7 días y comienza en minutos!

11. Construye la respuesta de texto

Ahora que tenemos nuestro generador de voz, crearemos nuestro generador de mensajes de texto, que se ejecutará desde el módulo IF y manejará los casos donde los usuarios nos envían imágenes (el bot analizará el mensaje con la imagen y devolverá texto) o cuando nos envían mensajes de texto simples.

Desde el IF, añade un nuevo módulo

Y configura el módulo:

  • Credentials to connect with: Wassenger Key account
  • Resource: Send Message
  • Operation: Send Text Message
  • WhatsApp number: Tu número conectado
  • Target: Phone
  • Target: {{ $(Wassenger Trigger’).item.json.data.fromNumber }}`
  • Message: {{ $json.output }}

¡Y listo! ¡Nuestro bot está completamente configurado! Ahora podemos probar el flujo de trabajo para confirmar que todo funciona correctamente.

Obtén el workflow completo aquí:

{
  "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": []
}

Prueba en vivo 🤖

Desde la aplicación móvil de WhatsApp

¡Felicidades! Acabas de aprender a configurar el workflow WhatsApp Agent Pro usando la función Flows integrada de Wassenger, convirtiendo tu WhatsApp en un asistente inteligente potenciado por IA. ¡Imagina las posibilidades!

Si esta guía te ayudó, ¿por qué no compartir el entusiasmo? Difunde el artículo con tu red. Ayudemos a más personas a descubrir el poder de la automatización de WhatsApp con la plataforma Flows integrada de Wassenger. Juntos, podemos transformar la manera en que las empresas se relacionan con sus clientes.

¿Listo para empezar? Visita Wassenger ahora y explora la función Flows para dar el primer paso hacia una comunicación con clientes más inteligente y eficiente. ¡Tu audiencia te está esperando!

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free