Pular para o conteúdo principal

Widget de chat

O widget coloca o seu agente em qualquer página web com uma linha de HTML — sem backend, sem programação. O visitante conversa numa janela de chat que abre no canto da página, e a conversa continua entre páginas e recarregamentos.

<script src="https://app.lab019.ai/widget/v1/embed.js"
data-widget-key="wgt_SUA_CHAVE" async></script>

Cole o snippet no HTML do seu site (de preferência antes do </body>) e pronto: a bolinha de chat aparece no canto da página.

Quando não usar

Se você quer a conversa dentro da sua interface, com o seu backend no meio, use a API pública — o widget é a interface pronta, hospedada por nós. Para WhatsApp, Telegram ou telefone, use os demais canais.

A chave do widget

Tudo começa com uma chave de widget (wgt_…), criada no painel em Canais → Widget → Nova chave. A chave amarra o snippet a um agente e guarda a configuração de aparência e comportamento.

Dois pontos importantes:

  • O agente precisa ser público. O widget atende visitantes anônimos, sem login — só agentes públicos aparecem na criação da chave, e as regras de segurança de agente público (ferramentas anônimas, limites por visitante) valem aqui.
  • A chave não é um segredo. Ela vai em claro no HTML de qualquer página que a use — é assim mesmo. O que impede outra pessoa de usá-la em outro site são as origens permitidas, abaixo.

Origens permitidas

Cada chave carrega a lista de origens onde o widget pode rodar. Uma origem é o endereço completo do site, com https:// e sem caminho:

https://www.exemplo.com.br
https://loja.exemplo.com.br

Numa página fora da lista o widget até aparece, mas com a aparência genérica (sem a sua cor, título e saudação) e a conversa não conecta: o visitante vê um aviso de falha ao tentar enviar a primeira mensagem. Se o widget carregou "sem a sua cara", o primeiro suspeito são as origens da chave.

Para testes rápidos existe o curinga * (qualquer origem); troque por origens explícitas antes de ir ao ar.

Lista vazia não restringe

Uma chave sem lista de origens aceita qualquer site. No painel, preencha as origens antes de publicar o snippet; ao criar chaves pela API, envie sempre allowed_origins.

O que a chave configura

Na chave (pelo painel) você define o comportamento padrão do widget em todas as páginas: agente, título da janela, cor, saudação, avatar, posição na tela, abertura automática, canais (texto e voz), envio de anexos, transferência para atendimento humano, orçamento diário de créditos e janela de sessão.

Personalizando na página

Qualquer configuração de aparência pode ser sobrescrita por página, com atributos data-* no próprio snippet. O atributo vence a configuração da chave; a chave vence o padrão da plataforma.

<script src="https://app.lab019.ai/widget/v1/embed.js"
data-widget-key="wgt_SUA_CHAVE"
data-title="Ajuda da Loja"
data-color="#e8590c"
data-greeting="Oi! Como posso ajudar?"
async></script>
AtributoEfeitoValores
data-widget-keyA chave do widget — obrigatóriowgt_…
data-titleTítulo do cabeçalho da janelatexto
data-colorCor de destaque#rrggbb
data-greetingPrimeira mensagem exibidatexto
data-avatarImagem do agente no cabeçalhoURL https://…
data-positionCanto da telabottom-right (padrão), bottom-left, top-right, top-left
data-auto-openAbre a janela ao carregar a página"true"
data-hide-launcherEsconde a bolinha — abrir só por JavaScript"true"
data-media-inputEnvio de anexos pelo visitante"false" desliga (ligado por padrão)
data-channelsCanais disponíveis na janelatext (padrão) ou text,voice
data-consent-textTexto de consentimento LGPD exibido quando o agente apresenta um formuláriotexto

Controlando por JavaScript

O widget expõe um controle global window.Lab019Widget para a página abrir a conversa a partir da sua própria interface — um botão "Fale conosco", por exemplo:

<a href="#" onclick="Lab019Widget.open(); return false;">Fale conosco</a>
MétodoO que faz
Lab019Widget.open()Abre a janela de chat
Lab019Widget.close()Fecha a janela
Lab019Widget.toggle()Alterna aberto/fechado
Lab019Widget.destroy()Remove o widget da página
Lab019Widget.versionVersão do widget carregado

Combinado com data-hide-launcher="true", isso permite esconder a bolinha e deixar o chat acessível só pelos seus botões.

Conversa e sessão

A conversa do visitante sobrevive à navegação: ao trocar de página ou recarregar, ele continua na mesma conversa e o agente mantém todo o contexto (desde que no mesmo navegador). A janela reabre limpa — as mensagens anteriores não são reexibidas —, mas nada do que foi dito se perde para o agente. Depois de um período de inatividade — configurável por chave — a próxima visita começa uma conversa nova.

Se a transferência para humano estiver habilitada na chave, o visitante pode ser atendido por uma pessoa na mesma janela, exatamente como descrito em Atendimento humano.

Voz no widget

Com data-channels="text,voice" (ou marcando voz na chave), a janela ganha o botão de chamada de voz — o visitante conversa falando, como descrito em Voz. Requer que o agente da chave tenha voz habilitada.

Controles de custo e abuso

  • Origens permitidas — o widget só roda nos sites que você listou.
  • Orçamento diário de créditos por chave — limita quanto os visitantes podem consumir por dia; estourou, o widget para de responder até o dia seguinte.
  • Limites por visitante do agente público continuam valendo.

Gerenciando chaves por API

Para quem automatiza (por exemplo, criando uma chave por cliente num modelo de revenda), as mesmas operações do painel existem como API, autenticada com o token da sua conta — nunca com a própria chave wgt_…:

https://api.lab019.ai/gateway/v1/widget/keys
MétodoRotaO que faz
POST/keysCria uma chave (agent_id obrigatório; aceita title, color, greeting, avatar, agent_display_name, position, auto_open, channels, voice_modepremium ou economico —, allowed_origins, handoff_enabled, media_input, daily_budget_credits, session_ttl_seconds)
GET/keysLista as chaves da sua organização
GET/keys/{key}Detalha uma chave
PATCH/keys/{key}Altera a configuração (só os campos enviados mudam)
DELETE/keys/{key}Remove a chave — nos sites que a embutem, a conversa deixa de conectar
curl -X POST https://api.lab019.ai/gateway/v1/widget/keys \
-H "Authorization: Bearer $MEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "atendimento",
"title": "Ajuda da Loja",
"allowed_origins": ["https://www.exemplo.com.br"],
"handoff_enabled": true
}'

A resposta traz a chave (key) e a configuração completa. Como a chave não é um segredo, ela aparece em todas as listagens — não há rotação; para trocar, crie uma chave nova, atualize o snippet e remova a antiga.