На этой странице описывается, как настроить вебхук для отправки асинхронных сообщений в чат-пространство с использованием внешних триггеров. Например, вы можете настроить приложение мониторинга для уведомления дежурного персонала в чате о сбое сервера. Чтобы отправить синхронное сообщение с помощью приложения чата, см. раздел «Отправка сообщения» .
При таком типе архитектуры пользователи не могут взаимодействовать с веб-хуком или подключенным внешним приложением, поскольку взаимодействие одностороннее. Веб-хуки не являются диалоговыми. Они не могут отвечать на сообщения пользователей или получать от них сообщения, а также события взаимодействия с чат-приложением . Чтобы отвечать на сообщения, создайте чат-приложение вместо веб-хука.
Хотя веб-хук технически не является приложением чата (веб-хуки соединяют приложения с помощью стандартных 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-адрес веб-перехватчика, нажмите Еще , а затем нажмите Копировать ссылку .
URL-адрес веб-перехватчика содержит два параметра:
key— общее значение, используемое всеми веб-перехватчиками, иtoken— уникальное значение, которое необходимо хранить в секрете для сохранения безопасности вашего веб-перехватчика.
Напишите скрипт вебхука
Пример скрипта вебхука отправляет сообщение в область, в которой зарегистрирован вебхук, отправляя 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.pyNode.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 чата см. в разделе «Ограничения использования» .