Bot de WhatsApp de Ayuda Sismo — Venezuela 2026
Un chatbot de WhatsApp ligero, seguro y optimizado para producción, diseñado para coordinar la asistencia humanitaria y la localización de personas tras el terremoto de Venezuela de 2026.
El bot consume directamente las APIs públicas de Localizados Venezuela, SOS Venezuela y AcopioVE en tiempo real, ofreciendo información consolidada de forma instantánea sin requerir bases de datos locales ni almacenamiento de estado sensible en el chat.
Características Clave
-
Búsqueda Dual y Fusión Inteligente (Smart Fusion):
- Al buscar una persona por nombre o cédula, el bot consulta de forma paralela (mediante
Promise.allSettledtolerante a fallos) la API oficial de Localizados Venezuela y la API comunitaria de SOS Venezuela. - Algoritmo de De-duplicación: Unifica las respuestas duplicadas utilizando coincidencia exacta sobre el nombre normalizado (removiendo mayúsculas, acentos y espacios innecesarios).
- Priorización de Estatus: Otorga prioridad absoluta al estado de Localizado (Confirmado) si una persona figura en un centro médico o albergue oficial, enriqueciendo la ficha con reportes comunitarios de búsqueda previa de la red SOS, observaciones clínicas y enlaces de consulta de ambas plataformas.
- Al buscar una persona por nombre o cédula, el bot consulta de forma paralela (mediante
-
Integración de APIs en Tiempo Real:
- Localizados Venezuela: Consulta de personas localizadas en centros de salud y refugios autorizados.
- SOS Venezuela: Registro comunitario de personas desaparecidas o reportadas a salvo por familiares.
- AcopioVE (Refugios y Centros de Donación): Ubica albergues activos y puntos de donación por ciudad, mostrando dirección, estado de ocupación (abierto/lleno) y necesidades inmediatas.
- ResponseGrid (Necesidades de Ayuda): Consulta en tiempo real las solicitudes activas de insumos, recursos y voluntariado validadas por coordinadores de emergencia.
- Directorio de Emergencias: Acceso directo al listado oficial de números de primera respuesta del país.
-
Búsqueda Inteligente y Sin Falsos Positivos:
- Por Cédula de Identidad: Sanitiza la entrada y realiza búsquedas de dígitos exactos sobre la API.
- Por Nombre (Filtrado Estricto de Telegram): Solicita un lote amplio de registros y los filtra localmente en memoria. Exige la coincidencia de todas las palabras clave ingresadas (insensible a acentos/mayúsculas), eliminando coincidencias parciales molestas (por ejemplo, buscar "Carlos Perez" no retornará otros "Carlos" que no sean "Perez").
- Sanitización de Comandos: Ignora preposiciones gramaticales al inicio de los comandos (
refugio en Caracasoacopio de Valenciabuscan directamente por la ciudad"Caracas"o"Valencia").
-
Caché en Memoria Local:
- Implementa un sistema interno de caché por TTL (
Mapnativo de alto rendimiento) para almacenar temporalmente los resultados de las APIs externas:- Directorio de Emergencias: 5 minutos.
- Búsquedas de Refugios: 2 minutos.
- Centros de Acopio: 2 minutos.
- Necesidades de Ayuda (ResponseGrid): 2 minutos.
- Búsquedas de Personas (Búsqueda Dual): 1 minuto.
- Esto acelera los tiempos de respuesta del bot y mitiga completamente el riesgo de bloqueos por Rate Limiting (120 req/min de la API externa) al reutilizar datos de consultas frecuentes de diferentes usuarios.
- Implementa un sistema interno de caché por TTL (
-
Aprovisionamiento Idempotente y Seguro:
- Al iniciar, comprueba si la sesión del bot ya está configurada en la API de FZap.
- Realiza un
GET /webhookpara verificar si la dirección de callback ya existe antes de registrarla, evitando la duplicación de webhooks que causa respuestas duplicadas o triplicadas en los chats.
-
Seguridad contra Condiciones de Carrera:
- Procesa los mensajes entrantes de cada chat secuencialmente mediante una cola de tareas asíncronas (
taskQueue) por JID (ID de usuario de WhatsApp), evitando colisiones cuando un usuario envía ráfagas rápidas de mensajes.
- Procesa los mensajes entrantes de cada chat secuencialmente mediante una cola de tareas asíncronas (
-
Imagen Docker Altamente Optimizada:
- Dockerfile basado en imágenes ligeras Alpine.
- Eliminadas dependencias de compiladores C++ nativos (
make,g++,python3) tras remover librerías pesadas como SQLite local. - El contenedor corre bajo un usuario sin privilegios (
fzap) para garantizar la seguridad del servidor host.
Configuración de Variables de Entorno
Crea un archivo .env en la raíz del proyecto (toma como base .env.example). A continuación se detallan los parámetros necesarios:
| Variable | Descripción | Ejemplo / Valor Recomendado |
|---|---|---|
PORT | Puerto local en el que se ejecuta el servidor del bot. | 3000 |
FZAP_API_URL | URL base de la API de FZap. | http://fzap_api:8080 o http://163.176.47.42:8081 |
FZAP_API_KEY | Token de autorización de administrador de FZap. | tu_fzap_api_key |
FZAP_INSTANCE | Nombre de la instancia de WhatsApp asignada al bot. | bot_instance |
FZAP_WEBHOOK_URL | URL pública o interna del webhook de callback del bot. | http://whatsapp-bot-sismo.local:3000/webhook/messages |
FZAP_WEBHOOK_SECRET | Clave secreta para firmar/validar la autenticidad del webhook (HMAC SHA-256). | tu_secreto_de_webhook |
SITE_URL | URL del portal web oficial de búsqueda de personas localizadas. | https://localizadosvenezuela.com |
Instalación y Despliegue
Paso 1: Configurar el Entorno
- Copia la plantilla de variables:
cp .env.example .env - Completa los valores en el archivo
.envde acuerdo a tu servidor.
Paso 2: Compilar e Iniciar los Contenedores
Inicia el entorno usando Docker Compose:
docker compose -f docker-compose-prod.yml up -d --build
[!IMPORTANT] Si estás redesplegando cambios de código del bot en un servidor que ya tiene la sesión de WhatsApp vinculada en el contenedor
fzap_api, no apagues ni reinicies el cluster completo. Recompila únicamente el contenedor del bot para preservar la conexión de WhatsApp activa:docker compose -f docker-compose-prod.yml up -d --build whatsapp_bot_sismo
Paso 3: Emparejar WhatsApp
- Accede a tu panel de FZap Manager (
http://TU_IP:8081). - Selecciona la instancia del bot (
FZAP_INSTANCE). - Escanea el código QR de emparejamiento desde la aplicación móvil de WhatsApp (Dispositivos vinculados -> Vincular un dispositivo).
Comandos del Bot (Uso en WhatsApp)
El bot procesa dinámicamente los siguientes mensajes enviados por los usuarios:
- Menú de Bienvenida y Ayuda: Al enviar
hola,ayuda,help,/ayuda,/helpo#, se muestra el instructivo del bot. - Búsqueda de Personas: Envía el nombre completo de la persona o su Cédula de Identidad (mínimo 4 números) para buscar registros confirmados en hospitales y refugios de forma unificada en ambas redes de búsqueda (Localizados VE + SOS Venezuela).
- Búsqueda de Refugios: Envía la palabra
refugiosola para ver todos los albergues, o incluye la ciudad (ej:refugio en Caracasorefugio La Guaira) para ver los específicos de una localidad. - Centros de Donación/Acopio: Envía la palabra
acopioodonarseguida de la ciudad (ej:acopio en Valencia) para ubicar centros de recolección de víveres. - Números de Emergencia: Envía la palabra
emergenciaotelefonopara obtener el directorio telefónico de ayuda.
Comments
Build feedback
0 comments
Sign in to leave feedback and vote on comments.
No comments yet. Start the thread with a sharp question or useful suggestion.