Integración WhatsApp API con MySQL
Budget: $30 – $250 USD
### Objetivo
Desarrollar un sistema automatizado que consulte una base de datos MySQL (tabla `clientes`) y envíe mensajes por WhatsApp según el estado de vencimiento del servicio de cada cliente.
El sistema deberá enviar recordatorios y avisos de vencimiento de forma programada, así como responder automáticamente cuando el cliente envíe una foto del comprobante de pago.
---
### Requerimientos técnicos
* Lenguaje preferido: **PHP (7.4 o superior, no orientado a objetos)** o **Node.js** (se aceptan propuestas con justificación técnica).
* Base de datos: **MySQL**.
* Integración con **API de WhatsApp** (puede ser Twilio, Chat-API, UltraMsg, 360Dialog u otra API oficial o no oficial).
* Se valorará que el código sea **modular, documentado y parametrizable** (para modificar fechas o mensajes sin editar código).
---
### Estructura de datos (tabla `clientes`)
Campos mínimos necesarios:
* `id` (INT, PK)
* `nombre` (VARCHAR)
* `celular` (VARCHAR)
* `vencimiento` (DATE)
* `estado` (ENUM: activo, vencido, suspendido, temporal)
* `ultimo_mensaje` (DATE opcional)
* Otros campos relevantes (opcional)
---
### Lógica del envío de mensajes
1. **Consulta a la base de datos**
El sistema debe verificar diariamente los clientes con estado **vencido** según la fecha de vencimiento (`vencimiento < CURDATE()`).
2. **Fechas de envío programadas (parametrizables):**
* **Día 1 y 4 de cada mes:** Enviar mensaje recordando que su servicio está vencido.
* **Día 10:** Enviar aviso solo a los que siguen vencidos.
* **Día 20:** Enviar mensaje final indicando que el servicio será eliminado.
*(Las fechas y textos deben poder modificarse desde un archivo de configuración o tabla de parámetros.)*
3. **Mensajes automáticos:**
* Al detectar que un cliente envía una **foto del comprobante de transferencia**, el sistema debe:
* Enviar mensaje de confirmación: “Su servicio fue habilitado de forma temporal hasta que se verifique el pago.”
* Cambiar automáticamente su estado a **temporal**.
* Una vez verificado el pago (manualmente o mediante un proceso automático), el sistema debe:
* Extender el campo `vencimiento` **+1 mes** desde la fecha actual.
* Cambiar el estado a **activo**.
* Enviar mensaje confirmando la reactivación del servicio.
---
### Funcionalidades adicionales (opcional)
* Log o registro de mensajes enviados (tabla `mensajes_log` con fecha, número, estado de envío, etc.).
* Panel básico o script PHP para probar el envío manualmente a un cliente.
* Configuración centralizada de textos de los mensajes (por ejemplo, en JSON o en una tabla `mensajes`).
---
### Entregables
* Código fuente completo.
* Script SQL con estructura de tablas.
* Archivo de configuración (parametrización de fechas, textos, API keys).
* Instrucciones para instalación y uso (README).
* Ejemplo de cron o scheduler para ejecución automática.
---
### Ejemplo de flujo
1. Día 1 → cliente vencido recibe mensaje de aviso.
2. Día 10 → si sigue vencido, nuevo mensaje de advertencia.
3. Día 20 → mensaje final indicando suspensión.
4. Cliente envía comprobante → se habilita temporalmente.
5. Verificado el pago → se renueva vencimiento +30 días.
Desarrollar un sistema automatizado que consulte una base de datos MySQL (tabla `clientes`) y envíe mensajes por WhatsApp según el estado de vencimiento del servicio de cada cliente.
El sistema deberá enviar recordatorios y avisos de vencimiento de forma programada, así como responder automáticamente cuando el cliente envíe una foto del comprobante de pago.
---
### Requerimientos técnicos
* Lenguaje preferido: **PHP (7.4 o superior, no orientado a objetos)** o **Node.js** (se aceptan propuestas con justificación técnica).
* Base de datos: **MySQL**.
* Integración con **API de WhatsApp** (puede ser Twilio, Chat-API, UltraMsg, 360Dialog u otra API oficial o no oficial).
* Se valorará que el código sea **modular, documentado y parametrizable** (para modificar fechas o mensajes sin editar código).
---
### Estructura de datos (tabla `clientes`)
Campos mínimos necesarios:
* `id` (INT, PK)
* `nombre` (VARCHAR)
* `celular` (VARCHAR)
* `vencimiento` (DATE)
* `estado` (ENUM: activo, vencido, suspendido, temporal)
* `ultimo_mensaje` (DATE opcional)
* Otros campos relevantes (opcional)
---
### Lógica del envío de mensajes
1. **Consulta a la base de datos**
El sistema debe verificar diariamente los clientes con estado **vencido** según la fecha de vencimiento (`vencimiento < CURDATE()`).
2. **Fechas de envío programadas (parametrizables):**
* **Día 1 y 4 de cada mes:** Enviar mensaje recordando que su servicio está vencido.
* **Día 10:** Enviar aviso solo a los que siguen vencidos.
* **Día 20:** Enviar mensaje final indicando que el servicio será eliminado.
*(Las fechas y textos deben poder modificarse desde un archivo de configuración o tabla de parámetros.)*
3. **Mensajes automáticos:**
* Al detectar que un cliente envía una **foto del comprobante de transferencia**, el sistema debe:
* Enviar mensaje de confirmación: “Su servicio fue habilitado de forma temporal hasta que se verifique el pago.”
* Cambiar automáticamente su estado a **temporal**.
* Una vez verificado el pago (manualmente o mediante un proceso automático), el sistema debe:
* Extender el campo `vencimiento` **+1 mes** desde la fecha actual.
* Cambiar el estado a **activo**.
* Enviar mensaje confirmando la reactivación del servicio.
---
### Funcionalidades adicionales (opcional)
* Log o registro de mensajes enviados (tabla `mensajes_log` con fecha, número, estado de envío, etc.).
* Panel básico o script PHP para probar el envío manualmente a un cliente.
* Configuración centralizada de textos de los mensajes (por ejemplo, en JSON o en una tabla `mensajes`).
---
### Entregables
* Código fuente completo.
* Script SQL con estructura de tablas.
* Archivo de configuración (parametrización de fechas, textos, API keys).
* Instrucciones para instalación y uso (README).
* Ejemplo de cron o scheduler para ejecución automática.
---
### Ejemplo de flujo
1. Día 1 → cliente vencido recibe mensaje de aviso.
2. Día 10 → si sigue vencido, nuevo mensaje de advertencia.
3. Día 20 → mensaje final indicando suspensión.
4. Cliente envía comprobante → se habilita temporalmente.
5. Verificado el pago → se renueva vencimiento +30 días.
Related categories:
PHP
JavaScript
MySQL
Node.js
Software Development
API
Documentation
Twilio
Automation
Database Management