Skip to main content

Documentation Index

Fetch the complete documentation index at: https://wiki.vivla.com/llms.txt

Use this file to discover all available pages before exploring further.

Chat

El módulo de Chat es el sistema central de comunicación de Vivla Tools. Permite gestionar conversaciones con huéspedes, administrar canales de soporte, crear tickets y coordinar agentes de atención.

Arquitectura

El sistema se basa en Stream Chat como proveedor de mensajería en tiempo real. El backend actúa como orquestador: gestiona canales, usuarios, permisos y sincronización, mientras que Stream Chat maneja el transporte de mensajes y la presencia.
┌──────────────┐     ┌──────────────┐     ┌──────────────┐
│   Frontend   │────▶│   Backend    │────▶│  Stream Chat │
│  (React SDK) │◀────│  (NestJS)    │◀────│   (SaaS)     │
└──────────────┘     └──────────────┘     └──────────────┘

                     ┌──────▼──────┐
                     │  Supabase   │
                     │  (metadata) │
                     └─────────────┘

Sub-módulos

El módulo de Chat está compuesto por 15 sub-módulos en el backend:
Sub-móduloDescripción
ChannelsCRUD de canales, operaciones batch (agente activo, moderadores, archivado, eliminación), filtros avanzados
MessagesRegistro de mensajes para analytics, consulta de historial por canal
BookingsCreación de canales por reserva, batch create/archive de canales de booking
TicketsSistema de tickets de soporte con prioridad, estado y comentarios
ShiftsProgramación de turnos de agentes de soporte
InvitationsInvitaciones a canales con tokens y deep links
MobileAutenticación y endpoints específicos para vivla-mobile
UsersGestión de usuarios de chat
NotificationsNotificaciones específicas del chat
AnalyticsMétricas de uso: canales, usuarios, mensajes
WebhooksRecepción de eventos de Stream.io, Zendesk e invitaciones
SyncSincronización de datos entre Supabase y Stream Chat
Property AssignmentsMapeo de propiedades a canales
Channel TypesDefinición de tipos de canal (configuración de templates)
IntegrationsIntegraciones con servicios externos

Flujo principal

Creación de canales por booking

  1. Se reciben las reservas (bookings) desde el sistema externo
  2. Un agente o proceso automático crea canales asociados a cada booking
  3. Cada canal se vincula a una propiedad y un tipo de canal
  4. Se asignan agentes (activo y por defecto) y moderadores
  5. El huésped accede al canal desde la app mobile

Gestión de tickets

  1. Un agente selecciona mensajes de una conversación
  2. Crea un ticket con título, prioridad y los mensajes seleccionados
  3. El ticket se puede actualizar, agregar más mensajes y resolver
  4. Filtros por estado, prioridad, propiedad y agente asignado

Webhooks

El sistema recibe eventos externos en:
EndpointOrigenValidación
POST /api/chat/webhooks/streamStream.ioFirma de Stream
POST /api/chat/webhooks/zendeskZendeskHMAC-SHA256
POST /api/chat/webhooks/invitation-acceptedVivlaHMAC-SHA256 (X-Vivla-Signature)
Los webhooks son públicos (sin Bearer token) pero están protegidos por validación de firma criptográfica.