Google Chat (Chat API)¶
Holati: Google Chat API webhooklari (faqat HTTP) orqali DM va space’lar uchun tayyor.
Tezkor sozlash (boshlovchilar uchun)¶
- Google Cloud loyihasini yarating va Google Chat APIni yoqing. - O‘ting: Google Chat API Credentials - Agar API hali yoqilmagan bo‘lsa, uni yoqing.
- 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). - 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.
- Yuklab olingan JSON faylni gateway hostingizda saqlang (masalan,
~/.openclaw/googlechat-service-account.json). - 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
/googlechatqo‘shib kiriting. - Maslahat: Gateway’ning ommaviy URL manzilini topish uchun
openclaw statusni ishga tushiring. - Visibility ostida Make this Chat app available to specific people and groups in <Your Domain> ni belgilang.
- Matn maydoniga emailingizni kiriting (masalan,
user@example.com). - Pastdagi Save tugmasini bosing.
- App name: (masalan,
- 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.
- 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". - Webhook audience turini va qiymatini belgilang (Chat ilovasi sozlamalariga mos bo‘lishi kerak).
- Gateway’ni ishga tushiring. Google Chat webhook manzilingizga POST so‘rov yuboradi.
Google Chat’ga qo‘shish¶
Gateway ishga tushgan va emailingiz visibility ro‘yxatiga qo‘shilgan bo‘lsa:
- Google Chat ga o‘ting.
- Direct Messages yonidagi + (plus) belgisini bosing.
- Qidiruv satriga (odatda odam qo‘shadigan joy) Google Cloud Console’da sozlagan App name ni kiriting. - Eslatma: Bot "Marketplace" ro‘yxatida ko‘rinmaydi, chunki u xususiy ilova. Uni nomi bo‘yicha qidirishingiz kerak.
- Natijalardan botingizni tanlang.
- 1:1 suhbatni boshlash uchun Add yoki Chat ni bosing.
- Assistentni ishga tushirish uchun "Hello" deb yozing!
Ommaviy URL (faqat Webhook)¶
Google Chat webhooklari ommaviy HTTPS endpoint talab qiladi. Xavfsizlik uchun faqat /googlechat yo‘lini internetga oching. OpenClaw dashboard va boshqa sezgir endpointlarni xususiy tarmog‘ingizda qoldiring.
Variant A: Tailscale Funnel (Tavsiya etiladi)¶
Xususiy dashboard uchun Tailscale Serve, ommaviy webhook yo‘li uchun esa Funnel’dan foydalaning. Bu / ni xususiy saqlab, faqat /googlechat ni ochadi.
- Gateway qaysi manzilga bog‘langanini tekshiring:
bash
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).
- Dashboard’ni faqat tailnet uchun oching (8443 port):
```bash # 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 ```
- Faqat webhook yo‘lini ommaviy oching:
```bash # 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 ```
-
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.
-
Sozlamani tekshiring:
bash
tailscale serve status
tailscale funnel status
Sizning ommaviy webhook URL manzilingiz:
https://<node-name>.<tailnet>.ts.net/googlechat
Xususiy dashboard faqat tailnet ichida qoladi:
https://<node-name>.<tailnet>.ts.net:8443/
Google Chat ilovasi sozlamasida ommaviy URL’ni (:8443siz) ishlating.
Eslatma: Ushbu sozlama qayta yuklashlardan keyin ham saqlanadi. Keyinroq olib tashlash uchun
tailscale funnel resetvatailscale serve resetni ishga tushiring.
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¶
- Google Chat gateway’ga webhook POST so‘rovlarini yuboradi. Har bir so‘rov
Authorization: Bearer <token>sarlavhasini o‘z ichiga oladi. - OpenClaw tokenni sozlangan
audienceTypevaaudiencebilan tekshiradi: -audienceType: "app-url"→ audience — sizning HTTPS webhook URL manzilingiz. -audienceType: "project-number"→ audience — Cloud loyiha raqami. - Xabarlar space bo‘yicha marshrutlanadi:
- DM’lar uchun sessiya kaliti
agent:<agentId>:googlechat:dm:<spaceId>. - Space’lar uchun sessiya kalitiagent:<agentId>:googlechat:group:<spaceId>. - DM kirishi odatda pairing orqali amalga oshadi. Noma’lum jo‘natuvchilar pairing kodi oladi; tasdiqlash:
-
openclaw pairing approve googlechat <code> - Guruh space’larda odatda @-mention talab qilinadi. Agar mention aniqlash uchun ilova foydalanuvchi nomi kerak bo‘lsa,
botUserdan foydalaning.
Manzillar (Targets)¶
Yetkazib berish va allowlist uchun quyidagi identifikatorlardan foydalaning:
- Shaxsiy xabarlar:
users/<userId>(tavsiya etiladi) yoki oddiy emailname@example.com(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", "name@example.com"],
},
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
webhookPathko‘rsatilmagan bo‘lsa, standart qiymat/googlechat. - Agar
actions.reactionsyoqilgan bo‘lsa, reaksiyalarreactionsvositasi vachannels actionorqali mavjud. typingIndicatorquyidagilarni qo‘llab-quvvatlaydi:none,message(standart), vareaction(reactionuchun user OAuth talab qilinadi).- Ilovalar (attachment) Chat API orqali yuklab olinadi va media pipeline’da saqlanadi (
mediaMaxMbbilan 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 handler ro‘yxatdan o‘tmaganini bildiradi. Odatdagi sabablar:
- Kanal sozlanmagan: Konfiguratsiyada
channels.googlechatbo‘limi yo‘q. Tekshiring:
bash
openclaw config get channels.googlechat
Agar "Config path not found" qaytsa, konfiguratsiyani qo‘shing (qarang: Muhim konfiguratsiya nuqtalari).
- Plugin yoqilmagan: Plugin holatini tekshiring:
bash
openclaw plugins list | grep googlechat
Agar "disabled" ko‘rsatsa, konfiguratsiyaga plugins.entries.googlechat.enabled: true qo‘shing.
- Gateway qayta ishga tushirilmagan: Konfiguratsiya qo‘shilgandan so‘ng gateway’ni qayta ishga tushiring:
bash
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 --probedan foydalaning. - Xabarlar kelmasa, Chat ilovasining webhook URL va event subscription’larini tekshiring.
- Agar mention talabi javoblarni bloklasa,
botUserni ilovaning user resource nomiga o‘rnating varequireMentionni tekshiring. - So‘rovlar gateway’ga yetib kelayotganini ko‘rish uchun test xabar yuborayotganda
openclaw logs --followni ishga tushiring.
Tegishli hujjatlar: