6. Agentes conversacionales de IA para WhatsApp

0 de 11 lecciones completas (0%)

Evolution API

6. Analizando Documentos con OpenAI

Descarga el WorkFlow de la lección:

Hemos equipado a nuestro agente con la capacidad de ver y escuchar. En esta lección, le daremos la habilidad de «leer» documentos que los usuarios podrían enviar, como archivos PDF, de texto o incluso hojas de cálculo.

El desafío con los documentos es que pueden tener muchos formatos diferentes. Afortunadamente, nuestro enfoque será lo suficientemente flexible para manejarlos. Haremos que la conversión del archivo sea dinámica y utilizaremos un modelo de lenguaje de OpenAI para extraer y resumir el contenido del documento.

Objetivos de esta lección:

  • Adaptar el flujo para manejar mensajes de tipo documento.
  • Hacer que el nodo Convert to File identifique dinámicamente el tipo de documento y su nombre.
  • Utilizar un modelo de chat de OpenAI para analizar el contenido del documento.
  • Formatear la salida para que el agente entienda que se trata de un documento.

Paso 1: Duplicar y Adaptar el Flujo de Trabajo

Como ya es costumbre, vamos a agilizar el proceso duplicando una de las ramas existentes.

  1. Copia la rama que creamos para el audio y pégala en el canvas.
  2. Conecta la salida Documento de tu nodo Switch al primer nodo Set de la nueva rama.
  3. Renombra los nodos para reflejar su nueva función:
    • extraer_base64_audio -> extraer_base64_documento
    • convertir_a_audio -> convertir_a_documento
    • transcribir_audio -> analizar_documento
    • audio -> documento

Paso 2: Configurar una Conversión de Archivo Dinámica

A diferencia de las imágenes o audios, donde nosotros definíamos el formato de salida (image/png, audio/wav), con los documentos queremos preservar el formato original. Si un usuario envía un PDF, queremos que siga siendo un PDF.

  1. Abre el nodo convertir_a_documento.
  2. Mime Type Dinámico:
    • En lugar de escribir un valor fijo en el campo Mime Type, vamos a usar una expresión para que tome el tipo de archivo original.
    • Borra audio/wav. Arrastra la variable mimeType que viene directamente del nodo Webhook inicial (recibe_whatsapp). La encontrarás dentro del objeto data.message. Su valor será algo como application/pdf.
  3. Nombre de Archivo Dinámico:
    • Queremos que el archivo conserve su nombre original. Haz clic en Add Option y selecciona File Name.
    • En el campo File Name, arrastra la variable title que también viene del nodo Webhook, justo debajo de mimeType.
  4. Ejecuta este nodo con los datos de un documento de prueba (envía un PDF a tu número). Verás en el Output que N8n ha reconstruido el archivo binario, manteniendo su formato y nombre originales.

Paso 3: Analizar el Documento con OpenAI

Para analizar el contenido de un documento, no usaremos una función específica como «Analyze Image» o «Transcribe Audio». En su lugar, usaremos el modo de chat estándar, pero le adjuntaremos el archivo.

  1. Configúralo de la siguiente manera:
    • Resource: Text
    • Operation: Message a model
    • Model: Elige un modelo base GPT-5.
    • Messages: Aquí configuraremos dos mensajes para darle instrucciones claras al modelo.
      • Primer Mensaje (System):
        • Type: Text.
        • Role: System.
        • Prompt: Describe este documento recibido por WhatsApp. Sé lo más detallado posible y transcribe cualquier texto visible en él.
      • Segundo Mensaje (User con Archivo):
      • Type: Cambia de Text a File.
      • Role: User.
      • File Type: File Data.
      • File data: data (el nombre del archivo binario del paso anterior).
      • File Name: Aquí, al igual que en el paso anterior, arrastra la variable title desde el nodo Webhook para que el modelo sepa cómo se llama el archivo.
  2. Ejecuta el nodo. OpenAI procesará el archivo adjunto según tus instrucciones y te devolverá un resumen y/o transcripción de su contenido en el Output.

Paso 4: Formatear la Salida para el Agente

El último paso es empaquetar la respuesta de OpenAI para que nuestro agente la interprete correctamente.

  1. Abre el último nodo documento.
  2. configura el nodo:
    • Nombre: ya debería ser input, lo cual es correcto.
    • Mode: Cambia el modo a Expression
    • Valor: Aquí vamos a «envolver» la respuesta de OpenAI. Pega el siguiente código en el campo de expresión:
      • <documento>
        {{ $json.output[0].content[0].text }}
        </documento>
  3. Ejecuta el nodo final. El resultado será el texto transcrito, envuelto en etiquetas <documento>, listo para el siguiente paso.

Resumen de la Lección:

¡Misión cumplida! Nuestro agente ahora es increíblemente versátil. No solo ve y escucha, sino que también lee. Hemos completado la sección de procesamiento de diferentes tipos de mensajes.

En esta lección aprendimos a:

  • Configurar el nodo Convert to File para que se adapte dinámicamente al tipo y nombre del documento original.
  • Enviar documentos a los modelos de chat de OpenAI para un análisis de contenido profundo.
  • Estructurar la salida para que el agente entienda que el texto proviene de un documento.

Próximos Pasos:

Ahora que tenemos rutas separadas para cada tipo de mensaje, necesitamos unificarlas antes de pasar a la lógica de la conversación. En la siguiente lección, usaremos un nodo Edit Fields para consolidar todas las salidas (input de texto, imagen, audio y documento) en un solo camino, simplificando enormemente el resto del flujo. ¡Vamos a ello!

Resumen de privacidad
Logo JeroCuevas.com

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Analítica

Esta web utiliza Google Analytics para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.