Gmail Pub/Sub -> OpenClaw
Cel: obserwacja Gmail → push Pub/Sub →gog gmail watch serve → webhook OpenClaw.
Prereqs
- Zainstalowane i zalogowane
gcloud(instrukcja instalacji). - Zainstalowane i autoryzowane
gog(gogcli) dla konta Gmail (gogcli.sh). - Włączone hooki OpenClaw (zobacz Webhooks).
- Zalogowane
tailscale(tailscale.com). Wspierana konfiguracja używa Tailscale Funnel jako publicznego punktu końcowego HTTPS. Inne usługi tunelowania mogą działać, ale są DIY/nieobsługiwane i wymagają ręcznego okablowania. Obecnie wspieramy Tailscale.
deliver + opcjonalnie channel/to:
channel + to. W przeciwnym razie channel: "last"
używa ostatniej trasy dostarczenia (z fallbackiem do WhatsApp).
Aby wymusić tańszy model dla uruchomień Gmail, ustaw model w mapowaniu
(provider/model lub alias). Jeśli wymuszasz agents.defaults.models, uwzględnij go tam.
Aby ustawić domyślny model i poziom „thinking” specyficznie dla hooków Gmail, dodaj
hooks.gmail.model / hooks.gmail.thinking w konfiguracji:
- Per-hook
model/thinkingw mapowaniu nadal nadpisuje te wartości domyślne. - Kolejność fallbacku:
hooks.gmail.model→agents.defaults.model.fallbacks→ główny (uwierzytelnianie/limity/timeouty). - Jeśli ustawiono
agents.defaults.models, model Gmail musi znajdować się na liście dozwolonych. - Zawartość hooka Gmail jest domyślnie opakowana granicami bezpieczeństwa treści zewnętrznych.
Aby wyłączyć (niebezpieczne), ustaw
hooks.gmail.allowUnsafeExternalContent: true.
hooks.mappings lub moduł transformacji JS/TS
pod hooks.transformsDir (zobacz Webhooks).
Kreator (zalecane)
Użyj pomocnika OpenClaw, aby połączyć wszystko razem (instaluje zależności na macOS przez brew):- Używa Tailscale Funnel jako publicznego punktu końcowego push.
- Zapisuje konfigurację
hooks.gmaildlaopenclaw webhooks gmail run. - Włącza preset hooka Gmail (
hooks.presets: ["gmail"]).
tailscale.mode, OpenClaw automatycznie ustawia
hooks.gmail.serve.path na / i utrzymuje publiczną ścieżkę na
hooks.gmail.tailscale.path (domyślnie /gmail-pubsub), ponieważ Tailscale
usuwa prefiks set-path przed proxy.
Jeśli backend ma otrzymywać ścieżkę z prefiksem, ustaw
hooks.gmail.tailscale.target (lub --tailscale-target) na pełny URL, np. http://127.0.0.1:8788/gmail-pubsub, i dopasuj hooks.gmail.serve.path.
Chcesz niestandardowy punkt końcowy? Użyj --push-endpoint <url> lub --tailscale off.
Uwaga platformowa: na macOS kreator instaluje gcloud, gogcli i tailscale
przez Homebrew; na Linuxie zainstaluj je wcześniej ręcznie.
Automatyczny start Gateway (zalecane):
- Gdy ustawione są
hooks.enabled=trueihooks.gmail.account, Gateway uruchamiagog gmail watch serveprzy starcie i automatycznie odnawia watch. - Ustaw
OPENCLAW_SKIP_GMAIL_WATCHER=1, aby zrezygnować (przydatne, jeśli uruchamiasz demona samodzielnie). - Nie uruchamiaj jednocześnie ręcznego demona, bo natrafisz na
listen tcp 127.0.0.1:8788: bind: address already in use.
gog gmail watch serve + auto-odnawianie):
Konfiguracja jednorazowa
- Wybierz projekt GCP będący właścicielem klienta OAuth używanego przez
gog.
- Włącz API:
- Utwórz temat:
- Zezwól Gmail push na publikowanie:
Uruchom watch
history_id z wyjścia (do debugowania).
Uruchom handler push
Przykład lokalny (uwierzytelnianie tokenem współdzielonym):--tokenchroni punkt końcowy push (x-gog-tokenlub?token=).--hook-urlwskazuje na OpenClaw/hooks/gmail(zmapowane; izolowane uruchomienie + podsumowanie do głównego).--include-bodyi--max-byteskontrolują fragment treści wysyłany do OpenClaw.
openclaw webhooks gmail run opakowuje ten sam przepływ i automatycznie odnawia watch.
Wystawienie handlera (zaawansowane, nieobsługiwane)
Jeśli potrzebujesz tunelu innego niż Tailscale, okabluj go ręcznie i użyj publicznego URL w subskrypcji push (nieobsługiwane, bez zabezpieczeń):Test
Wyślij wiadomość do obserwowanej skrzynki:Rozwiązywanie problemów
Invalid topicName: niezgodność projektu (temat nie znajduje się w projekcie klienta OAuth).User not authorized: brakroles/pubsub.publisherna temacie.- Puste wiadomości: push Gmail dostarcza tylko
historyId; pobierz przezgog gmail history.