Encantra Care — Autoatendimento (módulo Portal)
Base de conhecimento, central de ajuda pública, portal do cliente, widget de chat com a Lumi e conversas ao vivo.
Código em app/Modules/Portal, tabelas em database/migrations/110_portal.sql.
Para o time (workspace)
| Rota | O que faz |
|---|---|
/app/support/kb |
Artigos e categorias, filtros, lacunas de conteúdo (Lumi) |
/app/support/kb/new, /kb/{id}/edit |
Editor Markdown com pré-visualização ao vivo; Lumi gera rascunhos e revisa textos |
/app/support/kb/insights |
Deflexão, buscas sem resultado, artigos mais/menos úteis |
/app/support/chats |
Fila de conversas (aguardando/minhas/com a Lumi/encerradas), assumir, transferir, virar ticket, sugestão da Lumi |
/app/support/portal-settings |
Título da central, saudação, cor, posição, horário humano, tempo de espera, snippet de instalação |
Publicar um artigo o envia ao índice Knowledge (source_type = kb_article); despublicar ou excluir remove.
Artigos internos ficam fora da central e do chat, mas continuam disponíveis para a Lumi copiloto dos agentes.
Para o cliente final
- Central de ajuda:
https://suporte.inspire4u.com.br/h/{slug}— busca, categorias, artigos com "Este artigo ajudou?", Pergunte à Lumi (RAG com fontes citadas) e Abrir solicitação (vira ticket no canalportal). - Meus chamados:
/h/{slug}/entrar— login sem senha por link mágico (30 min, uso único); lista, detalhe e resposta dos chamados.
Instalando o widget de chat
Cole antes de </body> em todas as páginas do site/produto:
<script src="https://suporte.inspire4u.com.br/widget/SEU-SLUG.js" async></script>
Atributos opcionais: data-color="#6C3BFF", data-position="left", data-greeting="Olá!", data-label="Fale com a gente".
API JavaScript: EncantraChat.open() e EncantraChat.close().
Fluxo da conversa
- A Lumi responde primeiro com base nos artigos públicos (e conteúdo público de conectores), mostrando as fontes.
- O cliente pode marcar Resolveu 👍 (conta como deflexão) ou Falar com um humano (pede nome e e-mail).
- Dentro do horário e com agentes online → fila aguardando e notificação aos agentes. Se ninguém assumir em N minutos (padrão 5), o job
portal.chat_timeoutconverte a conversa em ticket. - Fora do horário → ticket imediato com a transcrição; o cliente é avisado de que a resposta vai por e-mail.
A API do widget (/widget/{slug}/api/*) é autenticada pelo token da conversa (o iframe roda em contexto de terceiro, sem cookies) e tem limite de taxa por IP/conversa.
Integrações com outros módulos
- Support: usa
TicketService::create|addMessage|findOrCreateContact|listForContact|getForContact. - Eventos emitidos:
chat.started,chat.handoff. Ouve:tenant.created(cria 3 categorias e um artigo de boas-vindas). - Hooks:
search(artigos),app.home(painel de autoatendimento),usage.meters(kb_articles),settings.sections. - IA:
portal.answer,portal.chat_suggest,kb.draft,kb.improve,kb.gaps. Sem IA configurada, tudo continua funcionando: a busca mostra os artigos encontrados e oferece abrir solicitação.
Encontrou algo para melhorar? Escreva para master@inspire4u.com.br.