Google Chat (Chat API)
Статус: готово для особистих повідомлень + просторів через вебхуки Google Chat API (лише HTTP).Швидке налаштування (для початківців)
- Створіть проєкт Google Cloud і ввімкніть Google Chat API.
- Перейдіть до: Google Chat API Credentials
- Увімкніть API, якщо воно ще не ввімкнене.
- Створіть Service Account:
- Натисніть Create Credentials > Service Account.
- Задайте будь-яку назву (наприклад,
openclaw-chat). - Залиште дозволи порожніми (натисніть Continue).
- Залиште principals with access порожніми (натисніть Done).
- Створіть і завантажте JSON Key:
- У списку service accounts натисніть ту, яку ви щойно створили.
- Перейдіть на вкладку Keys.
- Натисніть Add Key > Create new key.
- Виберіть JSON і натисніть Create.
- Збережіть завантажений JSON-файл на вашому хості gateway (наприклад,
~/.openclaw/googlechat-service-account.json). - Створіть застосунок Google Chat у Google Cloud Console Chat Configuration:
- Заповніть Application info:
- App name: (наприклад,
OpenClaw) - Avatar URL: (наприклад,
https://openclaw.ai/logo.png) - Description: (наприклад,
Personal AI Assistant)
- App name: (наприклад,
- Увімкніть Interactive features.
- У розділі Functionality позначте Join spaces and group conversations.
- У розділі Connection settings виберіть HTTP endpoint URL.
- У розділі Triggers виберіть Use a common HTTP endpoint URL for all triggers і задайте URL публічного gateway з доданим
/googlechat.- Порада: виконайте
openclaw status, щоб знайти публічний URL вашого gateway.
- Порада: виконайте
- У розділі Visibility позначте Make this Chat app available to specific people and groups in <Your Domain>.
- Введіть свою адресу електронної пошти (наприклад,
user@example.com) у текстове поле. - Унизу натисніть Save.
- Заповніть Application info:
- Увімкніть статус застосунку:
- Після збереження оновіть сторінку.
- Знайдіть розділ App status (зазвичай угорі або внизу після збереження).
- Змініть статус на Live - available to users.
- Ще раз натисніть Save.
- Налаштуйте OpenClaw із шляхом до service account + аудиторією вебхука:
- Env:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - Або config:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Env:
- Задайте тип і значення аудиторії вебхука (має збігатися з конфігурацією вашого застосунку Chat).
- Запустіть gateway. Google Chat надсилатиме POST-запити на шлях вашого вебхука.
Додати до Google Chat
Після запуску gateway і додавання вашої електронної адреси до списку видимості:- Перейдіть у Google Chat.
- Натисніть значок + (плюс) поруч із Direct Messages.
- У рядку пошуку (де ви зазвичай додаєте людей) введіть App name, яке ви налаштували в Google Cloud Console.
- Примітка: бот не з’явиться у списку перегляду “Marketplace”, оскільки це приватний застосунок. Його потрібно шукати за назвою.
- Виберіть свого бота з результатів.
- Натисніть Add або Chat, щоб почати розмову 1:1.
- Надішліть “Hello”, щоб активувати асистента!
Публічний URL (лише вебхук)
Вебхуки Google Chat потребують публічної HTTPS-адреси. З міркувань безпеки відкривайте в інтернет лише шлях/googlechat. Залишайте панель OpenClaw та інші чутливі ендпоїнти у приватній мережі.
Варіант A: Tailscale Funnel (рекомендовано)
Використовуйте Tailscale Serve для приватної панелі та Funnel для публічного шляху вебхука. Це дозволяє зберегти/ приватним, відкриваючи назовні лише /googlechat.
-
Перевірте, до якої адреси прив’язаний ваш gateway:
Зверніть увагу на IP-адресу (наприклад,
127.0.0.1,0.0.0.0або вашу адресу Tailscale на кшталт100.x.x.x). -
Відкрийте панель лише для tailnet (порт 8443):
-
Публічно відкрийте лише шлях вебхука:
- Авторизуйте вузол для доступу Funnel: Якщо з’явиться запит, відкрийте URL авторизації, показаний у виводі, щоб увімкнути Funnel для цього вузла у вашій політиці tailnet.
-
Перевірте конфігурацію:
https://<node-name>.<tailnet>.ts.net/googlechat
Ваша приватна панель залишиться доступною лише в tailnet:
https://<node-name>.<tailnet>.ts.net:8443/
Використовуйте публічний URL (без :8443) у конфігурації застосунку Google Chat.
Примітка: ця конфігурація зберігається після перезавантаження. Щоб пізніше її видалити, виконайтеtailscale funnel resetіtailscale serve reset.
Варіант B: Reverse Proxy (Caddy)
Якщо ви використовуєте reverse proxy, наприклад Caddy, проксіюйте лише конкретний шлях:your-domain.com/ буде ігноруватися або повертатиме 404, тоді як your-domain.com/googlechat буде безпечно маршрутизовано до OpenClaw.
Варіант C: Cloudflare Tunnel
Налаштуйте ingress rules вашого тунелю так, щоб маршрутизувався лише шлях вебхука:- Path:
/googlechat->http://localhost:18789/googlechat - Default Rule: HTTP 404 (Not Found)
Як це працює
- Google Chat надсилає webhook POST-запити до gateway. Кожен запит містить заголовок
Authorization: Bearer <token>.- OpenClaw перевіряє bearer auth перед читанням/парсингом повних тіл вебхуків, якщо заголовок присутній.
- Запити Google Workspace Add-on, які містять
authorizationEventObject.systemIdTokenу тілі, підтримуються через суворіший бюджет тіла для pre-auth.
- OpenClaw перевіряє токен відповідно до налаштованих
audienceType+audience:audienceType: "app-url"→ аудиторія — це ваш HTTPS URL вебхука.audienceType: "project-number"→ аудиторія — це номер Cloud-проєкту.
- Повідомлення маршрутизуються за простором:
- Особисті повідомлення використовують ключ сесії
agent:<agentId>:googlechat:direct:<spaceId>. - Простори використовують ключ сесії
agent:<agentId>:googlechat:group:<spaceId>.
- Особисті повідомлення використовують ключ сесії
- Доступ до особистих повідомлень типово використовує pairing. Невідомі відправники отримують код pairing; схваліть його командою:
openclaw pairing approve googlechat <code>
- Для групових просторів типово потрібне @-згадування. Використовуйте
botUser, якщо для виявлення згадувань потрібне ім’я користувача застосунку.
Цілі
Використовуйте ці ідентифікатори для доставки та списків дозволу:- Особисті повідомлення:
users/<userId>(рекомендовано). - Необроблена адреса електронної пошти
name@example.comє змінною і використовується лише для прямого зіставлення в списку дозволу, колиchannels.googlechat.dangerouslyAllowNameMatching: true. - Застаріле:
users/<email>обробляється як id користувача, а не як email у списку дозволу. - Простори:
spaces/<spaceId>.
Основні моменти конфігурації
- Облікові дані service account також можна передати вбудовано через
serviceAccount(рядок JSON). - Також підтримується
serviceAccountRef(env/file SecretRef), включно з refs для окремих облікових записів уchannels.googlechat.accounts.<id>.serviceAccountRef. - Типовий шлях вебхука —
/googlechat, якщоwebhookPathне задано. dangerouslyAllowNameMatchingзнову вмикає зіставлення змінюваних email principals для списків дозволу (аварійний режим сумісності).- Реакції доступні через інструмент
reactionsіchannels action, якщо ввімкненоactions.reactions. - Дії з повідомленнями надають
sendдля тексту іupload-fileдля явного надсилання вкладень.upload-fileприймаєmedia/filePath/path, а також необов’язковіmessage,filenameі націлювання на thread. typingIndicatorпідтримуєnone,message(типово) іreaction(для реакцій потрібен OAuth користувача).- Вкладення завантажуються через Chat API і зберігаються в конвеєрі медіа (розмір обмежується
mediaMaxMb).
Усунення несправностей
405 Method Not Allowed
Якщо Google Cloud Logs Explorer показує помилки на кшталт:-
Канал не налаштований: у вашій конфігурації відсутній розділ
channels.googlechat. Перевірте командою:Якщо вона повертає “Config path not found”, додайте конфігурацію (див. Основні моменти конфігурації). -
Plugin не ввімкнено: перевірте статус plugin:
Якщо показано “disabled”, додайте
plugins.entries.googlechat.enabled: trueдо вашої конфігурації. -
Gateway не перезапущено: після додавання конфігурації перезапустіть gateway:
Інші проблеми
- Перевірте
openclaw channels status --probeна наявність помилок автентифікації або відсутньої конфігурації аудиторії. - Якщо повідомлення не надходять, перевірте URL вебхука застосунку Chat + підписки на події.
- Якщо gating згадувань блокує відповіді, задайте
botUserяк ім’я ресурсу користувача застосунку та перевіртеrequireMention. - Використовуйте
openclaw logs --followпід час надсилання тестового повідомлення, щоб побачити, чи доходять запити до gateway.
Пов’язане
- Огляд каналів — усі підтримувані канали
- Pairing — автентифікація особистих повідомлень і процес pairing
- Групи — поведінка групових чатів і gating згадувань
- Маршрутизація каналів — маршрутизація сесій для повідомлень
- Безпека — модель доступу та посилення захисту