Agente Telegram generador de imágenes
📝 Resumen de Clase: Chatbot de Telegram con Generación de Imágenes
Descripción:
Aprende a construir un chatbot avanzado en Telegram que no solo conversa, sino que permite a los usuarios generar y modificar imágenes utilizando IA (Gemini). El núcleo técnico de esta clase es el uso de Redis para gestionar el estado de la conversación y mantener el contexto entre múltiples interacciones.
🛰️ Implementación del Trigger y Enrutamiento (Switch)
- Inicio: Creación del bot mediante BotFather y conexión del nodo “Telegram Trigger” en n8n.
- Nodo Switch: Fundamental para dirigir el flujo según la interacción del usuario:
- Comando /start: Muestra el menú principal.
- Callbacks: Procesa las acciones de los botones (ej: “Generar imagen” o “Modificar foto”).
- Estructura: El flujo se divide en ramas claras para organizar la lógica de cada funcionalidad.
🧠 Gestión del Estado con Redis (El Cerebro del Bot)
- El Problema: n8n olvida en qué paso está el usuario una vez que termina la ejecución del nodo. Si el usuario envía una descripción de imagen, el bot no sabe si es para una generación nueva o una modificación.
- La Solución: Usar Redis como base de datos de sesión.
- Guardar: Se almacena la clave última_acción:[chat_id] (ej: “esperando_prompt”).
- Recuperar: Al recibir un mensaje, el bot consulta Redis para saber qué contexto aplicar.
- Limpiar: Una vez completada la tarea, se borra el estado para dejar al bot listo para la siguiente orden.
🎨 Generación de Imágenes con Gemini
- Nodo Gemini: Configurado con la opción “Generate an Image”.
- Prompt dinámico: Se pasa la descripción enviada por el usuario directamente al modelo.
- Manejo de medios: El bot recibe la imagen generada y la envía de vuelta al chat de Telegram automáticamente.
🔧 Flujo de Modificación de Imágenes
Este proceso es más complejo y requiere una secuencia lógica estricta:
- Callback: El usuario elige “Modificar”.
- Solicitud: El bot pide al usuario que envíe una foto.
- Validación: Se comprueba mediante código si el mensaje contiene un archivo de imagen.
- Descarga: Uso de la función Get a File de Telegram para obtener la imagen en alta resolución.
- Edición IA: Se envía la imagen original y las instrucciones de cambio al nodo de Gemini.
- Resultado: Envío de la imagen transformada al usuario.
⚠️ Manejo de Callbacks y Tipos de Datos
- Diferenciación: Telegram envía datos distintos si es un mensaje de texto o un clic en un botón (callback).
- Lógica Condicional: Es necesario usar expresiones (operadores ternarios) para extraer correctamente el Chat ID sin importar de dónde venga la interacción.
🐛 Troubleshooting y Soluciones Rápidas
- Conflicto de Credenciales: Asegúrate de usar la misma credencial de Telegram en todos los nodos (Trigger, Send Message, Get File) para evitar errores de permisos.
- Pérdida de Contexto: Si el bot “no responde” tras pedir una imagen, verifica que la clave en Redis se esté guardando con el ID de chat correcto.
💡 Consejo Pro: Uso de JavaScript Custom
- Optimización de Imágenes: Telegram envía varias versiones de una foto (miniaturas). Utiliza un pequeño bloque de código JavaScript para identificar y seleccionar siempre la versión con la mayor resolución antes de enviarla a la IA.
- IA para el código: Puedes apoyarte en modelos de lenguaje para generar estos fragmentos de código específicos de n8n.
Conclusión:
Has aprendido a crear un bot de Telegram con “memoria” gracias a Redis. Esta arquitectura es la base para crear asistentes complejos que requieren flujos de varios pasos, permitiendo integrar herramientas de IA generativa de forma fluida y profesional.