Google Chat (Chat API)

جاهز للرسائل المباشرة + المساحات عبر webhooks Google Chat API (HTTP فقط).

الإعداد السريع:

  • أنشئ مشروع Google Cloud وفعّل Google Chat API
  • أنشئ Service Account ومفتاح JSON
  • اكشف مسار /googlechat فقط للعامة (عبر Tailscale Funnel أو Reverse Proxy)
  • استخدم openclaw onboard لإتمام التكوين

الإعداد التفصيلي

1) إنشاء Service Account

  1. انتقل إلى Google Chat API Credentials
  2. فعّل API إذا لم يكن ممكّنًا
  3. اضغط على Create Credentials > Service Account
  4. أدخل اسمًا ومعرفًا (ID)
  5. بعد الإنشاء، افتح حساب الخدمة وانتقل إلى Keys
  6. أنشئ مفتاح JSON جديد واحفظه بشكل آمن (مثل ~/.config/openclaw/google-chat-sa.json)

2) تكوين Chat App

انتقل إلى Google Chat API > Configuration:

  • App name: OpenClaw (أو الاسم الذي تفضله)
  • Avatar URL: (اختياري) رابط صورة للبوت
  • Functionality: حدد Receive 1:1 messages و Join spaces
  • Connection settings: حدد App URL (HTTP) وأدخل عنوان URL العام (مثل https://your-domain.com/googlechat)
  • Visibility: أضف بريدك الإلكتروني للاختبار

3) تشغيل المعالج

openclaw onboard

اختر Google Chat واتبع المطالبات:

  • مسار ملف Service Account
  • نوع الجمهور (audience): app-url
  • قيمة الجمهور: عنوان URL للـ webhook

إضافة البوت إلى Google Chat

  1. انتقل إلى Google Chat
  2. انقر على أيقونة + بجوار Direct Messages
  3. اكتب اسم التطبيق كاملاً واضغط Enter
  4. سيتم فتح محادثة مع البوت

ملاحظة

لن يظهر البوت في الاقتراحات العادية؛ عليك كتابة الاسم كاملاً.

عنوان URL عام (Webhook فقط)

تتطلب webhooks Google Chat نقطة نهاية HTTPS عامة. للأمان، قم فقط بكشف مسار /googlechat.

الخيار A: Tailscale Funnel (موصى به)

استخدم Tailscale Serve للوحة التحكم الخاصة و Funnel لمسار webhook العام:

# 1) اكشف لوحة التحكم لـ tailnet فقط
tailscale serve --bg --https 8443 https+insecure://localhost:18789

# 2) اكشف webhook للعامة
tailscale funnel --bg 443 on

ملف تكوين Tailscale:

{
  "TCP": { "443": { "HTTPS": true } },
  "Web": {
    "<node-name>.<tailnet>.ts.net:443": {
      "Handlers": {
        "/googlechat": { "Proxy": "https+insecure://localhost:18789" },
        "/googlechat/": { "Proxy": "https+insecure://localhost:18789" }
      }
    }
  },
  "AllowFunnel": {
    "<node-name>.<tailnet>.ts.net:443": true
  }
}

الخيار B: Reverse Proxy (Caddy)

your-domain.com {
  reverse_proxy /googlechat* localhost:18789
}

الخيار C: Cloudflare Tunnel

قواعد ingress:

  • Path: /googlechathttp://localhost:18789/googlechat
  • Default: HTTP 404

كيف يعمل

  1. يرسل Google Chat webhook POSTs إلى Gateway مع رأس Authorization: Bearer <token>
  2. يتحقق OpenClaw من الرمز مقابل audienceType + audience
  3. بعد التحقق، تتم معالجة الرسالة وإرسال الرد عبر Chat API REST

الأهداف (Targets)

  • الرسائل المباشرة: users/<userId> أو users/<email>
  • المساحات: spaces/<spaceId>

مرجع التكوين

{
  channels: {
    googlechat: {
      enabled: true,
      serviceAccountFile: "/path/to/service-account.json",
      audienceType: "app-url",
      audience: "https://gateway.example.com/googlechat",
      webhookPath: "/googlechat",
      botUserId: "123456789012345678901",
      dmPolicy: "pairing",
      actions: { reactions: true },
    },
  },
}

استكشاف الأخطاء

405 Method Not Allowed

إذا ظهر هذا الخطأ في Google Cloud Logs:

الأسباب الشائعة

  • القناة غير ممكّنة في التكوين
  • مسار webhook غير صحيح
  • Gateway غير قيد التشغيل

مشاكل أخرى

  • تحقق من openclaw channels status --probe لأخطاء المصادقة
  • إذا لم تصل أي رسائل، تأكد من عنوان URL لـ webhook
  • إذا كانت بوابة الذكر تحجب الردود، قم بتعيين botUserId بشكل صريح