This commit is contained in:
Lizandro Guarnizo
2026-01-28 03:09:52 -05:00
parent faec66ebf3
commit e96f507a06
12 changed files with 148 additions and 66 deletions
+134 -50
View File
@@ -1,93 +1,177 @@
# WhatsApp Bot Manager 🚀
**WhatsApp Bot Manager** es un panel administrativo para gestionar bots y envíos de WhatsApp. Desarrollado por USite.app, pensado para instalaciones autohospedadas con PHP y MySQL.
<p align="center">
<img src="https://img.shields.io/badge/PHP-8.2+-777BB4?style=for-the-badge&logo=php&logoColor=white" alt="PHP 8.2+">
<img src="https://img.shields.io/badge/MariaDB-10.11-003545?style=for-the-badge&logo=mariadb&logoColor=white" alt="MariaDB">
<img src="https://img.shields.io/badge/Docker-Ready-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="Docker Ready">
<img src="https://img.shields.io/badge/WhatsApp-API-25D366?style=for-the-badge&logo=whatsapp&logoColor=white" alt="WhatsApp API">
</p>
<p align="center">
<strong>Panel administrativo para gestionar bots y envíos de WhatsApp Business</strong>
</p>
<p align="center">
Desarrollado con 💚 por <a href="https://u-site.app"><strong>U-Site.app</strong></a>
</p>
---
## 🔧 Características principales
## 🏢 Sobre U-Site.app
- Gestión de conversaciones y plantillas
- Integración con WhatsApp Business API
- Control de usuarios y seguridad (protección contra fuerza bruta)
- Manejo de archivos multimedia y envíos
- Scripts de instalación y migración incluidos
**U-Site.app** es una casa de desarrollo de software especializada en soluciones empresariales, automatización y aplicaciones web modernas. Creamos herramientas que simplifican procesos y potencian negocios.
🌐 **Website:** [u-site.app](https://u-site.app)
---
## ✅ Requisitos
## ✨ Características
- PHP 8.0+ (extensiones: PDO/MySQL, mbstring, curl, openssl, json)
- MySQL/MariaDB
- Servidor web (Apache/Nginx) o PHP built-in para desarrollo
- 📱 **Gestión de conversaciones** - Interfaz tipo WhatsApp Web
- 📨 **Plantillas de mensajes** - Envíos masivos con templates aprobados
- 🤖 **Bot automatizado** - Respuestas automáticas configurables
- 🔐 **Autenticación segura** - Protección contra fuerza bruta
- 📎 **Multimedia** - Soporte para imágenes, documentos, audio y video
- 🔔 **Notificaciones SSE** - Tiempo real sin polling
- 🐳 **Docker Ready** - Despliegue en contenedores
- 🇨🇴 **Zona horaria Colombia** - Configurado para América/Bogotá
---
## 🛠 Instalación rápida (desarrollo)
## 🛠 Requisitos
1. Clonar el repositorio y entrar en la carpeta:
| Requisito | Versión |
|-----------|---------|
| PHP | 8.0+ |
| MariaDB/MySQL | 10.11+ / 8.0+ |
| Redis | 7.0+ |
| Docker | 24.0+ (opcional) |
**Extensiones PHP requeridas:** PDO, MySQL, mbstring, curl, openssl, json, gd
---
## 🚀 Instalación
### Opción 1: Docker (Recomendado)
```bash
# Clonar repositorio
git clone https://github.com/tu-usuario/whatsapp.git
cd whatsapp
# Desarrollo local
docker-compose -f docker-compose.dev.yml up -d
# Producción
docker-compose -f docker-compose.prod.yml up -d
```
**URLs de acceso (desarrollo):**
- 🌐 App: http://localhost:8080
- 🗄️ phpMyAdmin: http://localhost:8084
### Opción 2: Instalación Manual
1. Clonar y configurar:
```bash
git clone <repo-url> whatsapp
git clone https://github.com/tu-usuario/whatsapp.git
cd whatsapp
cp .env.example .env
```
2. Configurar la base de datos en `config/config.php` o crear un archivo `.env` en la raíz.
2. Editar `.env` con tus credenciales
3. Ejecutar el instalador desde el navegador: `http://tu-servidor/install.php` y seguir los pasos.
4. Para levantar un servidor de desarrollo rápido:
```bash
php -S 127.0.0.1:8000 -t . >/tmp/php-server.log 2>&1 &
# Abre: http://127.0.0.1:8000
```
3. Ejecutar instalador: `http://tu-servidor/install.php`
---
## 🧭 Archivos y scripts útiles
## 📁 Estructura del Proyecto
- `install.php`, `instalar_bd.php` — instalador y creación de tablas
- `create_media_table.sql`, `execute_media_table.php` — tabla de media
- `config/config.php` — configuración principal y carga de `.env`
- `run_tests.php` — pruebas básicas
- `deploy.sh` — script de despliegue (producción)
- `verify_*` y `diagnostico_*` — páginas de diagnóstico y verificación
Consulta `README_SETUP.md`, `INSTALACION.md` y `DEPLOYMENT_GUIDE.md` para documentación extendida.
```
whatsapp/
├── api/ # Endpoints API REST
├── assets/ # CSS, JS, imágenes
├── classes/ # Clases PHP (Database, Services)
├── config/ # Configuración
├── database/ # Scripts SQL y backups
├── docker/ # Configuración Docker (nginx, php, supervisor)
├── services/ # Servicios (WhatsApp, Bot)
├── uploads/ # Archivos subidos
├── Dockerfile # Imagen principal
├── Dockerfile.worker # Imagen para workers
├── docker-compose.dev.yml # Desarrollo
├── docker-compose.prod.yml # Producción
└── deploy-vps.sh # Script de despliegue
```
---
## 🎨 Personalización de UI
## ⚙️ Configuración
- Estilos principales: `assets/css/styles.css`
- Para ajustar el tamaño global de fuente cambia `html { font-size: ... }` o `body { font-size: ... }`
### Variables de Entorno (.env)
```env
# Base de datos
DB_HOST=mysql
DB_PORT=3306
DB_NAME=usite_whatsapp_bot
DB_USER=tu_usuario
DB_PASS=tu_password
# WhatsApp Business API
WHATSAPP_TOKEN=tu_token_aqui
WHATSAPP_PHONE_NUMBER_ID=tu_phone_id
WEBHOOK_VERIFY_TOKEN=tu_webhook_token
# Redis
REDIS_HOST=redis
REDIS_PORT=6379
```
### Webhook de WhatsApp
Configura el webhook en Meta Developer Console:
- **URL:** `https://tu-dominio.com/api/webhook.php`
- **Verify Token:** El mismo que `WEBHOOK_VERIFY_TOKEN`
---
## 🧪 Solución rápida de problemas
## 🐳 Contenedores Docker
- Logs del servidor integrado: `/tmp/php-server.log`
- Verificar tokens y configuración con: `verificar_servidor.php`, `verificar_token.php`, `verificar_whatsapp_config.php`
- Comprobar tablas con: `verify_media_table.php`, `check_table_structure.php`
| Contenedor | Descripción | Puerto |
|------------|-------------|--------|
| `whatsapp-app` | PHP + Nginx | 80, 443 |
| `whatsapp-mysql` | MariaDB 10.11 | 3306 |
| `whatsapp-redis` | Redis 7 | 6379 |
| `whatsapp-worker` | Procesos background | - |
---
## Notas de seguridad: directorios de pruebas
## 📖 Documentación Adicional
Los recursos de pruebas y depuración (scripts `test_*`, `debug_*`, `diagnostico_*`, `tests/`, `scripts/` de prueba, etc.) han sido movidos al directorio `dev/`. **No** expongas `dev/` en entornos de producción. Recomendaciones:
- Mantén `dev/` fuera del documento raíz público o protégelo con HTTP auth/.htaccess.
- Añade `dev/` y `tmp/` a `.gitignore` y rota credenciales que hayan estado en `CREDENCIALES_BASICO.txt`.
- Revisa y elimina cualquier endpoint que active modo `debug` vía parámetros en producción.
- [Guía de Instalación](INSTALACION.md)
- [Guía de Despliegue](DEPLOYMENT_GUIDE.md)
- [Configuración SSE](README_SSE.md)
- [Solución de Problemas](SOLUCION_HOSTING.md)
---
## 📬 Soporte y créditos
## 🔒 Seguridad
Desarrollado por **USite.app** — https://u-site.app
Para soporte, abre un issue o contacta al correo de soporte configurado en la app.
- Los directorios `dev/`, `tests/`, `scripts/` contienen herramientas de desarrollo
- **NO exponer** estos directorios en producción
- Proteger con `.htaccess` o configuración de nginx
- Rotar credenciales regularmente
---
*README corto y enfocado. Revisa los archivos de documentación para guías detalladas.*
## 📄 Licencia
Propietario - © 2026 [U-Site.app](https://u-site.app)
---
<p align="center">
<strong>Desarrollado con 💚 por <a href="https://u-site.app">U-Site.app</a></strong>
</p>
+6 -3
View File
@@ -995,11 +995,9 @@ if (!isset($_SESSION['user_id'])) {
// ESTE LOG DEBE APARECER PRIMERO
console.clear();
console.log('%c═══════════════════════════════════════════', 'color: #25d366; font-weight: bold;');
console.log('%c🚀 WHATSAPP BOT v1.2.0 - CARGANDO...', 'background: #25d366; color: white; padding: 10px 20px; font-size: 18px; font-weight: bold; border-radius: 5px;');
console.log('%c📅 Build: 27 Enero 2026 - 16:45 hrs', 'color: #2575fc; font-weight: bold; font-size: 14px;');
console.log('%c🚀 WHATSAPP BOT v1.2.0 - Desarrollado por U-Site.app', 'background: #25d366; color: white; padding: 10px 20px; font-size: 18px; font-weight: bold; border-radius: 5px;');
console.log('%c═══════════════════════════════════════════', 'color: #25d366; font-weight: bold;');
window.__APP_VERSION__ = '1.2.0';
window.__BUILD_TIME__ = '<?php echo date("Y-m-d H:i:s"); ?>';
</script>
<?php
@@ -5248,5 +5246,10 @@ if (!isset($_SESSION['user_id'])) {
</div>
</div>
<!-- Footer U-Site -->
<footer style="position: fixed; bottom: 0; left: 0; right: 0; background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%); padding: 8px 20px; text-align: center; font-size: 12px; color: rgba(255,255,255,0.7); z-index: 999; border-top: 1px solid rgba(255,255,255,0.1);">
Desarrollado con 💚 por <a href="https://u-site.app" target="_blank" style="color: #25d366; text-decoration: none; font-weight: 600;">U-Site.app</a>
</footer>
</body>
</html>
+1 -8
View File
@@ -2,16 +2,9 @@
/**
* Página principal del sistema WhatsApp Bot
* Fecha: 13 de noviembre de 2025
* Desarrollado por U-Site.app
*/
// Verificar si la instalación está completada
$installationLockFile = '.installation_completed';
if (!file_exists($installationLockFile)) {
header('Location: instalacion.html');
exit();
}
require_once 'config/config.php';
// Verificar autenticación - redirigir al login si no está logueado
View File
+7 -5
View File
@@ -7,11 +7,8 @@
require_once 'config/config.php';
// Verificar si la instalación está completada
if (!isInstallationCompleted()) {
header('Location: install.php');
exit('Sistema no instalado. <a href="install.php">Instalar ahora</a>');
}
// Con Docker, la instalación siempre está completada
// El archivo .installation_completed se crea automáticamente o no es necesario
// Si ya está logueado, redirigir al panel
if (isUserLoggedIn()) {
@@ -320,5 +317,10 @@ if ($_POST && !$loginBlocked) {
});
<?php endif; ?>
</script>
<!-- Footer U-Site -->
<footer style="position: fixed; bottom: 0; left: 0; right: 0; background: transparent; padding: 15px; text-align: center; font-size: 12px; color: rgba(255,255,255,0.6);">
Desarrollado con 💚 por <a href="https://u-site.app" target="_blank" style="color: #25d366; text-decoration: none; font-weight: 600;">U-Site.app</a>
</footer>
</body>
</html>