NAiOSOmni Web
omnichat-webv0.1.0Acrescenta um chatbot incorporável (widget de chat) ao NAiOSOmni. Cole um <script> em qualquer site e o visitante conversa com o seu agente; aparece como mais um canal na Caixa de entrada unificada.
Descrição
Plugin acoplado ao NAiOSOmni: regista um driver 'web-widget' no ChannelRegistry para que qualquer site possa incorporar um chatbot. O transporte é long-polling stateless (à prova de Passenger multi-worker): o visitante faz POST da sua mensagem e consulta (poll) as respostas do bot/operador a partir da BD. Tudo o resto (agentes do assistente, tool-loop, captura de leads para o CRM, webhooks, caixa de entrada, dashboards, partilha) é herdado do core sem alterações de esquema. O específico da web (visitor_id, página de origem, user-agent, referrer) fica em media_meta JSON; o aspeto visual, os domínios CORS e o sub-orçamento diário ficam em driver_config.
Funcionalidades (3)
Um <script> no site do cliente e o balão de chat aparece. Zero dependências, Shadow DOM isolado.
O agente do assistente, as tools, a captura de leads para o CRM e a caixa de entrada unificada são herdados tal como estão.
Long-polling stateless + CORS por domínio + rate-limit por IP + sub-orçamento diário de tokens.
Changelog
- MVP (Fases 0-6) — driver 'web-widget' registado no ChannelRegistry do NAiOSOmni
- Emparelhamento por embed: startPairing() devolve o <script> para copiar + página de configuração do widget (branding + domínios 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 as mensagens novas do bot/operador
- Widget incorporável widget.js: vanilla, Shadow DOM, launcher+painel+compositor, persistência em localStorage, branding por canal
- Segurança em 3 camadas: sub-orçamento diário na BD (PRÉ-IA) + rate-limit por IP + allowlist CORS por canal
- Caixa de entrada: badge/ícone 'web', página de origem no thread; handoff básico (estado 'um agente juntar-se-á' + aviso por email ao proprietário)