6. Agentes conversacionales de IA para WhatsApp

0 de 11 lecciones completas (0%)

Evolution API

2. Procesamiento y Humanización de la Interacción

Descarga el WorkFlow de la lección:

En la lección anterior, logramos establecer la conexión fundamental para que N8n recibiera los mensajes de WhatsApp a traves de Evolution API. Ahora, tenemos un flujo de datos en crudo que necesita ser procesado.

En esta lección, nos enfocaremos en tres pasos cruciales:

  1. Limpiar y Estructurar los Datos: Transformaremos el complejo JSON que recibimos en variables simples y accesibles que usaremos a lo largo de todo el flujo.
  2. Crear un Filtro de Desarrollo: Nos aseguraremos de que el agente de IA sólo nos responda a nosotros mientras lo construimos, evitando interacciones no deseadas.
  3. Simular Comportamiento Humano: Añadiremos una pausa y marcaremos los mensajes como leídos para que la interacción se sienta más natural y para mantener la «salud» de nuestro número de WhatsApp ante Meta.

Paso 1: Simplificar los Datos Recibidos con el Nodo «Edit Fields»

El JSON que nos envía Evolution API es muy completo, pero contiene mucha información que no necesitaremos. Para facilitar el trabajo, vamos a extraer solo los datos esenciales.

  1. Añade un nuevo nodo Edit Fields después del nodo Webhook. Este nodo nos permite crear o modificar variables.
  2. Renombra el nodo a algo descriptivo, como organizar_datos.
  3. Ahora, vamos a crear las variables que nos interesan. Haz clic en «Add Value» para cada una:
    • evento
      • Valor: Arrastra el campo event (messages.upsert) desde la salida del nodo Webhook.
    • instancia
      • Valor: Arrastra el campo instance (prueba_evoapi).
    • numero_remitente
      • Valor: Arrastra el campo remoteJid.
    • id_mensaje
      • Valor: Arrastra el campo id.
    • nombre_contacto
      • Valor: pushName.
    • mensaje_texto
      • Valor: Arrastra el campo conversation.
    • tipo_mensaje
      • Valor: Arrastra el campo messageType.
  4. Una vez mapeados todos los campos, haz clic en Execute Node. Verás en la pestaña de Output una estructura de datos mucho más limpia y organizada. A partir de ahora, trabajaremos con estas variables.

Pro-Tip: Acostúmbrate a guardar tu flujo constantemente (Save Workflow). N8n no tiene guardado automático y este simple hábito te ahorrará muchos dolores de cabeza.

Paso 2: Crear un Filtro Temporal para el Desarrollo

Mientras construimos y probamos nuestro agente, no queremos que le responda a cualquier persona que escriba al número. Para eso, crearemos un filtro.

  1. Añade un nuevo nodo Filter después del nodo organizar_datos.
  2. La lógica de este nodo es simple: si una condición se cumple, los datos continúan por la salida Kept (mantener); si no, saldría por la rama de Discarded (descartar) y se detiene ahí.
  3. Configura la condición de la siguiente manera:
    • Value 1: Arrastra nuestra variable numero_remitente desde la salida del nodo anterior.
    • Operation: Selecciona String -> is equal to.
    • Value 2: Aquí no arrastres una variable. Copia y pega tu propio número de WhatsApp (el que usas para las pruebas) en el formato que aparece en Value 1 (ej: 5211234567890@s.whatsapp.net). Este será un valor fijo.
  4. Si ejecutas el nodo, verás que los datos pasan por la salida true (o «Mantener»), porque el número del que enviaste el mensaje de prueba coincide con el que pusiste en el filtro.

¡Importante! Este nodo es solo para la fase de desarrollo. Una vez que el agente esté listo para producción, deberás desactivarlo o eliminarlo para que pueda responder a todos los usuarios.

Paso 3: Humanizar la Respuesta (Esperar y Marcar como Leído)

Una respuesta instantánea no parece humana. Vamos a añadir una pequeña pausa y la simulación de lectura para que la experiencia sea más natural. Estas son buenas prácticas para evitar el baneo de meta.

  1. Añadir una Pausa:
    • Agrega un nodo Wait después del nodo Filter.
    • Establece un tiempo de espera. Para producción, 5 segundos es un buen número. Para acelerar las pruebas, puedes ponerlo en 2 segundos temporalmente.
  2. Marcar el Mensaje como Leído:
    • Añade un nodo de la comunidad de Evolution API (previamente instalado) después del Wait y llámalo leer_mensaje
    • Configura el nodo de la siguiente manera:
      • Recurso: Chat
      • Operação: Ler Mensagens
    • Ahora, rellena los campos requeridos usando las variables limpias de nuestro nodo organizar_datos:
      • Nome Da Instância: Arrastra la variable instancia.
      • Contato: Arrastra la variable numero_remitente.
      • ID Da Mensagem: Arrastra la variable id_mensaje.

Resolviendo un Bug Común: A veces, al configurar un nodo, los datos de pasos anteriores no aparecen disponibles. Si te pasa esto, ve a la última ejecución exitosa en el panel de «Executions», y haz clic en el botón «Copy to Editor» para «fijar» esos datos y poder usarlos en la configuración.

  1. Ejecuta este último nodo. Si todo está correcto, el Output te devolverá un mensaje de éxito y, si miras tu WhatsApp, verás que el mensaje que enviaste ahora tiene el doble check azul.

Resumen de la Lección:

Ahora nuestro flujo no solo recibe mensajes, sino que también:

  • Organiza los datos de entrada para un manejo sencillo.
  • Filtra las interacciones para un entorno de desarrollo seguro.
  • Simula un comportamiento humano, esperando y marcando los mensajes como leídos.

Próximos Pasos:

Ahora que tenemos una base sólida, el siguiente paso es empezar a manejar la lógica principal. En la próxima lección, aprenderemos a usar el nodo Switch para que nuestro agente pueda identificar y reaccionar de manera diferente a distintos tipos de mensajes, como texto, imágenes o audios. ¡Te espero!

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.