Asosiy tarkibga o'tish

Google Chat (Chat API)

Holati: Google Chat API webhooklari (faqat HTTP) orqali DM va space’lar uchun tayyor.

Tezkor sozlash (boshlovchilar uchun)

  1. Google Cloud loyihasini yarating va Google Chat APIni yoqing.
  2. Service Account yarating:
    • Create Credentials > Service Account tugmasini bosing.
    • Istalgan nom bering (masalan, openclaw-chat).
    • Ruxsatlarni bo‘sh qoldiring (Continue bosing).
    • Kirish huquqiga ega prinsiplalarni bo‘sh qoldiring (Done bosing).
  3. JSON Key yarating va yuklab oling:
    • Service accountlar ro‘yxatida hozir yaratganingizni bosing.
    • Keys bo‘limiga o‘ting.
    • Add Key > Create new key ni bosing.
    • JSON ni tanlang va Create ni bosing.
  4. Yuklab olingan JSON faylni gateway hostingizda saqlang (masalan, ~/.openclaw/googlechat-service-account.json).
  5. Google Cloud Console Chat Configuration sahifasida Google Chat ilovasini yarating:
    • Application info bo‘limini to‘ldiring:
      • App name: (masalan, OpenClaw)
      • Avatar URL: (masalan, https://openclaw.ai/logo.png)
      • Description: (masalan, Personal AI Assistant)
    • Interactive features ni yoqing.
    • Functionality ostida Join spaces and group conversations ni belgilang.
    • Connection settings ostida HTTP endpoint URL ni tanlang.
    • Triggers ostida Use a common HTTP endpoint URL for all triggers ni tanlang va qiymat sifatida gateway’ning ommaviy URL manziliga /googlechat qo‘shib kiriting.
      • Maslahat: Gateway’ning ommaviy URL manzilini topish uchun openclaw status ni ishga tushiring.
    • Visibility ostida Make this Chat app available to specific people and groups in <Your Domain> ni belgilang.
    • Matn maydoniga emailingizni kiriting (masalan, [email protected]).
    • Pastdagi Save tugmasini bosing.
  6. Ilova holatini yoqing:
    • Saqlagandan so‘ng, sahifani yangilang.
    • App status bo‘limini toping (odatda saqlagandan keyin yuqori yoki pastki qismda paydo bo‘ladi).
    • Holatini Live - available to users ga o‘zgartiring.
    • Yana Save ni bosing.
  7. OpenClaw’ni service account yo‘li + webhook audience bilan sozlang:
    • Muhit o‘zgaruvchisi: GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json
    • Yoki konfiguratsiyada: channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
  8. Webhook audience turini va qiymatini belgilang (Chat ilovasi sozlamalariga mos bo‘lishi kerak).
  9. Start the gateway. Google Chat will POST to your webhook path.

Google Chat’ga qo‘shish

Gateway ishga tushgan va emailingiz visibility ro‘yxatiga qo‘shilgan bo‘lsa:
  1. Google Chat ga o‘ting.
  2. Direct Messages yonidagi + (plus) belgisini bosing.
  3. Qidiruv satriga (odatda odam qo‘shadigan joy) Google Cloud Console’da sozlagan App name ni kiriting.
    • 4. Eslatma: Bot “Marketplace” ko‘rish ro‘yxatida ko‘rinmaydi, chunki u xususiy ilova. 5. Uni nomi bo‘yicha qidirishingiz kerak.
  4. Natijalardan botingizni tanlang.
  5. 1:1 suhbatni boshlash uchun Add yoki Chat ni bosing.
  6. Assistentni ishga tushirish uchun “Hello” deb yozing!

Ommaviy URL (faqat Webhook)

  1. Google Chat webhook’lari ommaviy HTTPS endpoint’ni talab qiladi. 11. Xavfsizlik uchun, faqat /googlechat yo‘lini internetga oching. 12. OpenClaw boshqaruv paneli va boshqa maxfiy endpoint’larni xususiy tarmog‘ingizda saqlang.

Variant A: Tailscale Funnel (Tavsiya etiladi)

  1. Xususiy boshqaruv paneli uchun Tailscale Serve’dan, ommaviy webhook yo‘li uchun esa Funnel’dan foydalaning. 15. Bu / yo‘lini xususiy holda qoldirib, faqat /googlechat ni ochadi.
  2. Gateway qaysi manzilga bog‘langanini tekshiring:
    ss -tlnp | grep 18789
    
    IP manzilni yozib oling (masalan, 127.0.0.1, 0.0.0.0 yoki 100.x.x.x kabi Tailscale IP).
  3. Dashboard’ni faqat tailnet uchun oching (8443 port):
    # Agar localhost (127.0.0.1 yoki 0.0.0.0) ga bog‘langan bo‘lsa:
    tailscale serve --bg --https 8443 http://127.0.0.1:18789
    
    # Agar faqat Tailscale IP (masalan, 100.106.161.80) ga bog‘langan bo‘lsa:
    tailscale serve --bg --https 8443 http://100.106.161.80:18789
    
  4. Faqat webhook yo‘lini ommaviy oching:
    # Agar localhost (127.0.0.1 yoki 0.0.0.0) ga bog‘langan bo‘lsa:
    tailscale funnel --bg --set-path /googlechat http://127.0.0.1:18789/googlechat
    
    # Agar faqat Tailscale IP (masalan, 100.106.161.80) ga bog‘langan bo‘lsa:
    tailscale funnel --bg --set-path /googlechat http://100.106.161.80:18789/googlechat
    
  5. Node uchun Funnel ruxsatini tasdiqlang: Agar so‘ralsa, chiqishda ko‘rsatilgan avtorizatsiya URL manziliga o‘ting va tailnet siyosatida ushbu node uchun Funnel’ni yoqing.
  6. Sozlamani tekshiring:
    tailscale serve status
    tailscale funnel status
    
  1. Ommaviy webhook URL’ingiz quyidagicha bo‘ladi: https://<node-name>.<tailnet>27. .ts.net/googlechat
  1. Xususiy boshqaruv paneli faqat tailnet ichida qoladi: https://<node-name>.<tailnet>29. .ts.net:8443/
Google Chat ilovasi sozlamasida ommaviy URL’ni (:8443siz) ishlating.
  1. Eslatma: Ushbu sozlama qayta yuklashlardan keyin ham saqlanib qoladi. 32. Keyinroq olib tashlash uchun tailscale funnel reset va tailscale serve reset buyruqlarini bajaring.

Variant B: Reverse Proxy (Caddy)

Agar Caddy kabi reverse proxy ishlatsangiz, faqat kerakli yo‘lni proksi qiling:
your-domain.com {
    reverse_proxy /googlechat* localhost:18789
}
Ushbu konfiguratsiyada your-domain.com/ ga kelgan so‘rovlar e’tiborga olinmaydi yoki 404 qaytaradi, your-domain.com/googlechat esa xavfsiz tarzda OpenClaw’ga yo‘naltiriladi.

Variant C: Cloudflare Tunnel

Tunnel ingress qoidalarini faqat webhook yo‘lini yo‘naltiradigan qilib sozlang:
  • Yo‘l: /googlechat -> http://localhost:18789/googlechat
  • Standart qoida: HTTP 404 (Topilmadi)

Qanday ishlaydi

    1. Google Chat gateway’ga webhook POST’larini yuboradi. 43. Har bir so‘rov Authorization: Bearer <token> sarlavhasini o‘z ichiga oladi.
  1. OpenClaw tokenni sozlangan audienceType va audience bilan tekshiradi:
    • audienceType: "app-url" → audience — sizning HTTPS webhook URL manzilingiz.
    • audienceType: "project-number" → audience — Cloud loyiha raqami.
  2. Xabarlar space bo‘yicha marshrutlanadi:
    • DM’lar uchun sessiya kaliti agent:<agentId>:googlechat:dm:<spaceId>.
    • Space’lar uchun sessiya kaliti agent:<agentId>:googlechat:group:<spaceId>.
    1. DM’ga kirish sukut bo‘yicha pairing orqali amalga oshiriladi. Noma’lum jo‘natuvchilar juftlash kodi oladi; quyidagicha tasdiqlang:
    • openclaw pairing approve googlechat <code>
  3. Guruh bo‘shliqlari sukut bo‘yicha @-eslatmani talab qiladi. Agar eslatmani aniqlash uchun ilovaning foydalanuvchi nomi kerak bo‘lsa, botUser dan foydalaning.

Manzillar (Targets)

Yetkazib berish va allowlist uchun quyidagi identifikatorlardan foydalaning:
  • Shaxsiy xabarlar: users/<userId> (tavsiya etiladi) yoki oddiy email [email protected] (o‘zgaruvchan principal).
  • Eskirgan: users/<email> email allowlist emas, balki user id sifatida talqin qilinadi.
  • Space’lar: spaces/<spaceId>.

Muhim konfiguratsiya nuqtalari

{
  channels: {
    googlechat: {
      enabled: true,
      serviceAccountFile: "/path/to/service-account.json",
      audienceType: "app-url",
      audience: "https://gateway.example.com/googlechat",
      webhookPath: "/googlechat",
      botUser: "users/1234567890", // ixtiyoriy; mention aniqlashga yordam beradi
      dm: {
        policy: "pairing",
        allowFrom: ["users/1234567890", "[email protected]"],
      },
      groupPolicy: "allowlist",
      groups: {
        "spaces/AAAA": {
          allow: true,
          requireMention: true,
          users: ["users/1234567890"],
          systemPrompt: "Short answers only.",
        },
      },
      actions: { reactions: true },
      typingIndicator: "message",
      mediaMaxMb: 20,
    },
  },
}
Izohlar:
  • Service account ma’lumotlari serviceAccount (JSON string) orqali ham bevosita uzatilishi mumkin.
  • Agar webhookPath ko‘rsatilmagan bo‘lsa, standart qiymat /googlechat.
  • Agar actions.reactions yoqilgan bo‘lsa, reaksiyalar reactions vositasi va channels action orqali mavjud.
  • typingIndicator quyidagilarni qo‘llab-quvvatlaydi: none, message (standart), va reaction (reaction uchun user OAuth talab qilinadi).
  • Ilovalar (attachment) Chat API orqali yuklab olinadi va media pipeline’da saqlanadi (mediaMaxMb bilan hajm cheklangan).

Muammolarni bartaraf etish

405 Method Not Allowed

Agar Google Cloud Logs Explorer’da quyidagi xatolar ko‘rinsa:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Allowed
Bu webhook ishlovchisi ro‘yxatdan o‘tkazilmaganini anglatadi. Keng tarqalgan sabablar:
  1. Kanal sozlanmagan: konfiguratsiyangizda channels.googlechat bo‘limi yo‘q. Quyidagicha tekshiring:
    openclaw config get channels.googlechat
    
    Agar “Config path not found” qaytsa, konfiguratsiyani qo‘shing (qarang: Muhim konfiguratsiya nuqtalari).
  2. Plugin yoqilmagan: Plugin holatini tekshiring:
    openclaw plugins list | grep googlechat
    
    Agar “disabled” ko‘rsatsa, konfiguratsiyaga plugins.entries.googlechat.enabled: true qo‘shing.
  3. Gateway qayta ishga tushirilmagan: Konfiguratsiya qo‘shilgandan so‘ng gateway’ni qayta ishga tushiring:
    openclaw gateway restart
    
Kanal ishlayotganini tekshiring:
openclaw channels status
# Ko‘rsatishi kerak: Google Chat default: enabled, configured, ...

Boshqa muammolar

  • Autentifikatsiya xatolari yoki audience sozlamasi yetishmasligini tekshirish uchun openclaw channels status --probe dan foydalaning.
  • Xabarlar kelmasa, Chat ilovasining webhook URL va event subscription’larini tekshiring.
  • Agar mention talabi javoblarni bloklasa, botUser ni ilovaning user resource nomiga o‘rnating va requireMention ni tekshiring.
  • So‘rovlar gateway’ga yetib kelayotganini ko‘rish uchun test xabar yuborayotganda openclaw logs --follow ni ishga tushiring.
Tegishli hujjatlar: