NAiOSOmni Web
omnichat-webv0.1.0Engade un chatbot incrustable (widget de chat) a NAiOSOmni. Pega un <script> en calquera web e o visitante conversa co teu axente; aparece como un canal máis no Inbox unificado.
Descrición
Plugin acoplado a NAiOSOmni: rexistra un driver 'web-widget' no ChannelRegistry para que calquera web poida incrustar un chatbot. O transporte é long-polling stateless (a proba de Passenger multi-worker): o visitante fai POST da súa mensaxe e fai polling das respostas do bot/operador desde a BD. Todo o demais (axentes do wizard, tool-loop, captura de leads ao CRM, webhooks, inbox, dashboards, sharing) herdase do core sen cambios de esquema. O específico da web (visitor_id, páxina de orixe, user-agent, referrer) vai en media_meta JSON; o look&feel, os dominios CORS e o subpresuposto diario van en driver_config.
Funcionalidades (3)
Un <script> na web do cliente e a burbulla de chat aparece. Cero dependencias, Shadow DOM illado.
O axente do wizard, as tools, a captura de leads ao CRM e o inbox unificado herdanse tal cal.
Long-polling stateless + CORS por dominio + rate-limit por IP + subpresuposto diario de tokens.
Changelog
- MVP (Fases 0-6) — driver 'web-widget' rexistrado no ChannelRegistry de NAiOSOmni
- Emparellamento por embed: startPairing() devolve o <script> copiable + páxina de configuración do widget (branding + dominios CORS)
- Transporte inbound público: POST /p/omnichat-web/:channelId/message normaliza e emite omnichat.message.received
- Transporte outbound long-polling: sendMessage() persiste na BD; GET /poll devolve mensaxes novas do bot/operador
- Widget incrustable widget.js: vanilla, Shadow DOM, launcher+panel+composer, persistencia en localStorage, branding por canal
- Seguranza en 3 capas: subpresuposto diario na BD (PRE-IA) + rate-limit por IP + CORS allowlist por canal
- Inbox: badge/icona 'web', páxina de orixe no thread; handoff básico (estado 'un axente unirase á conversa' + aviso por email ao owner)