Este proyecto está diseñado para monitorear el estado de las solicitudes de ICETEX y envía notificaciones a Telegram cuando hay cambios en el estado de una solicitud específica.
El bot se ejecuta dentro de un contenedor Docker y es compatible tanto con sistemas AMD como ARM (Raspberry Pi). Utiliza Puppeteer para el scraping y Telegram Bot API para las notificaciones.
- Monitoreo de Servicios: Monitorea continuamente el estado del servicio de ICETEX.
- Notificaciones por Telegram: Envía actualizaciones en tiempo real sobre el estado del servicio a través de Telegram.
- Dockerizado: Despliega el servicio fácilmente utilizando Docker y Docker Compose.
- TypeScript: El proyecto está escrito en TypeScript, lo que garantiza seguridad de tipos y características modernas de JavaScript.
Antes de comenzar, asegúrate de tener instalado lo siguiente:
- Node.js (v14+)
- Docker
- Docker Compose
- Token de Bot de Telegram
Debes definir las siguientes variables de entorno. Debes crear un archivo .env
basado en el archivo de ejemplo .env.example
:
TELEGRAM_TOKEN=your-telegram-bot-token
Clona el proyecto desde el repositorio de Git:
git clone https://github.com/ivangonzalezg/icetex-status-monitor.git
cd icetex-status-monitor
Crea un archivo .env
en la raíz del proyecto basado en el archivo .env.example
:
cp .env.example .env
Rellena las variables en el archivo .env
con tus propios valores (como tu token de Telegram, etc.).
Asegúrate de tener el archivo service-account.json de Firebase, el cual contiene las credenciales necesarias para conectarse a Firestore. Colócalo en el directorio raíz del proyecto.
-
Construir la imagen Docker:
docker-compose build
-
Ejecutar el contenedor:
docker-compose up -d
Esto levantará el servicio y el bot comenzará a verificar el estado de la solicitud en intervalos definidos en el código.
Puedes verificar los logs para ver la salida del bot y asegurarte de que está funcionando correctamente:
docker logs -f icetex-status-monitor
Si deseas detener el bot, puedes hacerlo con el siguiente comando:
docker-compose down
Si no quieres construir la imagen localmente, puedes utilizar la imagen ya construida:
-
Crea un archivo
docker-compose.yml
con el siguiente contenido:services: icetex-status-monitor: container_name: icetex-status-monitor image: ivangonzalezg/icetex-status-monitor:latest env_file: - .env volumes: - ./service-account.json:/usr/src/app/service-account.json:ro
-
Ejecuta el siguiente comando para iniciar el contenedor:
docker-compose up -d
icetex-status-monitor/
├── Dockerfile
├── docker-compose.yml
├── .env.example
├── package.json
├── tsconfig.json
├── src/
│ ├── constants/
│ ├── database/
│ ├── services/
│ ├── icetex/
│ └── telegram/
└── index.ts
Si encuentras un error relacionado con que Puppeteer no puede encontrar un navegador, asegúrate de que has instalado todas las dependencias necesarias para Chromium o que has configurado Puppeteer para usar el navegador del sistema.
Si deseas contribuir a este proyecto, siéntete libre de abrir issues o pull requests en el repositorio.
- Haz un fork del repositorio.
- Crea una nueva rama (
git checkout -b nombre-de-la-funcionalidad
). - Realiza tus cambios y haz commit (
git commit -am 'Añadir nueva funcionalidad'
). - Haz push a la rama (
git push origin nombre-de-la-funcionalidad
). - Crea un nuevo Pull Request.
Este proyecto está licenciado bajo la MIT License.