Gmail Pub/Sub -> OpenClaw
Mục tiêu: Gmail watch -> Pub/Sub push ->gog gmail watch serve -> webhook OpenClaw.
Điều kiện tiên quyết
gcloudđã được cài đặt và đăng nhập (hướng dẫn cài đặt).gog(gogcli) đã được cài đặt và ủy quyền cho tài khoản Gmail (gogcli.sh).- Đã bật hook OpenClaw (xem Webhooks).
tailscaleđã đăng nhập (tailscale.com). Cấu hình được hỗ trợ sử dụng Tailscale Funnel cho endpoint HTTPS công khai. Các dịch vụ đường hầm khác có thể hoạt động, nhưng là DIY/không được hỗ trợ và yêu cầu cấu hình thủ công. Hiện tại, Tailscale là thứ chúng tôi hỗ trợ.
deliver + tùy chọn channel/to:
channel + to. Nếu không, channel: "last"
sẽ dùng tuyến gửi gần nhất (fallback về WhatsApp).
Để buộc dùng model rẻ hơn cho các lần chạy Gmail, hãy đặt model trong mapping
(provider/model hoặc alias). Nếu bạn áp dụng agents.defaults.models, hãy bao gồm nó ở đó.
Để đặt mô hình mặc định và mức độ suy nghĩ riêng cho hook Gmail, thêm
hooks.gmail.model / hooks.gmail.thinking trong cấu hình của bạn:
model/thinkingtheo từng hook trong ánh xạ vẫn ghi đè các giá trị mặc định này.- Thứ tự fallback:
hooks.gmail.model→agents.defaults.model.fallbacks→ chính (xác thực/giới hạn tốc độ/timeout). - Nếu đặt
agents.defaults.models, mô hình Gmail phải nằm trong allowlist. -
- Nội dung hook Gmail mặc định được bọc trong các ranh giới an toàn cho external-content.
Để vô hiệu hóa (nguy hiểm), hãy đặt
hooks.gmail.allowUnsafeExternalContent: true.
- Nội dung hook Gmail mặc định được bọc trong các ranh giới an toàn cho external-content.
Để vô hiệu hóa (nguy hiểm), hãy đặt
hooks.mappings hoặc một module transform JS/TS
dưới hooks.transformsDir (xem Webhooks).
Wizard (khuyến nghị)
Dùng trợ giúp OpenClaw để nối mọi thứ với nhau (cài deps trên macOS qua brew):- Dùng Tailscale Funnel cho endpoint push công khai.
- Ghi cấu hình
hooks.gmailchoopenclaw webhooks gmail run. - Bật preset hook Gmail (
hooks.presets: ["gmail"]).
tailscale.mode, OpenClaw tự động đặt
hooks.gmail.serve.path thành / và giữ path công khai tại
hooks.gmail.tailscale.path (mặc định /gmail-pubsub) vì Tailscale
loại bỏ tiền tố set-path trước khi proxy.
3. Nếu bạn cần backend nhận được đường dẫn có tiền tố, hãy đặt hooks.gmail.tailscale.target (hoặc --tailscale-target) thành một URL đầy đủ như http://127.0.0.1:8788/gmail-pubsub và khớp với hooks.gmail.serve.path.
Muốn một endpoint tùy chỉnh? Sử dụng --push-endpoint <url> hoặc --tailscale off.
Ghi chú nền tảng: trên macOS, wizard cài gcloud, gogcli và tailscale
qua Homebrew; trên Linux, hãy cài thủ công trước.
Tự động khởi động Gateway (khuyến nghị):
- Khi đặt
hooks.enabled=truevàhooks.gmail.account, Gateway khởi độnggog gmail watch servekhi boot và tự động gia hạn watch. - Đặt
OPENCLAW_SKIP_GMAIL_WATCHER=1để từ chối (hữu ích nếu bạn tự chạy daemon). - Không chạy daemon thủ công cùng lúc, nếu không bạn sẽ gặp
listen tcp 127.0.0.1:8788: bind: address already in use.
gog gmail watch serve + tự gia hạn):
Thiết lập một lần
- Chọn dự án GCP sở hữu OAuth client được
gogsử dụng.
- Bật các API:
- Tạo topic:
- Cho phép Gmail push xuất bản:
Bắt đầu watch
history_id từ đầu ra (để gỡ lỗi).
Chạy trình xử lý push
Ví dụ cục bộ (xác thực bằng token dùng chung):--tokenbảo vệ endpoint push (x-gog-tokenhoặc?token=).--hook-urltrỏ tới OpenClaw/hooks/gmail(đã ánh xạ; chạy cô lập + tóm tắt về chính).--include-bodyvà--max-bytesđiều khiển đoạn body gửi tới OpenClaw.
openclaw webhooks gmail run bao bọc cùng luồng và tự động gia hạn watch.
Phơi bày handler (nâng cao, không được hỗ trợ)
Nếu bạn cần tunnel không phải Tailscale, hãy tự nối thủ công và dùng URL công khai trong subscription push (không được hỗ trợ, không có guardrails):Kiểm thử
Gửi một email tới hộp thư đang được theo dõi:Xử lý sự cố
Invalid topicName: lệch dự án (topic không nằm trong dự án OAuth client).User not authorized: thiếuroles/pubsub.publishertrên topic.- Tin nhắn rỗng: Gmail push chỉ cung cấp
historyId; hãy lấy quagog gmail history.