На этой странице описывается, как настроить вебхук для отправки асинхронных сообщений в чат-пространство с использованием внешних триггеров. Например, вы можете настроить приложение мониторинга для уведомления дежурного персонала в чате о сбое сервера. Чтобы отправить синхронное сообщение с помощью приложения чата, см. раздел «Отправка сообщения» .
При таком типе архитектуры пользователи не могут взаимодействовать с веб-хуком или подключенным внешним приложением, поскольку взаимодействие одностороннее. Веб-хуки не являются диалоговыми. Они не могут отвечать на сообщения пользователей или получать от них сообщения, а также события взаимодействия с чат-приложением . Чтобы отвечать на сообщения, создайте чат-приложение вместо веб-хука.
Хотя веб-хук технически не является приложением чата (веб-хуки соединяют приложения с помощью стандартных HTTP-запросов), на этой странице для упрощения он называется приложением чата. Каждый веб-хук работает только в том пространстве чата, в котором он зарегистрирован. Входящие веб-хуки работают в личных сообщениях, но только если у всех пользователей включены приложения чата . Веб-хуки нельзя публиковать в Google Workspace Marketplace.
На следующей диаграмме показана архитектура веб-перехватчика, подключенного к чату:
На предыдущей диаграмме приложение чата имеет следующий поток информации:
- Логика приложения «Чат» получает информацию от внешних сторонних сервисов, таких как система управления проектами или инструмент управления тикетами.
- Логика приложения чата размещается либо в облаке, либо в локальной системе, которая может отправлять сообщения с использованием URL-адреса веб-перехватчика в определенное пространство чата.
- Пользователи могут получать сообщения из приложения «Чат» в этом конкретном чат-пространстве, но не могут взаимодействовать с приложением «Чат».
Предпосылки
Питон
- Учетная запись Google Workspace уровня Business или Enterprise с доступом к Google Chat . Ваша организация Google Workspace должна разрешить пользователям добавлять и использовать входящие веб-перехватчики .
- Python 3.6 или выше
- Инструмент управления пакетами pip
Библиотека
httplib2
. Чтобы установить библиотеку, выполните следующую команду в командной строке:pip install httplib2
Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел Создание пространства . Чтобы создать пространство в Chat, посетите документацию Справочного центра .
Node.js
- Учетная запись Google Workspace уровня Business или Enterprise с доступом к Google Chat . Ваша организация Google Workspace должна разрешить пользователям добавлять и использовать входящие веб-перехватчики .
- Node.js 14 или выше
- Инструмент управления пакетами npm
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел Создание пространства . Чтобы создать пространство в Chat, посетите документацию Справочного центра .
Ява
- Учетная запись Google Workspace уровня Business или Enterprise с доступом к Google Chat . Ваша организация Google Workspace должна разрешить пользователям добавлять и использовать входящие веб-перехватчики .
- Java 11 или выше
- Инструмент управления пакетами Maven
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел Создание пространства . Чтобы создать пространство в Chat, посетите документацию Справочного центра .
Скрипт приложений
- Учетная запись Google Workspace уровня Business или Enterprise с доступом к Google Chat . Ваша организация Google Workspace должна разрешить пользователям добавлять и использовать входящие веб-перехватчики .
- Создайте автономный проект Apps Script и включите расширенную службу чата .
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел Создание пространства . Чтобы создать пространство в Chat, посетите документацию Справочного центра .
Создать вебхук
Чтобы создать веб-хук, зарегистрируйте его в области чата, где вы хотите получать сообщения, а затем напишите скрипт, который отправляет сообщения.
Зарегистрировать входящий вебхук
- Откройте Chat в браузере. Веб-перехваты нельзя настроить из мобильного приложения Chat.
- Перейдите в место, куда вы хотите добавить веб-хук.
- Рядом с заголовком пространства нажмите стрелку развернуть больше, а затем нажмите Приложения и интеграции .
Нажмите
веб-перехватчики» .В поле Имя введите
Quickstart Webhook
.В поле URL аватара введите
https://developers.google.com/chat/images/chat-product-icon.png
.Нажмите «Сохранить» .
Чтобы скопировать URL-адрес веб-перехватчика, нажмите
Еще , а затем нажмите Копировать ссылку .
Напишите скрипт вебхука
Пример скрипта вебхука отправляет сообщение в область, в которой зарегистрирован вебхук, отправляя POST
запрос на URL-адрес вебхука. API чата отвечает экземпляром Message
.
Выберите язык, чтобы узнать, как создать скрипт веб-перехвата:
Питон
В рабочем каталоге создайте файл с именем
quickstart.py
.В
quickstart.py
вставьте следующий код:Замените значение переменной
url
на URL-адрес веб-перехватчика, скопированный вами при регистрации веб-перехватчика.
Node.js
В рабочем каталоге создайте файл с именем
index.js
.В
index.js
вставьте следующий код:Замените значение переменной
url
на URL-адрес веб-перехватчика, скопированный вами при регистрации веб-перехватчика.
Ява
В рабочем каталоге создайте файл с именем
pom.xml
.В
pom.xml
скопируйте и вставьте следующее:В рабочем каталоге создайте следующую структуру каталогов
src/main/java
.В каталоге
src/main/java
создайте файл с именемApp.java
.В
App.java
вставьте следующий код:Замените значение переменной
URL
на URL-адрес веб-перехватчика, скопированный вами при регистрации веб-перехватчика.
Скрипт приложений
В браузере перейдите в Apps Script .
Нажмите «Новый проект».
Вставьте следующий код:
Замените значение переменной
url
на URL-адрес веб-перехватчика, скопированный вами при регистрации веб-перехватчика.
Запустить скрипт вебхука
В CLI запустите скрипт:
Питон
python3 quickstart.py
Node.js
node index.js
Ява
mvn compile exec:java -Dexec.mainClass=App
Скрипт приложений
- Нажмите кнопку «Выполнить» .
При запуске кода веб-хук отправляет сообщение в пространство, в котором вы его зарегистрировали.
Начать или ответить на цепочку сообщений
Укажите
spaces.messages.thread.threadKey
в теле запроса сообщения. В зависимости от того, создаёте ли вы обсуждение или отвечаете на него, используйте следующие значения дляthreadKey
:При создании темы установите для
threadKey
произвольную строку, но запишите это значение, чтобы опубликовать ответ в теме.При ответе на тему укажите
threadKey
, который был задан при её создании. Например, чтобы ответить на тему, где в первом сообщении использовалсяMY-THREAD
, укажитеMY-THREAD
.
Определите поведение потока, если указанный
threadKey
не найден:Ответьте на обсуждение или начните новое. Добавьте параметр
messageReplyOption=REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD
к URL-адресу веб-перехватчика. Передача этого параметра URL-адреса заставляет Chat искать существующее обсуждение по указанномуthreadKey
. Если обсуждение найдено, сообщение отправляется как ответ на него. Если обсуждение не найдено, сообщение начинает новое обсуждение, соответствующее этомуthreadKey
.Ответьте на ветку или не делайте ничего. Добавьте параметр
messageReplyOption=REPLY_MESSAGE_OR_FAIL
к URL-адресу веб-перехватчика. Передача этого параметра URL-адреса заставляет Chat искать существующую ветку, используя указанныйthreadKey
. Если она найдена, сообщение отправляется как ответ на эту ветку. Если ничего не найдено, сообщение не отправляется.
Более подробную информацию см. в
messageReplyOption
.
Следующий пример кода начинает поток сообщений или отвечает на него:
Питон
Node.js
Скрипт приложений
Обработка ошибок
Запросы Webhook могут быть неудачными по разным причинам, включая:
- Неверный запрос.
- Веб-перехватчик или пространство, на котором размещен веб-перехватчик, удаляется.
- Периодически возникающие проблемы, такие как сетевое подключение или ограничения квот.
При создании веб-перехватчика необходимо правильно обрабатывать ошибки:
- Регистрация сбоя.
- В случае ошибок, связанных со временем, квотой или сетевым подключением, повторная попытка запроса выполняется с экспоненциальной задержкой .
- Ничего не делать, что уместно, если отправка сообщения вебхука не важна.
API Google Chat возвращает ошибки в виде объекта google.rpc.Status
, который включает code
ошибки HTTP, указывающий тип обнаруженной ошибки: ошибка клиента (серия 400) или ошибка сервера (серия 500). Чтобы просмотреть все сопоставления HTTP, см. google.rpc.Code
.
{
"code": 503,
"message": "The service is currently unavailable.",
"status": "UNAVAILABLE"
}
Чтобы узнать, как интерпретировать коды состояния HTTP и обрабатывать ошибки, см. раздел Ошибки .
Ограничения и соображения
- При создании сообщения с помощью вебхука в Google Chat API ответ не содержит полного сообщения. В ответе заполняются только поля
name
иthread.name
. - На веб-хуки распространяется квота
spaces.messages.create
на пространство: 1 запрос в секунду, общая для всех веб-хуков в пространстве. Чат также может отклонять запросы веб-хуков, превышающие 1 запрос в секунду в одном пространстве. Подробнее о квотах API чата см. в разделе « Ограничения использования» .