Google Chat (API do Chat)
Status: pronto para DMs + espaços via webhooks da API do Google Chat (somente HTTP).Configuração rápida (iniciante)
- Crie um projeto no Google Cloud e ative a Google Chat API.
- Acesse: Credenciais da Google Chat API
- Ative a API se ela ainda não estiver ativada.
- Crie uma Service Account:
- Pressione Create Credentials > Service Account.
- Dê o nome que quiser (por exemplo,
openclaw-chat). - Deixe as permissões em branco (pressione Continue).
- Deixe os principais com acesso em branco (pressione Done).
- Crie e baixe a JSON Key:
- Na lista de contas de serviço, clique na que você acabou de criar.
- Vá até a aba Keys.
- Clique em Add Key > Create new key.
- Selecione JSON e pressione Create.
- Armazene o arquivo JSON baixado no seu host do gateway (por exemplo,
~/.openclaw/googlechat-service-account.json). - Crie um app do Google Chat na Configuração do Chat no Google Cloud Console:
- Preencha as Application info:
- App name: (por exemplo,
OpenClaw) - Avatar URL: (por exemplo,
https://openclaw.ai/logo.png) - Description: (por exemplo,
Assistente pessoal de IA)
- App name: (por exemplo,
- Ative Interactive features.
- Em Functionality, marque Join spaces and group conversations.
- Em Connection settings, selecione HTTP endpoint URL.
- Em Triggers, selecione Use a common HTTP endpoint URL for all triggers e defina-o como a URL pública do seu gateway seguida de
/googlechat.- Dica: execute
openclaw statuspara encontrar a URL pública do seu gateway.
- Dica: execute
- Em Visibility, marque Make this Chat app available to specific people and groups in <Your Domain>.
- Digite seu endereço de email (por exemplo,
user@example.com) na caixa de texto. - Clique em Save na parte inferior.
- Preencha as Application info:
- Ative o status do app:
- Após salvar, atualize a página.
- Procure a seção App status (geralmente perto do topo ou da parte inferior após salvar).
- Altere o status para Live - available to users.
- Clique em Save novamente.
- Configure o OpenClaw com o caminho da conta de serviço + audiência do webhook:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - Ou config:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Env:
- Defina o tipo + valor da audiência do webhook (corresponde à configuração do seu app do Chat).
- Inicie o gateway. O Google Chat enviará requisições POST para o caminho do seu webhook.
Adicionar ao Google Chat
Quando o gateway estiver em execução e seu email tiver sido adicionado à lista de visibilidade:- Acesse Google Chat.
- Clique no ícone + (mais) ao lado de Direct Messages.
- Na barra de pesquisa (onde você normalmente adiciona pessoas), digite o App name que você configurou no Google Cloud Console.
- Observação: o bot não aparecerá na lista de navegação do “Marketplace” porque é um app privado. Você precisa procurá-lo pelo nome.
- Selecione seu bot nos resultados.
- Clique em Add ou Chat para iniciar uma conversa 1:1.
- Envie “Hello” para acionar o assistente!
URL pública (somente webhook)
Os webhooks do Google Chat exigem um endpoint HTTPS público. Por segurança, exponha somente o caminho/googlechat à internet. Mantenha o painel do OpenClaw e outros endpoints sensíveis na sua rede privada.
Opção A: Tailscale Funnel (recomendado)
Use o Tailscale Serve para o painel privado e o Funnel para o caminho público do webhook. Isso mantém/ privado enquanto expõe apenas /googlechat.
-
Verifique em qual endereço seu gateway está vinculado:
Observe o endereço IP (por exemplo,
127.0.0.1,0.0.0.0ou seu IP Tailscale como100.x.x.x). -
Exponha o painel apenas para a tailnet (porta 8443):
-
Exponha publicamente apenas o caminho do webhook:
- Autorize o nó para acesso ao Funnel: Se solicitado, visite a URL de autorização mostrada na saída para ativar o Funnel para este nó na política da sua tailnet.
-
Verifique a configuração:
https://<node-name>.<tailnet>.ts.net/googlechat
Seu painel privado permanece somente na tailnet:
https://<node-name>.<tailnet>.ts.net:8443/
Use a URL pública (sem :8443) na configuração do app do Google Chat.
Observação: essa configuração persiste após reinicializações. Para removê-la depois, executetailscale funnel resetetailscale serve reset.
Opção B: Proxy reverso (Caddy)
Se você usar um proxy reverso como o Caddy, encaminhe apenas o caminho específico:your-domain.com/ será ignorada ou retornará 404, enquanto your-domain.com/googlechat será roteado com segurança para o OpenClaw.
Opção C: Cloudflare Tunnel
Configure as regras de ingress do seu túnel para rotear apenas o caminho do webhook:- Path:
/googlechat->http://localhost:18789/googlechat - Default Rule: HTTP 404 (Not Found)
Como funciona
- O Google Chat envia requisições POST do webhook para o gateway. Cada solicitação inclui um cabeçalho
Authorization: Bearer <token>.- O OpenClaw verifica a autenticação bearer antes de ler/analisar corpos completos de webhook quando o cabeçalho está presente.
- Solicitações do Google Workspace Add-on que carregam
authorizationEventObject.systemIdTokenno corpo são compatíveis por meio de um orçamento de corpo pré-autenticação mais rígido.
- O OpenClaw verifica o token em relação ao
audienceType+audienceconfigurados:audienceType: "app-url"→ a audiência é sua URL HTTPS do webhook.audienceType: "project-number"→ a audiência é o número do projeto no Cloud.
- As mensagens são roteadas por espaço:
- DMs usam a chave de sessão
agent:<agentId>:googlechat:direct:<spaceId>. - Espaços usam a chave de sessão
agent:<agentId>:googlechat:group:<spaceId>.
- DMs usam a chave de sessão
- O acesso a DMs usa pairing por padrão. Remetentes desconhecidos recebem um código de pairing; aprove com:
openclaw pairing approve googlechat <code>
- Espaços em grupo exigem @menção por padrão. Use
botUserse a detecção de menção precisar do nome de usuário do app.
Destinos
Use estes identificadores para entrega e listas de permissões:- Mensagens diretas:
users/<userId>(recomendado). - O email bruto
name@example.comé mutável e só é usado para correspondência direta em lista de permissões quandochannels.googlechat.dangerouslyAllowNameMatching: true. - Obsoleto:
users/<email>é tratado como um id de usuário, não como uma lista de permissões por email. - Espaços:
spaces/<spaceId>.
Destaques de configuração
- As credenciais da conta de serviço também podem ser passadas inline com
serviceAccount(string JSON). serviceAccountReftambém é compatível (SecretRef de env/arquivo), incluindo refs por conta emchannels.googlechat.accounts.<id>.serviceAccountRef.- O caminho padrão do webhook é
/googlechatsewebhookPathnão estiver definido. dangerouslyAllowNameMatchingreativa a correspondência de principal por email mutável para listas de permissões (modo de compatibilidade break-glass).- Reações estão disponíveis via a ferramenta
reactionsechannels actionquandoactions.reactionsestá ativado. - As ações de mensagem expõem
sendpara texto eupload-filepara envios explícitos de anexos.upload-fileaceitamedia/filePath/pathmaismessage,filenamee direcionamento de thread opcionais. typingIndicatoroferece suporte anone,message(padrão) ereaction(reaction requer OAuth do usuário).- Os anexos são baixados pela API do Chat e armazenados no pipeline de mídia (tamanho limitado por
mediaMaxMb).
Solução de problemas
405 Method Not Allowed
Se o Google Cloud Logs Explorer mostrar erros como:-
Canal não configurado: a seção
channels.googlechatestá ausente da sua configuração. Verifique com:Se retornar “Config path not found”, adicione a configuração (consulte Destaques de configuração). -
Plugin não ativado: verifique o status do plugin:
Se mostrar “disabled”, adicione
plugins.entries.googlechat.enabled: trueà sua configuração. -
Gateway não reiniciado: após adicionar a configuração, reinicie o gateway:
Outros problemas
- Verifique
openclaw channels status --probepara erros de autenticação ou ausência de configuração de audiência. - Se nenhuma mensagem chegar, confirme a URL do webhook + as assinaturas de eventos do app do Chat.
- Se o bloqueio por menção impedir respostas, defina
botUsercomo o nome do recurso de usuário do app e verifiquerequireMention. - Use
openclaw logs --followenquanto envia uma mensagem de teste para ver se as solicitações chegam ao gateway.
Relacionado
- Visão geral dos canais — todos os canais compatíveis
- Pairing — autenticação de DM e fluxo de pairing
- Grupos — comportamento de chat em grupo e bloqueio por menção
- Roteamento de canais — roteamento de sessão para mensagens
- Segurança — modelo de acesso e reforço de segurança