Bot automatizado de WhatsApp que recibe notificaciones de Jira Service Desk y las envía a grupos de WhatsApp. Optimizada para despliegue en la nube (Zeabur/Docker).
- ✅ Pairing Code: Vinculación sin necesidad de escanear QR (ideal para servidores remotos).
- ✅ Dynamic Grouping: Configuración de grupo de destino mediante el comando
/group. - ✅ Session Management: Mecanismo de reset forzado para solucionar bloqueos de inicio de sesión.
- ✅ Dockerized: Listo para desplegar en cualquier plataforma con soporte Docker.
- ✅ Formato profesional: Mensajes claros con información relevante del ticket de Jira.
pip install -r requirements.txtCopia el archivo .env.example a .env y configura tus credenciales:
cp .env.example .envVariables principales:
WHATSAPP_PHONE: Tu número de teléfono (con código de país, ej:519XXXXXXXX).WHATSAPP_GROUP_JID: (Opcional) JID inicial del grupo.WEBHOOK_SECRET: Secreto para validar peticiones de Jira.WHATSAPP_RESET_SESSION: Establecer atruesi el login se queda pegado.
En lugar de QR, este bot usa un Código de Emparejamiento de 8 dígitos:
- Inicia el bot (
python main.py). - En los logs/consola verás un mensaje:
📲 Solicitando Pairing Code para el número: .... - Un código de 8 caracteres aparecerá (ej:
ABC1-DEF2). - En tu celular (WhatsApp → Dispositivos vinculados → Vincular dispositivo → Vincular con el número de teléfono), ingresa el código.
python main.pyUna vez que el bot esté conectado:
- Añade el bot a un grupo de WhatsApp.
- Dentro del grupo, escribe el comando: /group.
- El bot confirmará que ese chat recibirá las notificaciones de Jira.
Este proyecto está optimizado para Zeabur:
- El
Dockerfileexpone el puerto5000. - Se usa
main.pypara manejar dinámicamente el puerto asignado por la plataforma. - Asegúrate de configurar las variables de entorno en el panel de Zeabur.
- Usa los Runtime Logs para obtener el Pairing Code en el primer inicio.
whatsapp-message/
├── main.py # Punto de entrada principal (Bootstrap)
├── bot_whatsapp.py # Lógica del cliente WhatsApp (Neonize)
├── webhook_server.py # Servidor Flask para Webhooks de Jira
├── Dockerfile # Configuración para despliegue en contenedores
├── Procfile # Configuración para despliegue en PaaS
├── requirements.txt # Dependencias del proyecto
└── active_group.jid # Archivo persistente con el ID del grupo actual
Esto ocurre por un archivo de sesión corrupto ("Zombie file").
- Establece
WHATSAPP_RESET_SESSION=trueen tus variables de entorno. - Reinicia el servicio. El archivo de sesión se borrará automáticamente.
- Vincula de nuevo con el nuevo código generado.
- Cambia
WHATSAPP_RESET_SESSIONafalse.
Es normal al inicio de una sesión o al entrar a un grupo nuevo. Envía un mensaje nuevo al grupo desde otro teléfono para forzar el intercambio de llaves.
Basado en la librería neonize.