Comunicação via PostMessage

A funcionalidade de comunicação via PostMessage permite que aplicações web enviem comandos JavaScript para alterar dinamicamente o tema do widget EvaGPT e enviar informações contextuais às conversas.

Configuração Inicial

Para habilitar a comunicação via PostMessage:

  1. Acesse Listar Agentes no painel principal

  2. Selecione o agente desejado

  3. Navegue até Widget nas configurações

  4. Localize "Domínios autorizados para comunicação via postMessage"

  5. Adicione os domínios autorizados (um por linha)

⚠️ Importante: Por segurança, apenas domínios listados poderão comunicar com o widget.


Funcionalidades

1. Controle de Tema

Alterne entre temas dark e light. O tema é persistido no sessionStorage.

iframe.contentWindow.postMessage({type: "dark"}, origin);
iframe.contentWindow.postMessage({type: "light"}, origin);

2. Metadados (META)

Envie metadados que serão disponibilizados para habilidades e integrações (chamadas de API, autenticação, etc).

Características dos Metadados

  • Invisíveis para a IA: O LLM não tem acesso aos metadados

  • Uso em Habilidades: Disponíveis para integrações, APIs e validações

  • Persistência: Salvos no sessionStorage e mantidos entre conversas

  • Segurança: Ideal para tokens, IDs e credenciais de integração

Comportamento

  • Metadados permanecem entre conversas automaticamente

  • Ao iniciar nova conversa, dados do sessionStorage são reutilizados

  • Para remover metadados, use o comando logout

  • Enviar novos metadados substitui os anteriores completamente

Casos de uso:

  • Tokens de autenticação para APIs

  • IDs de usuário para integrações

  • Chaves de acesso para serviços externos

  • Dados de sessão para validações


3. Contexto para o LLM

Envie informações que serão visíveis para a IA e incluídas no contexto da conversa.

⚠️ Regra Importante sobre type

Apenas estes valores de type são comandos especiais:

  • type: "dark" - Comando de tema

  • type: "light" - Comando de tema

  • type: "meta" - Comando de metadados

  • type: "logout" - Comando de limpeza

Qualquer outro valor (ou ausência de type) entra no contexto da IA:

Quando usar Contexto vs Metadados

Contexto
Metadados (type: "meta")

✅ IA a informação

❌ IA não vê

Informações para guiar a conversa

Dados para integrações/APIs

Comportamento do usuário

Tokens, IDs, credenciais

Estado da aplicação

Chaves de acesso

Qualquer type exceto os 4 especiais

Apenas type: "meta"

Exemplo prático:


4. Logout (Limpeza de Metadados)

Limpa metadados do sessionStorage e inicia uma nova conversa.

Quando usar Logout

  • Trocar de usuário/conta

  • Remover credenciais e tokens antigos

  • Garantir que nova conversa não reutilize metadados

⚠️ Importante: Nova conversa não remove metadados automaticamente. Use logout para limpá-los.


Exemplo Completo


Resumo de Comandos

Comando
Sintaxe
IA Vê?
Uso

Tema Escuro

{type: "dark"}

Interface

Tema Claro

{type: "light"}

Interface

Metadados

{type: "meta", ...}

Habilidades/APIs

Logout

{type: "logout"}

Limpar metadados

Contexto

Sem type ou type diferente dos acima

Conversa com IA


Fluxo de Dados


Boas Práticas

Faça:

  • Use type: "meta" exclusivamente para tokens, IDs e dados de integração

  • Use mensagens sem type ou com type personalizado para contexto da IA

  • Envie logout ao trocar de usuário para limpar metadados

  • Aguarde carregamento do iframe antes de enviar comandos

Evite:

  • Usar type: "meta" para dados que a IA deve ver

  • Enviar credenciais em contexto (use sempre type: "meta")

  • Assumir que nova conversa limpa metadados

  • Usar type: "dark", type: "light", type: "meta" ou type: "logout" para outros fins


Exemplo: E-commerce

Neste exemplo:

  • A IA pode dizer "Vejo que você tem 3 itens no carrinho"

  • A IA não tem acesso ao apiKey (usado pela habilidade para API)

  • A IA vê o type: "evento_compra" pois não é um comando especial

Last updated