Google Chat (API Chat)
Statut : prêt pour les messages privés et les espaces via les webhooks de l’API Google Chat (HTTP uniquement).Configuration rapide (débutant)
- Créez un projet Google Cloud et activez l’API Google Chat.
- Accédez à : Google Chat API Credentials
- Activez l’API si elle n’est pas déjà activée.
- Créez un compte de service :
- Cliquez sur Create Credentials > Service Account.
- Donnez-lui le nom de votre choix (par exemple,
openclaw-chat). - Laissez les autorisations vides (cliquez sur Continue).
- Laissez les principaux ayant accès vides (cliquez sur Done).
- Créez et téléchargez la clé JSON :
- Dans la liste des comptes de service, cliquez sur celui que vous venez de créer.
- Accédez à l’onglet Keys.
- Cliquez sur Add Key > Create new key.
- Sélectionnez JSON et cliquez sur Create.
- Stockez le fichier JSON téléchargé sur votre hôte gateway (par exemple,
~/.openclaw/googlechat-service-account.json). - Créez une application Google Chat dans la Google Cloud Console Chat Configuration :
- Renseignez les informations de l’application :
- App name : (par exemple
OpenClaw) - Avatar URL : (par exemple
https://openclaw.ai/logo.png) - Description : (par exemple
Assistant IA personnel)
- App name : (par exemple
- Activez les Interactive features.
- Sous Functionality, cochez Join spaces and group conversations.
- Sous Connection settings, sélectionnez HTTP endpoint URL.
- Sous Triggers, sélectionnez Use a common HTTP endpoint URL for all triggers et définissez-la sur l’URL publique de votre gateway suivie de
/googlechat.- Astuce : exécutez
openclaw statuspour trouver l’URL publique de votre gateway.
- Astuce : exécutez
- Sous Visibility, cochez Make this Chat app available to specific people and groups in <Your Domain>.
- Saisissez votre adresse e-mail (par exemple
user@example.com) dans la zone de texte. - Cliquez sur Save en bas.
- Renseignez les informations de l’application :
- Activez le statut de l’application :
- Après l’enregistrement, actualisez la page.
- Recherchez la section App status (généralement vers le haut ou le bas après l’enregistrement).
- Remplacez le statut par Live - available to users.
- Cliquez à nouveau sur Save.
- Configurez OpenClaw avec le chemin du compte de service + l’audience du webhook :
- Variable d’environnement :
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - Ou configuration :
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Variable d’environnement :
- Définissez le type et la valeur de l’audience du webhook (correspondant à votre configuration d’application Chat).
- Démarrez la gateway. Google Chat enverra des requêtes POST à votre chemin de webhook.
Ajouter à Google Chat
Une fois la gateway en cours d’exécution et votre adresse e-mail ajoutée à la liste de visibilité :- Accédez à Google Chat.
- Cliquez sur l’icône + (plus) à côté de Direct Messages.
- Dans la barre de recherche (où vous ajoutez habituellement des personnes), saisissez le nom de l’application que vous avez configuré dans Google Cloud Console.
- Remarque : le bot n’apparaîtra pas dans la liste de navigation « Marketplace » car il s’agit d’une application privée. Vous devez la rechercher par son nom.
- Sélectionnez votre bot dans les résultats.
- Cliquez sur Add ou Chat pour démarrer une conversation en tête-à-tête.
- Envoyez « Hello » pour déclencher l’assistant !
URL publique (webhook uniquement)
Les webhooks Google Chat nécessitent un point de terminaison HTTPS public. Pour des raisons de sécurité, n’exposez que le chemin/googlechat sur internet. Gardez le tableau de bord OpenClaw et les autres points de terminaison sensibles sur votre réseau privé.
Option A : Tailscale Funnel (recommandé)
Utilisez Tailscale Serve pour le tableau de bord privé et Funnel pour le chemin du webhook public. Cela permet de garder/ privé tout en n’exposant que /googlechat.
-
Vérifiez à quelle adresse votre gateway est liée :
Notez l’adresse IP (par exemple,
127.0.0.1,0.0.0.0ou votre IP Tailscale comme100.x.x.x). -
Exposez le tableau de bord uniquement au tailnet (port 8443) :
-
Exposez uniquement le chemin du webhook publiquement :
- Autorisez le nœud pour l’accès Funnel : Si une invite s’affiche, consultez l’URL d’autorisation affichée dans la sortie pour activer Funnel pour ce nœud dans votre politique tailnet.
-
Vérifiez la configuration :
https://<node-name>.<tailnet>.ts.net/googlechat
Votre tableau de bord privé reste accessible uniquement au tailnet :
https://<node-name>.<tailnet>.ts.net:8443/
Utilisez l’URL publique (sans :8443) dans la configuration de l’application Google Chat.
Remarque : cette configuration persiste après les redémarrages. Pour la supprimer plus tard, exécuteztailscale funnel resetettailscale serve reset.
Option B : proxy inverse (Caddy)
Si vous utilisez un proxy inverse comme Caddy, proxifiez uniquement le chemin spécifique :your-domain.com/ sera ignorée ou renverra 404, tandis que your-domain.com/googlechat sera acheminé en toute sécurité vers OpenClaw.
Option C : Cloudflare Tunnel
Configurez les règles d’ingress de votre tunnel pour n’acheminer que le chemin du webhook :- Chemin :
/googlechat->http://localhost:18789/googlechat - Règle par défaut : HTTP 404 (Not Found)
Fonctionnement
- Google Chat envoie des requêtes POST de webhook à la gateway. Chaque requête comprend un en-tête
Authorization: Bearer <token>.- OpenClaw vérifie l’authentification bearer avant de lire/analyser les corps complets de webhook lorsque l’en-tête est présent.
- Les requêtes Google Workspace Add-on qui contiennent
authorizationEventObject.systemIdTokendans le corps sont prises en charge via un budget de corps de pré-authentification plus strict.
- OpenClaw vérifie le jeton par rapport au
audienceType+audienceconfiguré :audienceType: "app-url"→ l’audience est l’URL HTTPS de votre webhook.audienceType: "project-number"→ l’audience est le numéro du projet Cloud.
- Les messages sont acheminés par espace :
- Les messages privés utilisent la clé de session
agent:<agentId>:googlechat:direct:<spaceId>. - Les espaces utilisent la clé de session
agent:<agentId>:googlechat:group:<spaceId>.
- Les messages privés utilisent la clé de session
- L’accès en message privé utilise le jumelage par défaut. Les expéditeurs inconnus reçoivent un code de jumelage ; approuvez-le avec :
openclaw pairing approve googlechat <code>
- Les espaces de groupe nécessitent une @mention par défaut. Utilisez
botUsersi la détection de mention a besoin du nom d’utilisateur de l’application.
Cibles
Utilisez ces identifiants pour la livraison et les listes d’autorisation :- Messages privés :
users/<userId>(recommandé). - L’e-mail brut
name@example.comest modifiable et n’est utilisé que pour la correspondance directe de liste d’autorisation lorsquechannels.googlechat.dangerouslyAllowNameMatching: true. - Obsolète :
users/<email>est traité comme un identifiant utilisateur, pas comme une liste d’autorisation par e-mail. - Espaces :
spaces/<spaceId>.
Points clés de la configuration
- Les identifiants de compte de service peuvent aussi être transmis en ligne avec
serviceAccount(chaîne JSON). serviceAccountRefest également pris en charge (SecretRef env/fichier), y compris les références par compte souschannels.googlechat.accounts.<id>.serviceAccountRef.- Le chemin de webhook par défaut est
/googlechatsiwebhookPathn’est pas défini. dangerouslyAllowNameMatchingréactive la correspondance modifiable du principal d’e-mail pour les listes d’autorisation (mode de compatibilité de dernier recours).- Les réactions sont disponibles via l’outil
reactionsetchannels actionlorsqueactions.reactionsest activé. - Les actions de message exposent
sendpour le texte etupload-filepour les envois explicites de pièces jointes.upload-fileacceptemedia/filePath/pathainsi quemessage,filenameet le ciblage de fil facultatifs. typingIndicatorprend en chargenone,message(par défaut) etreaction(la réaction nécessite l’OAuth utilisateur).- Les pièces jointes sont téléchargées via l’API Chat et stockées dans le pipeline média (taille limitée par
mediaMaxMb).
Dépannage
405 Method Not Allowed
Si Google Cloud Logs Explorer affiche des erreurs comme :-
Canal non configuré : la section
channels.googlechatest absente de votre configuration. Vérifiez avec :Si la commande renvoie « Config path not found », ajoutez la configuration (voir Points clés de la configuration). -
Plugin non activé : vérifiez le statut du plugin :
Si « disabled » s’affiche, ajoutez
plugins.entries.googlechat.enabled: trueà votre configuration. -
Gateway non redémarrée : après avoir ajouté la configuration, redémarrez la gateway :
Autres problèmes
- Vérifiez
openclaw channels status --probepour les erreurs d’authentification ou l’absence de configuration d’audience. - Si aucun message n’arrive, confirmez l’URL du webhook de l’application Chat et les abonnements aux événements.
- Si le filtrage par mention bloque les réponses, définissez
botUsersur le nom de ressource utilisateur de l’application et vérifiezrequireMention. - Utilisez
openclaw logs --followpendant l’envoi d’un message de test pour voir si les requêtes atteignent la gateway.
Lié
- Vue d’ensemble des canaux — tous les canaux pris en charge
- Jumelage — authentification en message privé et flux de jumelage
- Groupes — comportement des discussions de groupe et filtrage par mention
- Routage des canaux — routage de session pour les messages
- Sécurité — modèle d’accès et durcissement