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).
- Оставьте список субъектов с доступом пустым (нажмите Done).
- Создайте и скачайте JSON Key:
- В списке сервисных аккаунтов нажмите на только что созданный.
- Перейдите на вкладку 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 вашего шлюза с добавлением
/googlechat.- Совет: выполните
openclaw status, чтобы узнать публичный URL вашего шлюза.
- Совет: выполните
- В разделе Visibility отметьте Make this Chat app available to specific people and groups in <Your Domain>.
- Введите свой адрес электронной почты (например,
[email protected]) в текстовое поле. - Нажмите Save внизу страницы.
- Заполните Application info:
- Включите статус приложения:
- После сохранения обновите страницу.
- Найдите раздел App status (обычно сверху или снизу после сохранения).
- Измените статус на Live - available to users.
- Снова нажмите Save.
- Настройте OpenClaw, указав путь к сервисному аккаунту и audience вебхука:
- Переменная окружения:
GOOGLE_CHAT_SERVICE_ACCOUNT_FILE=/path/to/service-account.json - Или в конфиге:
channels.googlechat.serviceAccountFile: "/path/to/service-account.json".
- Переменная окружения:
- Задайте тип и значение audience вебхука (должны совпадать с конфигурацией приложения Chat).
- Запустите шлюз. Google Chat будет отправлять POST‑запросы на путь вашего вебхука.
Добавление в Google Chat
После запуска шлюза и добавления вашего email в список видимости:- Перейдите на 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.
-
Проверьте, к какому адресу привязан ваш шлюз:
Запомните IP‑адрес (например,
127.0.0.1,0.0.0.0или ваш IP 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: Обратный прокси (Caddy)
Если вы используете обратный прокси, например Caddy, проксируйте только конкретный путь:your-domain.com/ будет игнорироваться или возвращать 404, а your-domain.com/googlechat будет безопасно маршрутизирован в OpenClaw.
Вариант C: Cloudflare Tunnel
Настройте правила ingress туннеля так, чтобы маршрутизировать только путь вебхука:- Путь:
/googlechat->http://localhost:18789/googlechat - Правило по умолчанию: HTTP 404 (Не найдено)
Как это работает
- Google Chat отправляет POST‑запросы вебхука на шлюз. Каждый запрос включает заголовок
Authorization: Bearer <token>. - OpenClaw проверяет токен относительно настроенных
audienceType+audience:audienceType: "app-url"→ audience — это ваш HTTPS‑URL вебхука.audienceType: "project-number"→ audience — это номер проекта Cloud.
- Сообщения маршрутизируются по пространству:
- Личные сообщения используют ключ сеанса
agent:<agentId>:googlechat:dm:<spaceId>. - Пространства используют ключ сеанса
agent:<agentId>:googlechat:group:<spaceId>.
- Личные сообщения используют ключ сеанса
- Доступ к личным сообщениям по умолчанию — через сопряжение. Неизвестные отправители получают код сопряжения; подтвердите с помощью:
openclaw pairing approve googlechat <code>
- Групповые пространства по умолчанию требуют @‑упоминания. Используйте
botUser, если обнаружение упоминаний должно учитывать имя пользователя приложения.
Цели
Используйте эти идентификаторы для доставки и списков разрешённых:- Личные сообщения:
users/<userId>илиusers/<email>(адреса электронной почты принимаются). - Устарело:
users/<email>рассматривается как идентификатор пользователя, а не как список разрешённых email-адресов. - Пространства:
spaces/<spaceId>.
Основные моменты конфига
- Учётные данные сервисного аккаунта также можно передавать inline с помощью
serviceAccount(строка JSON). - Путь вебхука по умолчанию —
/googlechat, еслиwebhookPathне задан. - Реакции доступны через инструмент
reactionsиchannels action, когда включёнactions.reactions. typingIndicatorподдерживаетnone,message(по умолчанию) иreaction(реакции требуют OAuth пользователя).- Вложения загружаются через Chat API и сохраняются в медиапайплайне (размер ограничен
mediaMaxMb).
Устранение неполадок
405 Method Not Allowed
Если в Google Cloud Logs Explorer отображаются ошибки вида:-
Канал не настроен: в конфиге отсутствует раздел
channels.googlechat. Проверьте с помощью:Если возвращается «Config path not found», добавьте конфигурацию (см. Основные моменты конфига). -
Плагин не включён: проверьте статус плагина:
Если отображается «disabled», добавьте
plugins.entries.googlechat.enabled: trueв конфиг. -
Шлюз не перезапущен: после добавления конфига перезапустите шлюз:
Другие проблемы
- Проверьте
openclaw channels status --probeна ошибки аутентификации или отсутствующую конфигурацию audience. - Если сообщения не приходят, проверьте URL вебхука и подписки на события в приложении Chat.
- Если ответы блокируются проверкой упоминаний, задайте
botUserравным имени ресурса пользователя приложения и проверьтеrequireMention. - Используйте
openclaw logs --followпри отправке тестового сообщения, чтобы увидеть, доходят ли запросы до шлюза.