Gmail Pub/Sub -> OpenClaw¶
Mål: Gmail watch -> Pub/Sub push -> gog gmail watch serve -> OpenClaw-webhook.
Förutsättningar¶
gcloudinstallerat och inloggat (installationsguide).gog(gogcli) installerat och auktoriserat för Gmail-kontot (gogcli.sh).- OpenClaw-hooks aktiverade (se Webhooks).
tailscaleinloggad (tailscale.com). Konfigurationen som stöds använder Tailscale Funnel för den offentliga HTTPS-slutpunkten. Andra tunneltjänster kan fungera, men är DIY/ej stödda och kräver manuell ledning. Just nu är Tailscale vad vi stöder.
Exempel på hook-konfig (aktivera Gmail-förinställd mappning):
{
hooks: {
enabled: true,
token: "OPENCLAW_HOOK_TOKEN",
path: "/hooks",
presets: ["gmail"],
},
}
För att leverera Gmail-sammanfattningen till en chattkanal, åsidosätt förinställningen med en mappning
som sätter deliver + valfri channel/to:
{
hooks: {
enabled: true,
token: "OPENCLAW_HOOK_TOKEN",
presets: ["gmail"],
mappings: [
{
match: { path: "gmail" },
action: "agent",
wakeMode: "now",
name: "Gmail",
sessionKey: "hook:gmail:{{messages[0].id}}",
messageTemplate: "New email from {{messages[0].from}}\nSubject: {{messages[0].subject}}\n{{messages[0].snippet}}\n{{messages[0].body}}",
model: "openai/gpt-5.2-mini",
deliver: true,
channel: "last",
// to: "+15551234567"
},
],
},
}
Om du vill ha en fast kanal, sätt channel + to. Annars channel: "last"
använder den senaste leveransvägen (faller tillbaka till WhatsApp).
För att tvinga fram en billigare modell för Gmail-körningar, sätt model i kartläggningen
(provider/model eller alias). Om du genomdriver agents.defaults.models, inkludera den där.
För att sätta en standardmodell och tänkenivå specifikt för Gmail-hooks, lägg till
hooks.gmail.model / hooks.gmail.thinking i din konfig:
{
hooks: {
gmail: {
model: "openrouter/meta-llama/llama-3.3-70b-instruct:free",
thinking: "off",
},
},
}
Noteringar:
- Per-hook
model/thinkingi mappningen åsidosätter fortfarande dessa standarder. - Reservordning:
hooks.gmail.model→agents.defaults.model.fallbacks→ primär (auth/rate-limit/timeouts). - Om
agents.defaults.modelsär satt måste Gmail-modellen finnas i tillåtelselistan. - Gmail-hook innehåll är insvept med externa säkerhetsgränser för innehåll som standard.
För att inaktivera (farlig), sätt
hooks.gmail.allowUnsafeExternalInnehåll: true.
För att anpassa payload-hanteringen ytterligare, lägg till hooks.mappings eller en JS/TS-transformmodul
under hooks.transformsDir (se Webhooks).
Guide (rekommenderas)¶
Använd OpenClaw-hjälparen för att koppla ihop allt (installerar beroenden på macOS via brew):
openclaw webhooks gmail setup \
--account openclaw@gmail.com
Standarder:
- Använder Tailscale Funnel för den publika push-slutpunkten.
- Skriver
hooks.gmail-konfig föropenclaw webhooks gmail run. - Aktiverar Gmail-hook-förinställningen (
hooks.presets: ["gmail"]).
Sökvägskommentaren: när tailscale.mode är aktiverat, sätter OpenClaw automatiskt
hooks.gmail.serve.path till / och behåller den offentliga sökvägen på
hooks. mail.tailscale.path (standard /gmail-pubsub) eftersom Tailscale
tar bort set-path-prefixet innan proxying.
Om du behöver backend för att få den prefixerade sökvägen anger du
hooks.gmail.tailscale.target (eller --tailscale-target) till en fullständig URL som
http://127.0.0.1:8788/gmail-pubsub och matchar hooks.gmail.serve.path.
Vill du ha en anpassad slutpunkt? Använd --push-endpoint <url> eller--tailscale off.
Plattformsnotis: på macOS installerar guiden gcloud, gogcli och tailscale
via Homebrew; på Linux installerar du dem manuellt först.
Gateway auto-start (rekommenderas):
- När
hooks.enabled=trueochhooks.gmail.accountär satt startar Gatewaygog gmail watch servevid uppstart och förnyar watch automatiskt. - Sätt
OPENCLAW_SKIP_GMAIL_WATCHER=1för att välja bort (användbart om du kör daemonen själv). - Kör inte den manuella daemonen samtidigt, annars får du
listen tcp 127.0.0.1:8788: bind: address already in use.
Manuell daemon (startar gog gmail watch serve + auto-förnyelse):
openclaw webhooks gmail run
Engångsinställning¶
- Välj GCP-projektet som äger OAuth-klienten som används av
gog.
gcloud auth login
gcloud config set project <project-id>
Obs: Gmail watch kräver att Pub/Sub-ämnet finns i samma projekt som OAuth-klienten.
- Aktivera API:er:
gcloud services enable gmail.googleapis.com pubsub.googleapis.com
- Skapa ett ämne:
gcloud pubsub topics create gog-gmail-watch
- Tillåt att Gmail-push publicerar:
gcloud pubsub topics add-iam-policy-binding gog-gmail-watch \
--member=serviceAccount:gmail-api-push@system.gserviceaccount.com \
--role=roles/pubsub.publisher
Starta watch¶
gog gmail watch start \
--account openclaw@gmail.com \
--label INBOX \
--topic projects/<project-id>/topics/gog-gmail-watch
Spara history_id från utdata (för felsökning).
Kör push-hanteraren¶
Lokalt exempel (delad token-auth):
gog gmail watch serve \
--account openclaw@gmail.com \
--bind 127.0.0.1 \
--port 8788 \
--path /gmail-pubsub \
--token <shared> \
--hook-url http://127.0.0.1:18789/hooks/gmail \
--hook-token OPENCLAW_HOOK_TOKEN \
--include-body \
--max-bytes 20000
Noteringar:
--tokenskyddar push-slutpunkten (x-gog-tokeneller?token=).--hook-urlpekar på OpenClaw/hooks/gmail(mappad; isolerad körning + sammanfattning till huvud).--include-bodyoch--max-bytesstyr body-snippet som skickas till OpenClaw.
Rekommenderat: openclaw webhooks gmail run omsluter samma flöde och förnyar watch automatiskt.
Exponera hanteraren (avancerat, ej stödd)¶
Om du behöver en icke-Tailscale-tunnel, koppla den manuellt och använd den publika URL:en i push- prenumerationen (ej stödd, inga skyddsräcken):
cloudflared tunnel --url http://127.0.0.1:8788 --no-autoupdate
Använd den genererade URL:en som push-slutpunkt:
gcloud pubsub subscriptions create gog-gmail-watch-push \
--topic gog-gmail-watch \
--push-endpoint "https://<public-url>/gmail-pubsub?token=<shared>"
Produktion: använd en stabil HTTPS-slutpunkt och konfigurera Pub/Sub OIDC JWT, kör sedan:
gog gmail watch serve --verify-oidc --oidc-email <svc@...>
Test¶
Skicka ett meddelande till den bevakade inkorgen:
gog gmail send \
--account openclaw@gmail.com \
--to openclaw@gmail.com \
--subject "watch test" \
--body "ping"
Kontrollera watch-status och historik:
gog gmail watch status --account openclaw@gmail.com
gog gmail history --account openclaw@gmail.com --since <historyId>
Felsökning¶
Invalid topicName: projektmatchningsfel (ämnet finns inte i OAuth-klientens projekt).User not authorized: saknarroles/pubsub.publisherpå ämnet.- Tomma meddelanden: Gmail-push tillhandahåller bara
historyId; hämta viagog gmail history.
Rensa upp¶
gog gmail watch stop --account openclaw@gmail.com
gcloud pubsub subscriptions delete gog-gmail-watch-push
gcloud pubsub topics delete gog-gmail-watch