Go

Servicio: whatsapp-bot

Información General


Propósito de Negocio

Convierte WhatsApp en un canal de interacción con la plataforma BimTrazER. Un usuario de obra puede:

El bot actúa como intermediario entre el protocolo de WhatsApp y la API de BimTrazER, aprovechando un asistente de OpenAI entrenado con el contexto del proyecto.


Endpoints Expuestos

Webhook WhatsApp

Método Path Descripción
POST /whatsapp-bot/webhook Recibir eventos de WhatsApp (mensajes entrantes)

Endpoints para Asistentes IA (POST)

Método Path Descripción
POST /for-assistants/resources-data Obtener datos de recursos para el asistente
POST /for-assistants/get-general-data Obtener datos generales del proyecto
POST /for-assistants/get-certification-history Obtener historial de certificación
POST /for-assistants/certify-blocks Certificar bloques vía asistente
POST /for-assistants/send-photographs Enviar fotografías de avance
POST /for-assistants/logbook-registration Registrar entrada en bitácora

Endpoints para Asistentes IA (GET)

Método Path Descripción
GET /for-assistants/project-info/:projectId Información general del proyecto
GET /for-assistants/priority-data/:projectId Datos de bloques prioritarios
GET /for-assistants/worktables-data/:projectId Datos de worktables
GET /for-assistants/get-blocks/:projectId Lista de bloques del proyecto
GET /for-assistants/get-labels/:projectId Lista de etiquetas del proyecto
GET /for-assistants/get-current-date-time Fecha y hora actuales

Flujo del Webhook

[Usuario] → [WhatsApp] → [Proveedor WhatsApp (wuzapi/whatsmeow)]
                                    │
                                    ▼ POST /whatsapp-bot/webhook
                            [whatsapp-bot]
                                    │
                                    ├── Parsea el mensaje
                                    ├── Identifica al usuario (chatId)
                                    ├── Determina la intención
                                    │
                                    ├── Si es texto → [open-ai / asistente]
                                    │       └── El asistente llama a /for-assistants/*
                                    │
                                    ├── Si es imagen → POST /for-assistants/send-photographs
                                    │       └── Certifica el bloque con la imagen
                                    │
                                    └── Responde al usuario vía WhatsApp

Base de Datos


Variables de Entorno

Variable Descripción
PORT Puerto HTTP
DB_* Credenciales y hosts MongoDB
OPENAI_API_KEY Clave de OpenAI (probable)
WUZAPI_* Credenciales de proveedor WhatsApp

Dependencias (go.mod)

Librería Propósito
gin-gonic/gin Framework HTTP
gin-contrib/cors CORS
go.mongodb.org/mongo-driver MongoDB
tomasen/realip Obtener IP real del cliente (detrás de proxies)

Rol en el Sistema

[WhatsApp Provider (wuzapi/whatsmeow)]
    │ POST /whatsapp-bot/webhook
    ▼
[whatsapp-bot]
    │
    ├── Lee datos → MongoDB directamente
    ├── Llama → [open-ai service] para procesar respuesta del asistente
    ├── Llama → [api-bimtrazer] para certificar bloques
    └── Llama → [media/registry] para almacenar imágenes

Los endpoints /for-assistants/* son consumidos directamente por el asistente de OpenAI como function calls (tool use) durante la conversación con el usuario.


Alertas Técnicas