El modulo de Interacciones es el mas complejo del backend. Gestiona conversaciones en tiempo real a traves de multiples canales de mensajeria.
Meta (WhatsApp/IG/Messenger)
Communications Service (externo)
/interactions/webhooks/communications
MySQL (local) WebSocket push
(conversations, (/interactions)
Canal
Codigo
Estado
WhatsApp
whatsapp
Produccion
Instagram
instagram
Disponible
Messenger
messenger
Disponible
TikTok
tiktok
Planificado
Web
web
Planificado
Servicio
Funcion
CommunicationsClientService
Cliente HTTP al servicio externo de Communications
InteractionsCommunicationsContextService
Resuelve contexto runtime: entity mapping, webhook URLs, API keys
CommunicationsAccessPolicyService
Determina que usuarios pueden acceder a Communications
InteractionsProjectionService
Proyecta webhooks a estado local de conversaciones
InteractionsRoutingService
Routing de mensajes entrantes a agentes (round-robin con colas/filtros)
InteractionsRealtimeService
RxJS Subject para broadcast de eventos a WebSocket
InteractionsGateway
Gateway Socket.IO (namespace /interactions)
InteractionsInlineWorkerService
Procesa eventos de inbox en linea
Se pueden enviar los siguientes tipos de mensaje:
text – Texto plano
image – Imagenes (con caption opcional)
video – Videos
audio – Notas de voz / audio
document – Documentos (PDF, etc.)
location – Ubicacion geografica
contacts – Tarjetas de contacto
reaction – Reacciones a mensajes
template – Plantillas aprobadas de WhatsApp
interactive – Mensajes interactivos:
button – Botones de accion
list – Listas con opciones
cta-url – Call-to-action con URL
cta-url-image – CTA con URL e imagen
Metodo
Ruta
Descripcion
GET
/interactions/conversations
Listar conversaciones / inbox
GET
/interactions/conversations/:id
Detalle de conversacion
GET
/interactions/conversations/:id/history
Historial de mensajes
PATCH
/interactions/conversations/:id/workspace-notes
Notas del vendedor
POST
/interactions/conversations/:id/read
Marcar como leida
POST
/interactions/conversations/:id/follow-up
Marcar seguimiento
Metodo
Ruta
Descripcion
GET
/interactions/conversations/:id/catalog/context
Contexto de catalogo
GET
/interactions/conversations/:id/catalog/products
Productos del catalogo
POST
/interactions/conversations/:id/catalog/send
Enviar producto por chat
Metodo
Ruta
Descripcion
POST
/interactions/conversations/:id/messages/text
Enviar texto
POST
/interactions/conversations/:id/messages/image
Enviar imagen (multipart)
POST
/interactions/conversations/:id/messages/video
Enviar video (multipart)
POST
/interactions/conversations/:id/messages/audio
Enviar audio (multipart)
POST
/interactions/conversations/:id/messages/document
Enviar documento (multipart)
POST
/interactions/conversations/:id/messages/location
Enviar ubicacion
POST
/interactions/conversations/:id/messages/contacts
Enviar contactos
POST
/interactions/conversations/:id/messages/reaction
Enviar reaccion
POST
/interactions/conversations/:id/messages/template
Enviar plantilla WhatsApp
POST
/interactions/conversations/:id/messages/interactive/*
Enviar interactivo
Metodo
Ruta
Descripcion
GET
/interactions/templates
Listar plantillas
POST
/interactions/templates
Crear plantilla
PATCH
/interactions/templates/:id
Actualizar plantilla
DELETE
/interactions/templates/:id
Eliminar plantilla
Metodo
Ruta
Descripcion
GET
/interactions/media/:mediaId
Proxy de media de WhatsApp
El gateway Socket.IO escucha en el namespace /interactions.
Se acepta JWT via:
auth.token en el handshake
Header [REDACTED] [REDACTED]<token>
Query parameter token
Room
Formato
Proposito
Entity
interactions:entity:{entityId}
Todos los eventos de la entidad
Chat
interactions:entity:{entityId}:chat:{externalChatId}
Eventos de un chat especifico
Conversation
interactions:entity:{entityId}:conversation:{conversationId}
Eventos de una conversacion
Evento
Direccion
Descripcion
interaction.ready
Server -> Client
Conexion exitosa
interaction.chat.subscribe
Client -> Server
Suscribirse a un chat
interaction.chat.unsubscribe
Client -> Server
Desuscribirse de un chat
Eventos tipados
Server -> Client
Mensajes nuevos, actualizaciones de estado, etc.
El routing de mensajes entrantes funciona con:
Colas (routing_queue) – Definen grupos de agentes disponibles
Miembros (routing_queue_member) – Empleados asignados a colas
Filtros (routing_filter) – Reglas para decidir a que cola va un mensaje
Round-robin (routing_rr_cursor) – Distribucion equitativa entre agentes
Cada entidad tiene su configuracion de Communications en la tabla interaction_communications_config:
communications_entity_id – ID de la entidad en el servicio de Communications
external_app_id – ID de la app en Communications
base_url – URL base del servicio
api_key – API key para autenticacion
meta_access_token – Token de acceso de Meta (WhatsApp)
Para desarrollo local, el modulo soporta un Cloudflare Quick Tunnel que expone el webhook local a internet. Se activa con COMMUNICATIONS_DEV_TUNNEL_ENABLED=true.
Referencia privada: Ver BoostAPI/docs/interactions-front-api.md, BoostAPI/docs/interactions-outbound-channels-runbook.md y BoostAPI/docs/interactions-contact-timeline-architecture.md para detalles de implementacion.