Google Chat (API Chat)
Stato: pronto per messaggi diretti + spazi tramite webhook dell’API Google Chat (solo HTTP).Configurazione rapida (principianti)
- Crea un progetto Google Cloud e abilita la Google Chat API.
- Vai a: Credenziali API Google Chat
- Abilita l’API se non è già abilitata.
- Crea un Account di servizio:
- Premi Create Credentials > Service Account.
- Assegna il nome che preferisci (ad esempio
openclaw-chat). - Lascia vuote le autorizzazioni (premi Continue).
- Lascia vuoti i principal con accesso (premi Done).
- Crea e scarica la chiave JSON:
- Nell’elenco degli account di servizio, fai clic su quello che hai appena creato.
- Vai alla scheda Keys.
- Fai clic su Add Key > Create new key.
- Seleziona JSON e premi Create.
- Salva il file JSON scaricato sul tuo host gateway (ad esempio
~/.openclaw/googlechat-service-account.json). - Crea un’app Google Chat nella Configurazione Chat di Google Cloud Console:
- Compila le informazioni dell’applicazione:
- App name: (ad esempio
OpenClaw) - Avatar URL: (ad esempio
https://openclaw.ai/logo.png) - Description: (ad esempio
Assistente AI personale)
- App name: (ad esempio
- Abilita Interactive features.
- In Functionality, seleziona Join spaces and group conversations.
- In Connection settings, seleziona HTTP endpoint URL.
- In Triggers, seleziona Use a common HTTP endpoint URL for all triggers e impostalo sull’URL pubblico del tuo gateway seguito da
/googlechat.- Suggerimento: esegui
openclaw statusper trovare l’URL pubblico del tuo gateway.
- Suggerimento: esegui
- In Visibility, seleziona Make this Chat app available to specific people and groups in <Your Domain>.
- Inserisci il tuo indirizzo email (ad esempio
user@example.com) nella casella di testo. - Fai clic su Save in basso.
- Compila le informazioni dell’applicazione:
- Abilita lo stato dell’app:
- Dopo aver salvato, aggiorna la pagina.
- Cerca la sezione App status (di solito vicino alla parte superiore o inferiore dopo il salvataggio).
- Cambia lo stato in Live - available to users.
- Fai nuovamente clic su Save.
- Configura OpenClaw con il percorso dell’account di servizio + audience del webhook:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - Oppure config:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Env:
- Imposta il tipo + valore dell’audience del webhook (deve corrispondere alla configurazione della tua app Chat).
- Avvia il gateway. Google Chat invierà richieste POST al percorso del tuo webhook.
Aggiungere a Google Chat
Una volta che il gateway è in esecuzione e il tuo indirizzo email è stato aggiunto all’elenco di visibilità:- Vai su Google Chat.
- Fai clic sull’icona + (più) accanto a Direct Messages.
- Nella barra di ricerca (dove normalmente aggiungi persone), digita il nome dell’App name che hai configurato in Google Cloud Console.
- Nota: il bot non comparirà nell’elenco di navigazione “Marketplace” perché è un’app privata. Devi cercarlo per nome.
- Seleziona il tuo bot dai risultati.
- Fai clic su Add o Chat per avviare una conversazione 1:1.
- Invia “Hello” per attivare l’assistente!
URL pubblico (solo webhook)
I webhook di Google Chat richiedono un endpoint HTTPS pubblico. Per sicurezza, esponi a internet solo il percorso/googlechat. Mantieni la dashboard OpenClaw e gli altri endpoint sensibili sulla tua rete privata.
Opzione A: Tailscale Funnel (consigliato)
Usa Tailscale Serve per la dashboard privata e Funnel per il percorso del webhook pubblico. In questo modo/ resta privato mentre viene esposto solo /googlechat.
-
Controlla a quale indirizzo è associato il tuo gateway:
Annota l’indirizzo IP (ad esempio
127.0.0.1,0.0.0.0oppure il tuo IP Tailscale come100.x.x.x). -
Esponi la dashboard solo alla tailnet (porta 8443):
-
Esponi pubblicamente solo il percorso del webhook:
- Autorizza il nodo per l’accesso Funnel: Se richiesto, visita l’URL di autorizzazione mostrato nell’output per abilitare Funnel per questo nodo nella policy della tua tailnet.
-
Verifica la configurazione:
https://<node-name>.<tailnet>.ts.net/googlechat
La tua dashboard privata resterà disponibile solo nella tailnet:
https://<node-name>.<tailnet>.ts.net:8443/
Usa l’URL pubblico (senza :8443) nella configurazione dell’app Google Chat.
Nota: questa configurazione persiste anche dopo i riavvii. Per rimuoverla in seguito, eseguitailscale funnel resetetailscale serve reset.
Opzione B: proxy inverso (Caddy)
Se usi un proxy inverso come Caddy, instrada solo il percorso specifico:your-domain.com/ verrà ignorata o riceverà una risposta 404, mentre your-domain.com/googlechat verrà instradata in modo sicuro a OpenClaw.
Opzione C: Cloudflare Tunnel
Configura le regole di ingresso del tuo tunnel in modo da instradare solo il percorso del webhook:- Percorso:
/googlechat->http://localhost:18789/googlechat - Regola predefinita: HTTP 404 (Not Found)
Come funziona
- Google Chat invia richieste POST del webhook al gateway. Ogni richiesta include un’intestazione
Authorization: Bearer <token>.- OpenClaw verifica l’autenticazione bearer prima di leggere/analizzare i corpi completi del webhook quando l’intestazione è presente.
- Le richieste di Google Workspace Add-on che includono
authorizationEventObject.systemIdTokennel body sono supportate tramite un budget del body di pre-autenticazione più restrittivo.
- OpenClaw verifica il token rispetto a
audienceType+audienceconfigurati:audienceType: "app-url"→ l’audience è il tuo URL HTTPS del webhook.audienceType: "project-number"→ l’audience è il numero del progetto Cloud.
- I messaggi vengono instradati in base allo spazio:
- I messaggi diretti usano la chiave di sessione
agent:<agentId>:googlechat:direct:<spaceId>. - Gli spazi usano la chiave di sessione
agent:<agentId>:googlechat:group:<spaceId>.
- I messaggi diretti usano la chiave di sessione
- L’accesso ai messaggi diretti usa il pairing per impostazione predefinita. I mittenti sconosciuti ricevono un codice di pairing; approvalo con:
openclaw pairing approve googlechat <code>
- Per impostazione predefinita, gli spazi di gruppo richiedono una @-mention. Usa
botUserse il rilevamento della mention richiede il nome utente dell’app.
Destinazioni
Usa questi identificatori per la consegna e le allowlist:- Messaggi diretti:
users/<userId>(consigliato). - L’email non elaborata
name@example.comè modificabile e viene usata solo per la corrispondenza diretta nelle allowlist quandochannels.googlechat.dangerouslyAllowNameMatching: true. - Deprecato:
users/<email>viene trattato come un ID utente, non come una allowlist email. - Spazi:
spaces/<spaceId>.
Punti salienti della configurazione
- Le credenziali dell’account di servizio possono anche essere passate inline con
serviceAccount(stringa JSON). - Anche
serviceAccountRefè supportato (env/file SecretRef), inclusi i ref per account sottochannels.googlechat.accounts.<id>.serviceAccountRef. - Il percorso predefinito del webhook è
/googlechatsewebhookPathnon è impostato. dangerouslyAllowNameMatchingriabilita la corrispondenza con principal email modificabili per le allowlist (modalità compatibilità break-glass).- Le reazioni sono disponibili tramite lo strumento
reactionsechannels actionquandoactions.reactionsè abilitato. - Le azioni dei messaggi espongono
sendper il testo eupload-fileper gli invii espliciti di allegati.upload-fileaccettamedia/filePath/pathpiùmessage,filenamee targeting del thread facoltativi. typingIndicatorsupportanone,message(predefinito) ereaction(le reaction richiedono OAuth utente).- Gli allegati vengono scaricati tramite la Chat API e memorizzati nella pipeline dei media (dimensione limitata da
mediaMaxMb).
Risoluzione dei problemi
405 Method Not Allowed
Se Google Cloud Logs Explorer mostra errori come:-
Canale non configurato: la sezione
channels.googlechatmanca dalla tua configurazione. Verifica con:Se restituisce “Config path not found”, aggiungi la configurazione (vedi Punti salienti della configurazione). -
Plugin non abilitato: controlla lo stato del plugin:
Se mostra “disabled”, aggiungi
plugins.entries.googlechat.enabled: truealla tua configurazione. -
Gateway non riavviato: dopo aver aggiunto la configurazione, riavvia il gateway:
Altri problemi
- Controlla
openclaw channels status --probeper errori di autenticazione o configurazione dell’audience mancante. - Se non arrivano messaggi, conferma l’URL del webhook dell’app Chat + le sottoscrizioni agli eventi.
- Se il controllo delle mention blocca le risposte, imposta
botUsersul nome della risorsa utente dell’app e verificarequireMention. - Usa
openclaw logs --followmentre invii un messaggio di test per vedere se le richieste raggiungono il gateway.
Correlati
- Panoramica dei canali — tutti i canali supportati
- Pairing — autenticazione dei DM e flusso di pairing
- Gruppi — comportamento delle chat di gruppo e controllo delle mention
- Instradamento del canale — instradamento della sessione per i messaggi
- Sicurezza — modello di accesso e hardening