Asosiy tarkibga o'tish

Gmail Pub/Sub -> OpenClaw

Maqsad: Gmail watch -> Pub/Sub push -> gog gmail watch serve -> OpenClaw webhook.

Talablar

  • gcloud o‘rnatilgan va tizimga kirilgan (install guide).
  • gog (gogcli) o‘rnatilgan va Gmail akkaunti uchun ruxsat berilgan (gogcli.sh).
  • OpenClaw hook’lari yoqilgan (qarang: Webhooks).
  • tailscale tizimga kirilgan (tailscale.com). Qo‘llab-quvvatlanadigan sozlama ommaviy HTTPS endpoint uchun Tailscale Funnel’dan foydalanadi. Other tunnel services can work, but are DIY/unsupported and require manual wiring. Hozirda biz qo‘llab-quvvatlaydigan narsa — Tailscale.
Misol hook konfiguratsiyasi (Gmail preset mapping’ni yoqish):
{
  hooks: {
    enabled: true,
    token: "OPENCLAW_HOOK_TOKEN",
    path: "/hooks",
    presets: ["gmail"],
  },
}
Gmail xulosasini chat yuzasiga yetkazish uchun preset’ni deliver va ixtiyoriy channel/to ni o‘rnatadigan mapping bilan override qiling:
{
  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"
      },
    ],
  },
}
Agar sobit kanal kerak bo‘lsa, channel + to ni o‘rnating. Aks holda channel: "last" oxirgi yetkazib berish marshrutidan foydalanadi (WhatsApp’ga qaytadi). Gmail ishga tushirishlari uchun arzonroq modelni majburlash uchun mapping’da model ni o‘rnating (provider/model yoki alias). Agar agents.defaults.models ni majburiy qilgan bo‘lsangiz, uni o‘sha yerga kiriting. Gmail hook’lari uchun aniq standart model va thinking darajasini sozlash uchun konfiguratsiyaga hooks.gmail.model / hooks.gmail.thinking ni qo‘shing:
{
  hooks: {
    gmail: {
      model: "openrouter/meta-llama/llama-3.3-70b-instruct:free",
      thinking: "off",
    },
  },
}
Eslatmalar:
  • Mapping’dagi per-hook model/thinking baribir bu standartlarni override qiladi.
  • Fallback tartibi: hooks.gmail.modelagents.defaults.model.fallbacks → asosiy (auth/rate-limit/timeouts).
  • Agar agents.defaults.models o‘rnatilgan bo‘lsa, Gmail modeli allowlist’da bo‘lishi kerak.
  • Gmail hook kontenti odatda tashqi-kontent xavfsizlik chegaralari bilan o‘raladi. O‘chirish uchun (xavfli), hooks.gmail.allowUnsafeExternalContent: true ni o‘rnating.
Payload ishlov berishni yanada moslashtirish uchun hooks.mappings yoki JS/TS transform modulini hooks.transformsDir ostiga qo‘shing (Webhooks ga qarang).

Wizard (tavsiya etiladi)

Hammasini birga ulash uchun OpenClaw helper’dan foydalaning (macOS’da brew orqali bog‘liqliklarni o‘rnatadi):
openclaw webhooks gmail setup \
  --account [email protected]
Standartlar:
  • Ommaviy push endpoint uchun Tailscale Funnel’dan foydalanadi.
  • openclaw webhooks gmail run uchun hooks.gmail konfiguratsiyasini yozadi.
  • Gmail hook preset’ini yoqadi (hooks.presets: ["gmail"]).
Yo‘l eslatmasi: tailscale.mode yoqilganida, OpenClaw avtomatik ravishda hooks.gmail.serve.path ni / ga o‘rnatadi va ommaviy yo‘lni hooks.gmail.tailscale.path (standart /gmail-pubsub) da saqlaydi, chunki Tailscale proxy qilishdan oldin set-path prefiksini olib tashlaydi. Agar backend prefiksli yo‘lni qabul qilishi kerak bo‘lsa, hooks.gmail.tailscale.target (yoki --tailscale-target) ni http://127.0.0.1:8788/gmail-pubsub kabi to‘liq URL’ga o‘rnating va hooks.gmail.serve.path bilan moslang. Maxsus endpoint xohlaysizmi? --push-endpoint <url> dan foydalaning yoki --tailscale off qiling. Platforma eslatmasi: macOS’da wizard gcloud, gogcli va tailscale ni Homebrew orqali o‘rnatadi; Linux’da esa avval ularni qo‘lda o‘rnating. Gateway’ni avtomatik ishga tushirish (tavsiya etiladi):
  • hooks.enabled=true va hooks.gmail.account o‘rnatilganda, Gateway yuklanishda gog gmail watch serve ni ishga tushiradi va watch’ni avtomatik yangilaydi.
  • Chiqib ketish uchun OPENCLAW_SKIP_GMAIL_WATCHER=1 ni o‘rnating (daemon’ni o‘zingiz ishga tushirsangiz foydali).
  • Qo‘lda ishga tushirilgan daemon’ni bir vaqtda ishlatmang, aks holda listen tcp 127.0.0.1:8788: bind: address already in use xatosiga duch kelasiz.
Qo‘lda daemon ( gog gmail watch serve + auto-renew’ni ishga tushiradi):
openclaw webhooks gmail run

Bir martalik sozlash

  1. gog ishlatadigan OAuth client’ga egalik qiluvchi GCP loyihasini tanlang.
gcloud auth login
gcloud config set project <project-id>
Eslatma: Gmail watch Pub/Sub mavzusi OAuth client bilan bir xil loyihada bo‘lishini talab qiladi.
  1. API’larni yoqing:
gcloud services enable gmail.googleapis.com pubsub.googleapis.com
  1. Mavzu yarating:
gcloud pubsub topics create gog-gmail-watch
  1. Gmail push’ga nashr etishga ruxsat bering:
gcloud pubsub topics add-iam-policy-binding gog-gmail-watch \
  --member=serviceAccount:[email protected] \
  --role=roles/pubsub.publisher

Watch’ni boshlang

gog gmail watch start \
  --account [email protected] \
  --label INBOX \
  --topic projects/<project-id>/topics/gog-gmail-watch
Chiqarishdagi history_id ni saqlab qo‘ying (debug uchun).

Push handler’ni ishga tushiring

  1. Mahalliy misol (umumiy token autentifikatsiyasi):
2. gog gmail watch serve \
—account [email protected] \
  • —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
3. Eslatmalar:
  1. --token push endpointini himoya qiladi (x-gog-token yoki ?token=).
5. `--hook-url` OpenClaw `/hooks/gmail` ga ishora qiladi (moslangan; izolyatsiyalangan ishga tushirish + asosiyga xulosa).

6. --include-body va --max-bytes OpenClaw’ga yuboriladigan body parchalarini boshqaradi.

  1. Tavsiya etiladi: openclaw webhooks gmail run xuddi shu oqimni o‘rab beradi va watch’ni avtomatik yangilaydi.
8. Handler’ni ochiq qilish (ilg‘or, qo‘llab-quvvatlanmaydi)
  1. Agar sizga Tailscale bo‘lmagan tunnel kerak bo‘lsa, uni qo‘lda ulang va push obunasida umumiy URL’dan foydalaning (qo‘llab-quvvatlanmaydi, himoya mexanizmlarisiz):
10. cloudflared tunnel --url http://127.0.0.1:8788 --no-autoupdate

11. Yaratilgan URL’ni push endpoint sifatida foydalaning:

    1. gcloud pubsub subscriptions create gog-gmail-watch-push \
  • —topic gog-gmail-watch \
  • —push-endpoint “https://<public-url>/gmail-pubsub?token=<shared>“

13. Prodakshen: barqaror HTTPS endpointdan foydalaning va Pub/Sub OIDC JWT’ni sozlang, so‘ng ishga tushiring:

14. gog gmail watch serve --verify-oidc --oidc-email <svc@...>