Installeren
Installeer Google Chat voordat je het kanaal configureert:Snelle installatie (beginner)
- Maak een Google Cloud-project en schakel de Google Chat API in.
- Ga naar: Google Chat API-referenties
- Schakel de API in als deze nog niet is ingeschakeld.
- Maak een Service Account:
- Klik op Create Credentials > Service Account.
- Geef het een naam naar keuze (bijv.
openclaw-chat). - Laat machtigingen leeg (klik op Continue).
- Laat principals met toegang leeg (klik op Done).
- Maak en download de JSON Key:
- Klik in de lijst met serviceaccounts op degene die je net hebt gemaakt.
- Ga naar het tabblad Keys.
- Klik op Add Key > Create new key.
- Selecteer JSON en klik op Create.
- Sla het gedownloade JSON-bestand op je gatewayhost op (bijv.
~/.openclaw/googlechat-service-account.json). - Maak een Google Chat-app in de Google Cloud Console Chat-configuratie:
- Vul de Application info in:
- App name: (bijv.
OpenClaw) - Avatar URL: (bijv.
https://openclaw.ai/logo.png) - Description: (bijv.
Personal AI Assistant)
- App name: (bijv.
- Schakel Interactive features in.
- Vink onder Functionality Join spaces and group conversations aan.
- Selecteer onder Connection settings HTTP endpoint URL.
- Selecteer onder Triggers Use a common HTTP endpoint URL for all triggers en stel dit in op de openbare URL van je Gateway gevolgd door
/googlechat.- Tip: voer
openclaw statusuit om de openbare URL van je Gateway te vinden.
- Tip: voer
- Vink onder Visibility Make this Chat app available to specific people and groups in
<Your Domain>aan. - Voer je e-mailadres in (bijv.
user@example.com) in het tekstvak. - Klik onderaan op Save.
- Vul de Application info in:
- Schakel de appstatus in:
- Vernieuw de pagina na het opslaan.
- Zoek naar de sectie App status (meestal bovenaan of onderaan na het opslaan).
- Wijzig de status naar Live - available to users.
- Klik opnieuw op Save.
- Configureer OpenClaw met het serviceaccountpad + Webhook-doelgroep:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - Of config:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Env:
- Stel het Webhook-doelgroeptype + de waarde in (komt overeen met je Chat-appconfiguratie).
- Start de Gateway. Google Chat doet een POST naar je Webhook-pad.
Toevoegen aan Google Chat
Zodra de Gateway draait en je e-mailadres aan de zichtbaarheidslijst is toegevoegd:- Ga naar Google Chat.
- Klik op het +-pictogram (plus) naast Direct Messages.
- Typ in de zoekbalk (waar je normaal mensen toevoegt) de App name die je in de Google Cloud Console hebt geconfigureerd.
- Opmerking: de bot verschijnt niet in de bladerlijst “Marketplace” omdat het een privé-app is. Je moet er op naam naar zoeken.
- Selecteer je bot uit de resultaten.
- Klik op Add of Chat om een 1-op-1-gesprek te starten.
- Stuur “Hallo” om de assistent te activeren!
Openbare URL (alleen Webhook)
Google Chat-Webhooks vereisen een openbaar HTTPS-eindpunt. Stel om veiligheidsredenen alleen het pad/googlechat bloot aan het internet. Houd het OpenClaw-dashboard en andere gevoelige eindpunten op je privénetwerk.
Optie A: Tailscale Funnel (aanbevolen)
Gebruik Tailscale Serve voor het privédashboard en Funnel voor het openbare Webhook-pad. Zo blijft/ privé terwijl alleen /googlechat wordt blootgesteld.
-
Controleer aan welk adres je Gateway is gebonden:
Noteer het IP-adres (bijv.
127.0.0.1,0.0.0.0, of je Tailscale-IP zoals100.x.x.x). -
Stel het dashboard alleen bloot aan de tailnet (poort 8443):
-
Stel alleen het Webhook-pad openbaar bloot:
- Autoriseer de node voor Funnel-toegang: Bezoek, indien gevraagd, de autorisatie-URL die in de uitvoer wordt getoond om Funnel voor deze node in je tailnet-beleid in te schakelen.
-
Controleer de configuratie:
https://<node-name>.<tailnet>.ts.net/googlechat
Je privédashboard blijft alleen toegankelijk via de tailnet:
https://<node-name>.<tailnet>.ts.net:8443/
Gebruik de openbare URL (zonder :8443) in de Google Chat-appconfiguratie.
Opmerking: deze configuratie blijft behouden na herstarts. Om deze later te verwijderen, voer jetailscale funnel resetentailscale serve resetuit.
Optie B: Reverse proxy (Caddy)
Als je een reverse proxy zoals Caddy gebruikt, proxy dan alleen het specifieke pad:your-domain.com/ genegeerd of als 404 geretourneerd, terwijl your-domain.com/googlechat veilig naar OpenClaw wordt gerouteerd.
Optie C: Cloudflare Tunnel
Configureer de ingress-regels van je tunnel om alleen het Webhook-pad te routeren:- Pad:
/googlechat->http://localhost:18789/googlechat - Standaardregel: HTTP 404 (Not Found)
Hoe het werkt
- Google Chat stuurt Webhook-POST’s naar de Gateway. Elk verzoek bevat een header
Authorization: Bearer <token>.- OpenClaw verifieert bearer-auth voordat volledige Webhook-bodies worden gelezen/geparsed wanneer de header aanwezig is.
- Google Workspace Add-on-verzoeken die
authorizationEventObject.systemIdTokenin de body bevatten, worden ondersteund via een strikter pre-auth bodybudget.
- OpenClaw verifieert het token tegen het geconfigureerde
audienceType+audience:audienceType: "app-url"→ doelgroep is je HTTPS-Webhook-URL.audienceType: "project-number"→ doelgroep is het Cloud-projectnummer.
- Berichten worden per space gerouteerd:
- DM’s gebruiken sessiesleutel
agent:<agentId>:googlechat:direct:<spaceId>. - Spaces gebruiken sessiesleutel
agent:<agentId>:googlechat:group:<spaceId>.
- DM’s gebruiken sessiesleutel
- DM-toegang werkt standaard via pairing. Onbekende afzenders ontvangen een pairingcode; keur goed met:
openclaw pairing approve googlechat <code>
- Groepsspaces vereisen standaard een @-mention. Gebruik
botUserals mentiondetectie de gebruikersnaam van de app nodig heeft. - Wanneer een uitvoerings- of Plugin-goedkeuringsverzoek vanuit Google Chat start en een stabiele
users/<id>-goedkeurder is geconfigureerd, plaatst OpenClaw een native Google Chat-goedkeuringskaart in de oorspronkelijke space of thread. De knoppen op de kaart gebruiken ondoorzichtige callbacktokens, en de handmatige prompt/approve <id> <decision>wordt alleen getoond wanneer native levering van goedkeuringen niet beschikbaar is.
Doelen
Gebruik deze identifiers voor bezorging en allowlists:- Direct messages:
users/<userId>(aanbevolen). - Ruw e-mailadres
name@example.comis veranderlijk en wordt alleen gebruikt voor directe allowlist-matching wanneerchannels.googlechat.dangerouslyAllowNameMatching: true. - Verouderd:
users/<email>wordt behandeld als gebruikers-id, niet als e-mailallowlist. - Spaces:
spaces/<spaceId>.
Configuratiehoogtepunten
- Serviceaccountreferenties kunnen ook inline worden doorgegeven met
serviceAccount(JSON-string). serviceAccountRefwordt ook ondersteund (env/file SecretRef), inclusief refs per account onderchannels.googlechat.accounts.<id>.serviceAccountRef.- Het standaard Webhook-pad is
/googlechatalswebhookPathniet is ingesteld. dangerouslyAllowNameMatchingschakelt veranderlijke e-mailprincipal-matching voor allowlists opnieuw in (break-glass-compatibiliteitsmodus).- Reacties zijn beschikbaar via de tool
reactionsenchannels actionwanneeractions.reactionsis ingeschakeld. - Native goedkeuringskaarten gebruiken Google Chat-klikacties op
cardsV2-knoppen, geen reactie-events. Goedkeurders komen uitdm.allowFromofdefaultToen moeten stabiele numeriekeusers/<id>-waarden zijn. - Berichtacties bieden
sendvoor tekst enupload-filevoor expliciete bijlageverzendingen.upload-fileaccepteertmedia/filePath/pathplus optioneelmessage,filenameen threadtargeting. typingIndicatorondersteuntmessage(standaard),noneenreaction(reactie vereist gebruikers-OAuth).- Bijlagen worden via de Chat API gedownload en opgeslagen in de mediapijplijn (grootte begrensd door
mediaMaxMb). - Door bots geschreven Google Chat-berichten worden standaard genegeerd. Als je bewust
allowBots: trueinstelt, gebruiken geaccepteerde door bots geschreven berichten gedeelde botlusbescherming. Configureerchannels.defaults.botLoopProtectionen overschrijf daarna metchannels.googlechat.botLoopProtectionofchannels.googlechat.groups.<space>.botLoopProtectionwanneer één space een ander budget nodig heeft.
Probleemoplossing
405 Method Not Allowed
Als Google Cloud Logs Explorer fouten toont zoals:-
Kanaal niet geconfigureerd: de sectie
channels.googlechatontbreekt in je configuratie. Controleer met:Als dit “Config path not found” retourneert, voeg dan de configuratie toe (zie Configuratiehoogtepunten). -
Plugin niet ingeschakeld: controleer de Plugin-status:
Als dit “disabled” toont, voeg dan
plugins.entries.googlechat.enabled: truetoe aan je configuratie. -
Gateway niet opnieuw gestart: start de Gateway opnieuw nadat je de configuratie hebt toegevoegd:
Andere problemen
- Controleer
openclaw channels status --probeop authfouten of ontbrekende doelgroepconfiguratie. - Als er geen berichten binnenkomen, controleer dan de Webhook-URL + eventabonnementen van de Chat-app.
- Als mention-gating antwoorden blokkeert, stel dan
botUserin op de gebruikersresourcenaam van de app en verifieerrequireMention. - Gebruik
openclaw logs --followterwijl je een testbericht verzendt om te zien of verzoeken de Gateway bereiken.
Gerelateerd
- Kanalenoverzicht — alle ondersteunde kanalen
- Koppelen — DM-authenticatie en koppelingsflow
- Groepen — gedrag van groepschats en gating voor vermeldingen
- Kanaalroutering — sessieroutering voor berichten
- Beveiliging — toegangsmodel en hardening