NAiOSOmni Web
omnichat-webv0.1.0Añade un chatbot embebible (widget de chat) a NAiOSOmni. Pega un <script> en cualquier web y el visitante conversa con tu agente; aparece como un canal más en el Inbox unificado.
Descripción
Plugin acoplado a NAiOSOmni: registra un driver 'web-widget' en el ChannelRegistry para que cualquier web pueda incrustar un chatbot. El transporte es long-polling stateless (a prueba de Passenger multi-worker): el visitante hace POST de su mensaje y pollea las respuestas del bot/operador desde la BD. Todo lo demás (agentes del wizard, tool-loop, captura de leads al CRM, webhooks, inbox, dashboards, sharing) se hereda del core sin cambios de esquema. Lo específico de web (visitor_id, página de origen, user-agent, referrer) va en media_meta JSON; el look&feel, los dominios CORS y el sub-presupuesto diario van en driver_config.
Funcionalidades (3)
Un <script> en la web del cliente y la burbuja de chat aparece. Cero dependencias, Shadow DOM aislado.
El agente del wizard, las tools, la captura de leads al CRM y el inbox unificado se heredan tal cual.
Long-polling stateless + CORS por dominio + rate-limit por IP + sub-presupuesto diario de tokens.
Changelog
- MVP (Fases 0-6) — driver 'web-widget' registrado en el ChannelRegistry de NAiOSOmni
- Pairing por embed: startPairing() devuelve el <script> copiable + página de configuración del widget (branding + dominios CORS)
- Transporte inbound público: POST /p/omnichat-web/:channelId/message normaliza y emite omnichat.message.received
- Transporte outbound long-polling: sendMessage() persiste en BD; GET /poll devuelve mensajes nuevos del bot/operador
- Widget embebible widget.js: vanilla, Shadow DOM, launcher+panel+composer, persistencia localStorage, branding per-canal
- Seguridad 3 capas: sub-presupuesto diario en BD (PRE-IA) + rate-limit por IP + CORS allowlist por canal
- Inbox: badge/icono 'web', página de origen en el thread; handoff básico (estado 'un agente se unirá' + aviso email al owner)