Descarga el WorkFlow de la lección:
En la lección anterior, implementamos un sistema para almacenar los mensajes de un usuario en Redis y esperar a que termine de escribir. Ahora, debemos recuperar todos esos mensajes, asegurarnos de que estamos actuando solo sobre la conversación final y unir todo en un solo texto coherente.
Objetivos de esta lección:
- Recuperar la lista completa de mensajes almacenados en Redis.
- Utilizar un nodo condicional If para evitar respuestas duplicadas y asegurar que solo el último mensaje active la respuesta.
- Concatenar (unir) la lista de mensajes en un solo bloque de texto.
Paso 1: Recuperar la Conversación Completa desde Redis
El primer paso es pedirle a Redis que nos devuelva todos los mensajes que hemos guardado para un usuario específico.
- Añade un nodo Redis después de esperar_mas_mensajes.
- Renómbralo a recuperar_mensajes.
- Configúralo de la siguiente manera:
- Operation: Get (para obtener todos los mensajes guardados).
- Name: mensajes_recuperados (nombre de la variable donde van a guardar todos los mensajes)
- Key: {{ $(‘data’).item.json.numero_whatsapp }} (número de teléfono que es el identificador único por usuario)
- Key Type: Automatic.
- Ejecuta este nodo. En el Output, verás una nueva variable (mensajes_recuperados) que contiene un array (una lista) con todos los mensajes que el usuario envió en la ráfaga anterior.
Paso 2: La Condición Clave con el Nodo If
Este es un paso crucial y un poco abstracto, pero fundamental para que el agente funcione correctamente. Debemos evitar que el agente responda a cada uno de los mensajes que el usuario envió. Si el usuario envió «Hola», «qué tal» y «tengo una pregunta», las tres ejecuciones del flujo llegarán hasta aquí. Debemos asegurarnos de que solo la última ejecución («tengo una pregunta») continúe.
- Añade un nodo If después de recuperar_mensajes.
- Renómbralo a ¿es_el_ultimo_mensaje?.
- Configuraremos una condición para comparar dos cosas:
- Value 1 (El último mensaje guardado en Redis):
- Cambia el modo a Expression.Escribe la siguiente expresión: {{ $json.mensajes_recuperados.last() }}
- Operation: is equal to
- Value 2 (El mensaje que estamos recibiendo en la ejecución actual:
- Arrastra la variable input desde la salida del nodo unificar_input
- Value 1 (El último mensaje guardado en Redis):
La Lógica: Esta condición pregunta: «¿El último mensaje que hay guardado en la base de datos es exactamente el mismo que el mensaje que viene en esta ejecución del flujo?». Si la respuesta es sí, significa que esta es la ejecución final y debemos proceder. Para todas las ejecuciones anteriores, la condición será falsa y el flujo se detendrá.
Paso 3: Concatenar los Mensajes para la IA
Una vez que el nodo If nos da luz verde, tenemos una lista de mensajes que necesitamos unir en un solo texto para que la IA pueda entender el contexto completo.
- Desde la salida true del nodo If, añade un nodo Edit Field.
- Renómbralo a concatenar_mensajes.
- Crea un único valor:
- Nombre: input_final
- Mode: Cambia a Expression.
- Valor:
{{ $json.mensajes_recuperados.join('\n') }} Análisis de la expresión: `$json.mensajes_recuperados` es un array de mensajes recuperados de Redis. El método `.join()` es una función de JavaScript que une todos los elementos de un array en un solo string. `'\n'` es el carácter especial para un **salto de línea**. Le estamos diciendo que una cada mensaje con un salto de línea en medio. Esto formatea el texto de una manera muy legible para la IA.
- Ejecuta este último nodo. El resultado (Output) será un campo llamado input_final que contiene la conversación completa del usuario, bien estructurada y lista para ser procesada.
Resumen de la Lección:
¡Hemos completado la lógica de gestión de la conversación! Este es el corazón de cómo nuestro agente puede manejar un diálogo natural.
En esta lebilcción hemos aprendido a:
- Recuperar un conjunto de datos desde una lista de Redis.
- Implementar una condición If con expresiones para controlar el flujo de ejecución y evitar duplicados.
- Utilizar el método .join() para concatenar múltiples mensajes en un solo bloque de texto coherente.
Próximos Pasos:
¡Llegó el momento que todos esperábamos! Con nuestro input_final listo, en la siguiente lección finalmente conectaremos nuestro flujo al nodo AI Agent. Configuraremos el modelo, el prompt del sistema y la memoria para que, por fin, nuestro agente pueda pensar y generar una respuesta. ¡Va a ser increíble!