Gmail Pub/Sub -> OpenClaw
Ziel: Gmail-Watch -> Pub/Sub Push ->gog gmail watch serve -> OpenClaw-Webhook.
Voraussetzungen
gcloudinstalliert und angemeldet (Installationsanleitung).gog(gogcli) installiert und für das Gmail-Konto autorisiert (gogcli.sh).- OpenClaw-Hooks aktiviert (siehe Webhooks).
tailscaleangemeldet (tailscale.com). Die unterstützte Einrichtung verwendet Tailscale Funnel für den öffentlichen HTTPS-Endpunkt. Andere Tunneldienste können funktionieren, sind jedoch DIY/nicht unterstützt und erfordern manuelle Verdrahtung. Derzeit unterstützen wir Tailscale.
deliver + optional channel/to setzt:
channel + to. Andernfalls verwendet channel: "last"
die letzte Zustellroute (Fallback auf WhatsApp).
Um für Gmail-Läufe ein günstigeres Modell zu erzwingen, setzen Sie model in der Zuordnung
(provider/model oder Alias). Wenn Sie agents.defaults.models erzwingen, fügen Sie es dort hinzu.
Um ein Standardmodell und eine Denkstufe speziell für Gmail-Hooks festzulegen, fügen Sie
hooks.gmail.model / hooks.gmail.thinking in Ihrer Konfiguration hinzu:
- Pro Hook überschreiben
model/thinkingin der Zuordnung weiterhin diese Standardwerte. - Fallback-Reihenfolge:
hooks.gmail.model→agents.defaults.model.fallbacks→ primär (Auth/Rate-Limit/Timeouts). - Wenn
agents.defaults.modelsgesetzt ist, muss das Gmail-Modell in der Allowlist enthalten sein. - Gmail-Hook-Inhalte werden standardmäßig mit Sicherheitsgrenzen für externe Inhalte umschlossen.
Zum Deaktivieren (gefährlich) setzen Sie
hooks.gmail.allowUnsafeExternalContent: true.
hooks.mappings oder ein JS/TS-Transformationsmodul
unter hooks.transformsDir hinzu (siehe Webhooks).
Assistent (empfohlen)
Verwenden Sie den OpenClaw-Helfer, um alles miteinander zu verdrahten (installiert Abhängigkeiten unter macOS via brew):- Verwendet Tailscale Funnel für den öffentlichen Push-Endpunkt.
- Schreibt die
hooks.gmail-Konfiguration füropenclaw webhooks gmail run. - Aktiviert das Gmail-Hook-Preset (
hooks.presets: ["gmail"]).
tailscale.mode aktiviert ist, setzt OpenClaw automatisch
hooks.gmail.serve.path auf / und hält den öffentlichen Pfad bei
hooks.gmail.tailscale.path (Standard /gmail-pubsub), da Tailscale
das gesetzte Pfadpräfix vor dem Proxying entfernt.
Wenn das Backend den präfixierten Pfad erhalten soll, setzen Sie
hooks.gmail.tailscale.target (oder --tailscale-target) auf eine vollständige URL wie
http://127.0.0.1:8788/gmail-pubsub und stimmen Sie hooks.gmail.serve.path ab.
Möchten Sie einen benutzerdefinierten Endpunkt? Verwenden Sie --push-endpoint <url> oder --tailscale off.
Plattform-Hinweis: Unter macOS installiert der Assistent gcloud, gogcli und tailscale
über Homebrew; unter Linux installieren Sie diese zuerst manuell.
Gateway-Autostart (empfohlen):
- Wenn
hooks.enabled=trueundhooks.gmail.accountgesetzt ist, startet das Gatewaygog gmail watch servebeim Booten und erneuert den Watch automatisch. - Setzen Sie
OPENCLAW_SKIP_GMAIL_WATCHER=1, um sich abzumelden (nützlich, wenn Sie den Daemon selbst ausführen). - Führen Sie den manuellen Daemon nicht gleichzeitig aus, sonst kommt es zu
listen tcp 127.0.0.1:8788: bind: address already in use.
gog gmail watch serve + Auto-Erneuerung):
Einmalige Einrichtung
- Wählen Sie das GCP-Projekt aus, dem der OAuth-Client gehört, der von
gogverwendet wird.
- APIs aktivieren:
- Thema erstellen:
- Gmail-Push das Veröffentlichen erlauben:
Watch starten
history_id aus der Ausgabe (für Debugging).
Push-Handler ausführen
Lokales Beispiel (Shared-Token-Auth):--tokenschützt den Push-Endpunkt (x-gog-tokenoder?token=).--hook-urlzeigt auf OpenClaw/hooks/gmail(zugeordnet; isolierter Lauf + Zusammenfassung an den Hauptlauf).--include-bodyund--max-bytessteuern den an OpenClaw gesendeten Textausschnitt.
openclaw webhooks gmail run kapselt denselben Ablauf und erneuert den Watch automatisch.
Handler exponieren (fortgeschritten, nicht unterstützt)
Wenn Sie einen Nicht-Tailscale-Tunnel benötigen, verdrahten Sie ihn manuell und verwenden Sie die öffentliche URL in der Push- Subscription (nicht unterstützt, ohne Schutzmechanismen):Test
Senden Sie eine Nachricht an den überwachten Posteingang:Fehlerbehebung
Invalid topicName: Projekt-Mismatch (Thema nicht im OAuth-Client-Projekt).User not authorized: fehlendesroles/pubsub.publisherauf dem Thema.- Leere Nachrichten: Gmail-Push stellt nur
historyIdbereit; Abruf übergog gmail history.