mirror of
https://github.com/marcogll/talia_bot.git
synced 2026-01-13 21:35:19 +00:00
This commit provides a comprehensive update to the README.md file. The previous version was outdated and did not accurately represent the project's structure or architecture after the implementation of the JSON-based flow engine. Key changes: - Rewrites the "Arquitectura Técnica" section to be simpler and more accurate. - Updates the "Estructura del Proyecto" diagram to be a perfect representation of the current file and module structure. - Corrects the `git clone` URL in the installation instructions. - Harmonizes file names (e.g., `google_key.json`) across the documentation and configuration to avoid confusion. - Simplifies and clarifies the setup and execution instructions.
6.4 KiB
6.4 KiB
🤖 Talia Bot: Asistente Personal & Orquestador de Negocio
Talia es un Middleware de Inteligencia Artificial diseñado para orquestar operaciones de negocio a través de Telegram. Funciona como un asistente personal que responde a roles de usuario específicos, conectando servicios externos como Vikunja (Gestión de Proyectos) y Google Calendar en una única interfaz conversacional.
🚀 Concepto Central: Arquitectura Modular y Roles de Usuario
La funcionalidad del bot se basa en dos pilares:
- Enrutamiento por Identidad: El bot identifica a cada usuario por su Telegram ID y le asigna un rol (
admin,crew,client). Cada rol tiene acceso a un conjunto diferente de funcionalidades y menús, definidos en una base de datos SQLite. - Motor de Flujos de Conversación: En lugar de código rígido, las conversaciones se definen como "flujos" en archivos JSON (
talia_bot/data/flows/). Un motor central (flow_engine.py) interpreta estos archivos para guiar al usuario a través de una serie de preguntas y respuestas, haciendo que el sistema sea altamente escalable y fácil de mantener.
| Rol | Icono | Descripción | Permisos Clave |
|---|---|---|---|
| Admin | 👑 | Dueño / Gerente | Control total: gestión de proyectos, agenda, y configuración del sistema. |
| Crew | 👷 | Equipo Operativo | Funciones limitadas: solicitud de agenda, impresión de documentos. |
| Cliente | 👤 | Usuario Externo | Embudo de ventas: captación de datos y presentación de servicios. |
🛠️ Arquitectura Técnica Simplificada
El sistema opera con el siguiente flujo:
- Recepción de Mensajes:
main.pyrecibe todos los inputs (texto, botones, comandos) desde Telegram. - Identificación de Usuario: Se consulta la base de datos (
users.db) para obtener el rol del usuario. - Dispatching de Acciones:
- Si el usuario no está en una conversación, se le muestra un menú de botones basado en los flujos JSON disponibles para su rol.
- Si el usuario ya está en una conversación, el
flow_engine.pygestiona la respuesta.
- Ejecución de Módulos: El motor de flujos invoca módulos específicos (
vikunja.py,calendar.py, etc.) para interactuar con APIs externas según sea necesario.
⚙️ Instalación y Configuración
Prerrequisitos
- Python 3.9+
- Docker y Docker Compose
- Cuenta de Telegram Bot (@BotFather)
- Instancia de Vikunja (Self-hosted)
- Credenciales de Cuenta de Servicio de Google Cloud (para Calendar API)
1. Clonar y Configurar el Entorno
# Clona el repositorio oficial
git clone https://github.com/marcogll/talia_bot.git
cd talia_bot
# Copia el archivo de ejemplo para las variables de entorno
cp .env.example .env
2. Variables de Entorno (.env)
Abre el archivo .env y rellena las siguientes variables. No subas este archivo a Git.
# Token de tu bot de Telegram
TELEGRAM_TOKEN=tu_token_telegram
# Tu Telegram ID numérico para permisos de administrador
ADMIN_ID=tu_telegram_id
# Clave de API de OpenAI (si se usa)
OPENAI_API_KEY=sk-...
# URL y Token de tu instancia de Vikunja
VIKUNJA_API_URL=https://tu_vikunja.com/api/v1
VIKUNJA_TOKEN=tu_token_vikunja
# ID del Calendario de Google a gestionar
CALENDAR_ID=tu_id_de_calendario@group.calendar.google.com
# Ruta al archivo de credenciales de Google Cloud.
# Este archivo debe estar en el directorio raíz y se llama 'google_key.json' por defecto.
GOOGLE_SERVICE_ACCOUNT_FILE=./google_key.json
3. Estructura de Datos y Credenciales
- Base de Datos: La base de datos
users.dbse creará automáticamente si no existe. Para asignar roles, debes agregar manualmente los Telegram IDs en la tablausers. - Credenciales de Google: Coloca tu archivo de credenciales de la cuenta de servicio de Google Cloud en el directorio raíz del proyecto y renómbralo a
google_key.json. El archivo.gitignoreya está configurado para ignorar este archivo y proteger tus claves. - Flujos de Conversación: Para modificar o añadir flujos, edita los archivos JSON en
talia_bot/data/flows/.
4. Ejecución con Docker
La forma más sencilla de levantar el bot es usando Docker Compose:
docker-compose up --build
📂 Estructura del Proyecto
talia_bot/
├── .env # (Local) Variables de entorno y secretos
├── .env.example # Plantilla de variables de entorno
├── .gitignore # Archivos ignorados por Git
├── Dockerfile # Define el contenedor de la aplicación
├── docker-compose.yml # Orquesta el servicio del bot
├── google_key.json # (Local) Credenciales de Google Cloud
├── requirements.txt # Dependencias de Python
├── talia_bot/
│ ├── __init__.py
│ ├── main.py # Entry point, dispatcher y handlers de Telegram
│ ├── db.py # Lógica de la base de datos SQLite
│ ├── config.py # Carga y validación de variables de entorno
│ ├── scheduler.py # (Futuro) Tareas programadas
│ ├── webhook_client.py # (Futuro) Cliente para webhooks externos
│ ├── data/
│ │ ├── flows/ # Directorio con flujos de conversación en JSON
│ │ ├── services.json # Base de conocimiento para ventas
│ │ └── users.db # Base de datos de usuarios
│ └── modules/
│ ├── __init__.py
│ ├── flow_engine.py # Motor que interpreta los flujos JSON
│ ├── calendar.py # Integración con Google Calendar API
│ ├── vikunja.py # Integración con Vikunja API
│ ├── onboarding.py # Lógica para el alta de nuevos usuarios
│ ├── llm_engine.py # (Opcional) Cliente para OpenAI/Gemini
│ └── ... (otros módulos)
└── ...
🗓️ Roadmap
- Implementar Wizard de creación de Tags NFC (Base64).
- Conectar Loop de Impresión (SMTP/IMAP).
- Migrar de OpenAI a Google Gemini 1.5 Pro.
- Implementar soporte para fotos en impresión.
Desarrollado por: Marco G. Asistente Personalizado v1.0