Widget no seu app
Coloque o atendente da Nevox dentro do seu site, app ou área do cliente, com o usuário já identificado.
O widget é o jeito mais rápido de colocar o atendente na sua interface. Ele usa o mesmo agente e o mesmo conhecimento dos outros canais.
Visitante anônimo (site público)
Cole antes de </body>:
<script
src="https://nevox.ai/widget.js"
data-key="nvx_pk_live_..."
data-agent="agt_8f2k1x"
async
></script>Usuário logado (app, área do cliente, admin)
- O seu servidor gera um token de sessão para o usuário logado.
- O front passa esse token ao widget.
<script
src="https://nevox.ai/widget.js"
data-key="nvx_pk_live_..."
data-agent="agt_8f2k1x"
data-session-token="nvx_st_9c1e..."
async
></script>Com o token, o agente:
- cumprimenta pelo nome e responde no idioma do contato;
- continua a mesma conversa desse contato no widget, em qualquer aparelho;
- pode chamar ações com o
external_iddele (ex.: buscar as próximas consultas).
O token vale 1 hora. Quando vencer, o widget avisa pelo evento session_expired: gere outro no seu servidor e chame Nevox.setSessionToken.
Em apps React, Next.js ou Capacitor
"use client";
import { useEffect } from "react";
export function AtendimentoNevox({ sessionToken }: { sessionToken: string }) {
useEffect(() => {
const s = document.createElement("script");
s.src = "https://nevox.ai/widget.js";
s.async = true;
s.dataset.key = process.env.NEXT_PUBLIC_NEVOX_KEY!;
s.dataset.agent = "agt_8f2k1x";
s.dataset.sessionToken = sessionToken;
document.body.appendChild(s);
return () => {
window.Nevox?.destroy();
s.remove();
};
}, [sessionToken]);
return null;
}Em apps com Capacitor ou WebView, o widget funciona do mesmo jeito dentro da WebView.
Opções
| Atributo | Padrão | Descrição |
|---|---|---|
data-key | — | Chave pública. Obrigatório. |
data-agent | — | ID do agente. Obrigatório. |
data-session-token | — | Token de sessão do usuário logado |
data-mode | bubble | bubble (botão flutuante) ou inline (dentro de um elemento) |
data-target | — | Seletor CSS do elemento, quando data-mode="inline" |
data-language | do contato ou da conta | pt-BR ou en-US (es em breve) |
data-position | right | right ou left |
data-open | false | Abre o chat assim que a página carrega |
data-track | true | Ativa o rastreamento de visitantes |
data-consent | auto | auto, required ou granted. Veja consentimento. |
data-widget | true | false mede as visitas sem mostrar o chat |
Cores, nome e logo são os do chat do site, configurados no painel (Canais → Chat no site) e aplicados automaticamente. A chave pública e os domínios permitidos ficam em Painel → Desenvolvedores → Widget no seu app, com o código pronto para colar.
Sem data-session-token, a conversa é de um visitante anônimo (uma por navegador), com um limite de mensagens por dia contra abuso. As conversas do widget aparecem em Conversas no painel e contam na franquia de conversas do plano.
API JavaScript
Depois que o script carrega, o objeto window.Nevox fica disponível:
Nevox.open(); // abre o chat
Nevox.close(); // fecha o chat
Nevox.send("Quero remarcar"); // envia uma mensagem como o usuário
Nevox.setSessionToken("nvx_st_..."); // troca o token (ex.: depois de renovar)
Nevox.identify("paciente_1042", { name: "Maria Souza" }); // liga o visitante a um contato
Nevox.track("plano_visualizado", { plano: "familia" }); // evento personalizado
Nevox.consent("granted"); // registra o consentimento de rastreamento
Nevox.destroy(); // remove o widget da página
Nevox.on("ready", () => {});
Nevox.on("open", () => {});
Nevox.on("message", (msg) => {}); // { role, content }
Nevox.on("handoff", () => {}); // a conversa passou para a sua equipe
Nevox.on("session_expired", async () => {
const { token } = await fetch("/api/nevox-token").then((r) => r.json());
Nevox.setSessionToken(token);
});Nevox.identify no front serve só para ligar o visitante a um contato na análise. Ele não dá acesso ao histórico do contato. Para o agente ver dados do usuário, use sempre o token de sessão gerado no servidor.Quando usar o widget e quando usar a API de conversas
| Use o widget quando | Use a API de conversas quando |
|---|---|
| Você quer o chat pronto, com a aparência configurada no painel | Você quer a interface 100% sua |
| Precisa colocar no ar rápido | O chat faz parte de uma tela maior do seu sistema |
| O usuário conversa direto com o agente | Seu servidor intermedia as mensagens |