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) - Включите 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>.
- Введите свой адрес электронной почты (например,
user@example.com) в текстовое поле. - Нажмите Save внизу страницы.
- App name: (например,
- Включите статус приложения: - После сохранения обновите страницу. - Найдите раздел 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.
- Проверьте, к какому адресу привязан ваш шлюз:
bash
ss -tlnp | grep 18789
Запомните IP‑адрес (например, 127.0.0.1, 0.0.0.0 или ваш IP Tailscale, например 100.x.x.x).
- Откройте панель только для tailnet (порт 8443):
```bash # If bound to localhost (127.0.0.1 or 0.0.0.0): tailscale serve --bg --https 8443 http://127.0.0.1:18789
# If bound to Tailscale IP only (e.g., 100.106.161.80): tailscale serve --bg --https 8443 http://100.106.161.80:18789 ```
- Публично откройте только путь вебхука:
```bash # If bound to localhost (127.0.0.1 or 0.0.0.0): tailscale funnel --bg --set-path /googlechat http://127.0.0.1:18789/googlechat
# If bound to Tailscale IP only (e.g., 100.106.161.80): tailscale funnel --bg --set-path /googlechat http://100.106.161.80:18789/googlechat ```
-
Авторизуйте узел для доступа Funnel: Если появится запрос, перейдите по URL авторизации, показанному в выводе, чтобы включить Funnel для этого узла в политике tailnet.
-
Проверьте конфигурацию:
bash
tailscale serve status
tailscale funnel status
Ваш публичный URL вебхука:
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 {
reverse_proxy /googlechat* localhost:18789
}
С такой конфигурацией любой запрос к 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>(адреса электронной почты принимаются). - Пространства:
spaces/<spaceId>.
Основные моменты конфига¶
{
channels: {
googlechat: {
enabled: true,
serviceAccountFile: "/path/to/service-account.json",
audienceType: "app-url",
audience: "https://gateway.example.com/googlechat",
webhookPath: "/googlechat",
botUser: "users/1234567890", // optional; helps mention detection
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,
},
},
}
Примечания:
- Учётные данные сервисного аккаунта также можно передавать 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 отображаются ошибки вида:
status code: 405, reason phrase: HTTP error response: HTTP/1.1 405 Method Not Allowed
Это означает, что обработчик вебхука не зарегистрирован. Распространённые причины:
- Канал не настроен: в конфиге отсутствует раздел
channels.googlechat. Проверьте с помощью:
bash
openclaw config get channels.googlechat
Если возвращается «Config path not found», добавьте конфигурацию (см. Основные моменты конфига).
- Плагин не включён: проверьте статус плагина:
bash
openclaw plugins list | grep googlechat
Если отображается «disabled», добавьте plugins.entries.googlechat.enabled: true в конфиг.
- Шлюз не перезапущен: после добавления конфига перезапустите шлюз:
bash
openclaw gateway restart
Проверьте, что канал запущен:
openclaw channels status
# Should show: Google Chat default: enabled, configured, ...
Другие проблемы¶
- Проверьте
openclaw channels status --probeна ошибки аутентификации или отсутствующую конфигурацию audience. - Если сообщения не приходят, проверьте URL вебхука и подписки на события в приложении Chat.
- Если ответы блокируются проверкой упоминаний, задайте
botUserравным имени ресурса пользователя приложения и проверьтеrequireMention. - Используйте
openclaw logs --followпри отправке тестового сообщения, чтобы увидеть, доходят ли запросы до шлюза.
Связанная документация: