Gmail Pub/Sub -> OpenClaw
Objectif : surveillance Gmail -> push Pub/Sub ->gog gmail watch serve -> webhook OpenClaw.
Prérequis
gcloudinstallé et connecté (guide d’installation).gog(gogcli) installé et autorisé pour le compte Gmail (gogcli.sh).- Webhooks OpenClaw activés (voir Webhooks).
tailscaleconnecté (tailscale.com). La configuration prise en charge utilise Tailscale Funnel pour le point de terminaison HTTPS public. D’autres services de tunnel peuvent fonctionner, mais sont DIY/non pris en charge et nécessitent un câblage manuel. Actuellement, Tailscale est ce que nous prenons en charge.
deliver + channel/to en option :
channel + to. Sinon channel: "last"
utilise la dernière route de livraison (retombe sur WhatsApp).
Pour forcer un modèle moins coûteux pour les exécutions Gmail, définissez model dans le mapping
(provider/model ou alias). Si vous imposez agents.defaults.models, incluez-le ici.
Pour définir un modèle par défaut et un niveau de réflexion spécifiquement pour les hooks Gmail, ajoutez
hooks.gmail.model / hooks.gmail.thinking dans votre configuration :
- Les
model/thinkingpar hook dans le mapping remplacent toujours ces valeurs par défaut. - Ordre de repli :
hooks.gmail.model→agents.defaults.model.fallbacks→ primaire (auth/limitation de débit/délais). - Si
agents.defaults.modelsest défini, le modèle Gmail doit être dans la liste d’autorisation. - Le contenu du hook Gmail est enveloppé par défaut avec des limites de sécurité de contenu externe.
Pour désactiver (dangereux), définissez
hooks.gmail.allowUnsafeExternalContent: true.
hooks.mappings ou un module de transformation JS/TS
sous hooks.transformsDir (voir Webhooks).
Assistant (recommandé)
Utilisez l’assistant OpenClaw pour tout câbler (installe les dépendances sur macOS via brew) :- Utilise Tailscale Funnel pour le point de terminaison de push public.
- Écrit la configuration
hooks.gmailpouropenclaw webhooks gmail run. - Active le préréglage de hook Gmail (
hooks.presets: ["gmail"]).
tailscale.mode est activé, OpenClaw définit automatiquement
hooks.gmail.serve.path sur / et conserve le chemin public à
hooks.gmail.tailscale.path (par défaut /gmail-pubsub) car Tailscale
supprime le préfixe de chemin défini avant le proxy.
Si vous avez besoin que le backend reçoive le chemin préfixé, définissez
hooks.gmail.tailscale.target (ou --tailscale-target) vers une URL complète comme
http://127.0.0.1:8788/gmail-pubsub et faites correspondre hooks.gmail.serve.path.
Besoin d’un point de terminaison personnalisé ? Utilisez --push-endpoint <url> ou --tailscale off.
Note de plateforme : sur macOS, l’assistant installe gcloud, gogcli et tailscale
via Homebrew ; sur Linux, installez-les manuellement au préalable.
Démarrage automatique du Gateway (passerelle) (recommandé) :
- Lorsque
hooks.enabled=trueethooks.gmail.accountest défini, le Gateway démarregog gmail watch serveau démarrage et renouvelle automatiquement la surveillance. - Définissez
OPENCLAW_SKIP_GMAIL_WATCHER=1pour vous désinscrire (utile si vous exécutez le daemon vous‑même). - N’exécutez pas le daemon manuel en même temps, sinon vous rencontrerez
listen tcp 127.0.0.1:8788: bind: address already in use.
gog gmail watch serve + renouvellement automatique) :
Configuration unique
- Sélectionnez le projet GCP qui possède le client OAuth utilisé par
gog.
- Activer les API :
- Créer un topic :
- Autoriser Gmail push à publier :
Démarrer la surveillance
history_id depuis la sortie (pour le débogage).
Exécuter le gestionnaire de push
Exemple local (authentification par jeton partagé) :--tokenprotège le point de terminaison push (x-gog-tokenou?token=).--hook-urlpointe vers OpenClaw/hooks/gmail(mappé ; exécution isolée + résumé vers le principal).--include-bodyet--max-bytescontrôlent l’extrait du corps envoyé à OpenClaw.
openclaw webhooks gmail run encapsule le même flux et renouvelle automatiquement la surveillance.
Exposer le gestionnaire (avancé, non pris en charge)
Si vous avez besoin d’un tunnel autre que Tailscale, câblez-le manuellement et utilisez l’URL publique dans la souscription push (non pris en charge, sans garde-fous) :Test
Envoyez un message à la boîte de réception surveillée :Problemes courants
Invalid topicName: incohérence de projet (le topic n’est pas dans le projet du client OAuth).User not authorized:roles/pubsub.publishermanquant sur le topic.- Messages vides : le push Gmail ne fournit que
historyId; récupérez viagog gmail history.