Mainstream messaging
Google Chat
Google Chat wordt uitgevoerd als de officiële Plugin @openclaw/googlechat: privéberichten en ruimtes via webhooks van de Google Chat API (alleen HTTP-eindpunt, geen Pub/Sub).
Installatie
openclaw plugins install @openclaw/googlechatLokale checkout (bij uitvoering vanuit een git-repository):
openclaw plugins install ./path/to/local/googlechat-pluginSnelle configuratie (voor beginners)
- 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 serviceaccount:
- Klik op Create Credentials > Service Account.
- Geef het een naam naar keuze (bijvoorbeeld
openclaw-chat). - Laat machtigingen en principals leeg (Continue en vervolgens Done).
- Maak en download de JSON-sleutel:
- Klik op het nieuwe serviceaccount > tabblad Keys > Add Key > Create new key > JSON > Create.
- Sla het gedownloade JSON-bestand op de host van uw Gateway op (bijvoorbeeld
~/.openclaw/googlechat-service-account.json). - Maak een Google Chat-app in Google Cloud Console Chat-configuratie:
- Vul Application info in (appnaam, avatar-URL, beschrijving).
- Schakel Interactive features in.
- Vink onder Functionality de optie Join spaces and group conversations aan.
- Selecteer onder Connection settings de optie HTTP endpoint URL.
- Selecteer onder Triggers de optie Use a common HTTP endpoint URL for all triggers en stel deze in op de openbare URL van uw Gateway, gevolgd door
/googlechat(zie Openbare URL). - Vink onder Visibility de optie Make this Chat app available to specific people and groups in
<Your Domain>aan en voer uw e-mailadres in. - Klik op Save.
- Schakel de appstatus in: vernieuw de pagina, zoek App status, stel deze in op Live - available to users en klik opnieuw op Save.
- Configureer OpenClaw met het serviceaccount en de doelgroep van de Webhook (moet overeenkomen met de configuratie van de Chat-app):
- Omgevingsvariabele:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json(alleen standaardaccount), of - Configuratie: zie Belangrijkste configuratieopties.
openclaw channels add --channel googlechataccepteert ook--audience-type,--audience,--webhook-pathen--webhook-url.
- Omgevingsvariabele:
- Start de Gateway. Google Chat verstuurt POST-verzoeken naar het pad van uw Webhook (standaard
/googlechat).
Toevoegen aan Google Chat
Zodra de Gateway actief is en uw e-mailadres op de zichtbaarheidslijst staat:
- Ga naar Google Chat.
- Klik op het pictogram + (plus) naast Direct Messages.
- Zoek naar de App name die u in de Google Cloud Console hebt geconfigureerd.
- De bot verschijnt niet in de bladerlijst van de Marketplace omdat het een privé-app is; zoek de bot op naam.
- Selecteer de bot, klik op Add of Chat en stuur een bericht.
Openbare URL (alleen Webhook)
Google Chat-webhooks vereisen een openbaar HTTPS-eindpunt. Stel voor de veiligheid alleen het pad /googlechat bloot aan internet en houd het OpenClaw-dashboard en andere eindpunten privé.
Optie A: Tailscale Funnel (aanbevolen)
Gebruik Tailscale Serve voor het privédashboard en Funnel voor het openbare Webhook-pad.
-
Controleer aan welk adres uw Gateway is gebonden:
bash ss -tlnp | grep 18789Noteer het IP-adres (bijvoorbeeld
127.0.0.1,0.0.0.0of een Tailscale-adres van het type100.x.x.x). -
Stel het dashboard alleen beschikbaar aan het tailnet (poort 8443):
bash # Indien gebonden aan localhost (127.0.0.1 of 0.0.0.0):tailscale serve --bg --https 8443 http://127.0.0.1:18789 # Indien alleen gebonden aan een Tailscale-IP:tailscale serve --bg --https 8443 http://100.x.x.x:18789 -
Stel alleen het Webhook-pad openbaar beschikbaar:
bash # Indien gebonden aan localhost (127.0.0.1 of 0.0.0.0):tailscale funnel --bg --set-path /googlechat http://127.0.0.1:18789/googlechat # Indien alleen gebonden aan een Tailscale-IP:tailscale funnel --bg --set-path /googlechat http://100.x.x.x:18789/googlechat -
Ga desgevraagd naar de autorisatie-URL die in de uitvoer wordt weergegeven om Funnel voor deze Node in te schakelen.
-
Controleer:
bash tailscale serve statustailscale funnel status
Uw openbare Webhook-URL is https://<node-name>.<tailnet>.ts.net/googlechat; het dashboard blijft alleen via het tailnet toegankelijk op https://<node-name>.<tailnet>.ts.net:8443/. Gebruik de openbare URL (zonder :8443) in de configuratie van de Google Chat-app.
Opmerking: deze configuratie blijft na opnieuw opstarten behouden. Verwijder deze later met
tailscale funnel resetentailscale serve reset.
Optie B: reverseproxy (Caddy)
Proxy alleen het Webhook-pad:
your-domain.com { reverse_proxy /googlechat* localhost:18789}Verzoeken aan your-domain.com/ worden genegeerd of krijgen een 404-antwoord, terwijl your-domain.com/googlechat naar OpenClaw wordt gerouteerd.
Optie C: Cloudflare Tunnel
Configureer de ingressregels van de tunnel zodat alleen het Webhook-pad wordt gerouteerd:
- Path:
/googlechat->http://localhost:18789/googlechat - Default rule: HTTP 404 (Not Found)
Werking
- Google Chat verstuurt JSON via POST naar het Webhook-pad van de Gateway (alleen POST, JSON-inhoudstype vereist, snelheidsbeperking per IP-adres).
- OpenClaw authenticeert elk verzoek voordat het wordt doorgestuurd:
- Gebeurtenissen van de Chat-app bevatten
Authorization: Bearer <token>; het token wordt geverifieerd voordat de volledige hoofdtekst wordt geparseerd. - Gebeurtenissen van Google Workspace-add-ons bevatten het token in de hoofdtekst (
authorizationEventObject.systemIdToken) en worden vóór verificatie gelezen met een strikter pre-authenticatiebudget (16 KB, 3 s).
- Gebeurtenissen van de Chat-app bevatten
- Het token wordt gecontroleerd aan de hand van
audienceType+audience:audienceType: "app-url"→ de doelgroep is de HTTPS-URL van uw Webhook.audienceType: "project-number"→ de doelgroep is het nummer van het Cloud-project.- Voor add-ontokens onder
app-urlmoetappPrincipalbovendien zijn ingesteld op de numerieke OAuth 2.0-client-ID van de app (21 cijfers, geen e-mailadres); anders mislukt de verificatie en wordt een waarschuwing geregistreerd.
- Berichten worden per ruimte gerouteerd:
- Ruimtes krijgen sessies per ruimte:
agent:<agentId>:googlechat:group:<spaceId>; antwoorden gaan naar de berichtenthread. - Privéberichten worden standaard samengevoegd met de hoofdsessie van de agent; stel
session.dmScopein voor privéberichtsessies per gesprekspartner (zie Sessie).
- Ruimtes krijgen sessies per ruimte:
- Toegang via privéberichten werkt standaard met koppeling. Onbekende afzenders ontvangen een koppelingscode; keur deze goed met:
openclaw pairing approve googlechat <code>
- Groepsruimtes vereisen standaard een @-vermelding. Vermeldingen worden gedetecteerd via Chat-annotaties van het type
USER_MENTIONdie op de app zijn gericht; stelbotUserin (bijvoorbeeldusers/1234567890) als voor de detectie de naam van de gebruikersresource van de app nodig is. - Wanneer een uitvoerings- of Plugin-goedkeuring vanuit Google Chat wordt gestart en een stabiele fiatteur van het type
users/<id>is geconfigureerd, plaatst OpenClaw een systeemeigen goedkeuringskaart (cardsV2) in de oorspronkelijke ruimte of thread. Kaartknoppen bevatten ondoorzichtige callbacktokens; de handmatige prompt/approve <id> <decision>verschijnt alleen wanneer systeemeigen bezorging niet beschikbaar is.
Doelen
Gebruik deze identificaties voor bezorging en toelatingslijsten:
- Privéberichten:
users/<userId>(aanbevolen). - Ruimtes:
spaces/<spaceId>. - Een onbewerkt e-mailadres zoals
name@example.comis veranderlijk en wordt alleen gebruikt voor vergelijking met toelatingslijsten wanneerchannels.googlechat.dangerouslyAllowNameMatching: true. - Afgekeurd:
users/<email>wordt behandeld als een gebruikers-ID, niet als een e-mailvermelding in een toelatingslijst. - De voorvoegsels
googlechat:,google-chat:engchat:worden geaccepteerd en verwijderd.
Belangrijkste configuratieopties
{ channels: { googlechat: { enabled: true, serviceAccountFile: "/path/to/service-account.json", // of serviceAccountRef: { source: "file", provider: "filemain", id: "/channels/googlechat/serviceAccount" } audienceType: "app-url", audience: "https://gateway.example.com/googlechat", appPrincipal: "123456789012345678901", // alleen verificatie van add-ons; numerieke OAuth-client-ID webhookPath: "/googlechat", botUser: "users/1234567890", // optioneel; helpt bij detectie van vermeldingen allowBots: false, dm: { policy: "pairing", allowFrom: ["users/1234567890"], }, groupPolicy: "allowlist", groups: { "spaces/AAAA": { enabled: true, requireMention: true, users: ["users/1234567890"], systemPrompt: "Alleen korte antwoorden.", }, }, typingIndicator: "message", mediaMaxMb: 20, }, },}Opmerkingen:
- Referenties van het serviceaccount:
serviceAccountFile(pad),serviceAccount(inline JSON-tekenreeks of -object) ofserviceAccountRef(SecretRef voor omgevingsvariabele/bestand). De omgevingsvariabelenGOOGLE_CHAT_SERVICE_ACCOUNT(inline JSON) enGOOGLE_CHAT_SERVICE_ACCOUNT_FILE(pad) gelden alleen voor het standaardaccount. Configuraties met meerdere accounts gebruikenchannels.googlechat.accounts.<id>met dezelfde sleutels, inclusief eenserviceAccountRefper account. - Het standaardpad van de Webhook is
/googlechatwanneerwebhookPathniet is ingesteld;webhookUrlkan in plaats daarvan het pad leveren. - Groepssleutels moeten stabiele ruimte-ID's zijn (
spaces/<spaceId>). Sleutels met weergavenamen zijn afgekeurd en worden als zodanig geregistreerd. dangerouslyAllowNameMatchingschakelt vergelijking van veranderlijke e-mailprincipals voor toelatingslijsten opnieuw in (compatibiliteitsmodus voor noodgevallen); doctor waarschuwt voor e-mailvermeldingen.- Reactieacties van Google Chat worden niet beschikbaar gesteld. De Plugin gebruikt serviceaccountauthenticatie, terwijl reactie-eindpunten van Google Chat gebruikersauthenticatie vereisen. Bestaande configuratie voor
actions.reactionswordt voor compatibiliteit geaccepteerd, maar heeft geen effect. - Systeemeigen goedkeuringskaarten gebruiken klikken op Google Chat-knoppen van
cardsV2, niet reactiegebeurtenissen. Fiatteurs zijn afkomstig uitdm.allowFromofdefaultToen moeten stabiele numerieke waarden van het typeusers/<id>zijn. - Berichtacties stellen alleen tekstueel
sendbeschikbaar. Het uploaden van Google Chat-bijlagen vereist gebruikersauthenticatie, terwijl deze Plugin serviceaccountauthenticatie gebruikt. Daarom is het uploaden van uitgaande bestanden niet beschikbaar. typingIndicator:message(standaard) plaatst een tijdelijke aanduiding_<Bot> is aan het typen..._en bewerkt deze tot het eerste antwoord;noneschakelt dit uit;reactionvereist OAuth voor gebruikers en valt bij serviceaccountauthenticatie momenteel terug opmessage, waarbij een fout wordt geregistreerd.- Inkomende bijlagen (de eerste bijlage per bericht) worden via de Chat API naar de mediapijplijn gedownload en beperkt door
mediaMaxMb(standaard 20). - Door bots geschreven berichten worden standaard genegeerd. Met
allowBots: truegebruiken geaccepteerde botberichten de gedeelde bescherming tegen botlussen: configureerchannels.defaults.botLoopProtectionen overschrijf deze vervolgens metchannels.googlechat.botLoopProtectionofchannels.googlechat.groups.<space>.botLoopProtection.
Details over verwijzingen naar geheimen: Geheimenbeheer.
Probleemoplossing
405 Methode niet toegestaan
Als Google Cloud Logs Explorer fouten toont zoals:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not AllowedDe Webhook-handler is niet geregistreerd. Veelvoorkomende oorzaken:
-
Kanaal niet geconfigureerd: de sectie
channels.googlechatontbreekt. Controleer dit met:bash openclaw config get channels.googlechatAls dit "Configuratiepad niet gevonden" retourneert, voegt u de configuratie toe (zie Belangrijkste configuratieopties).
-
Plugin niet ingeschakeld: controleer de status van de Plugin:
bash openclaw plugins list | grep googlechatAls "uitgeschakeld" wordt weergegeven, voegt u
plugins.entries.googlechat.enabled: truetoe aan uw configuratie. -
Gateway niet opnieuw gestart na configuratiewijzigingen:
bash openclaw gateway restart
Controleer of het kanaal actief is:
openclaw channels status# Moet tonen: Google Chat standaard: ingeschakeld, geconfigureerd, ...Andere problemen
openclaw channels status --probetoont authenticatiefouten en ontbrekende doelgroepconfiguratie (audienceenaudienceTypezijn beide vereist).- Als er geen berichten binnenkomen, controleert u de Webhook-URL en triggerconfiguratie van de Chat-app.
- Als de vermeldingsbeperking antwoorden blokkeert, stelt u
botUserin op de naam van de gebruikersresource van de app en controleert urequireMention. openclaw logs --followtoont tijdens het verzenden van een testbericht of verzoeken de Gateway bereiken.
Gerelateerd
- Overzicht van kanalen — alle ondersteunde kanalen
- Kanaalroutering — sessieroutering voor berichten
- Gateway-configuratie
- Groepen — gedrag van groepschats en vermeldingscontrole
- Koppelen — DM-authenticatie en koppelingsproces
- Beveiliging — toegangsmodel en versterking