На этой странице описывается, как настроить вебхук для отправки асинхронных сообщений в пространство чата с использованием внешних триггеров. Например, вы можете настроить приложение мониторинга для уведомления дежурного персонала в чате, когда сервер выходит из строя. Чтобы отправить синхронное сообщение с помощью приложения чата, см. раздел Отправка сообщения .
При таком типе архитектуры пользователи не могут взаимодействовать с веб-перехватчиком или подключенным внешним приложением, поскольку связь односторонняя. Веб-перехватчики не являются диалоговыми. Они не могут отвечать или получать сообщения от пользователей или события взаимодействия с приложением Chat . Чтобы отвечать на сообщения, создайте приложение Chat вместо веб-перехватчика.
Хотя веб-перехватчик технически не является приложением чата — веб-перехватчики соединяют приложения с помощью стандартных 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, посетите документацию Help Center .
Node.js
- Аккаунт Google Workspace Business или Enterprise с доступом к Google Chat . Ваша организация Google Workspace должна разрешить пользователям добавлять и использовать входящие веб-перехватчики .
- Node.js 14 или выше
- Инструмент управления пакетами npm
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел Создание пространства . Чтобы создать его в Chat, посетите документацию Help Center .
Ява
- Аккаунт Google Workspace Business или Enterprise с доступом к Google Chat . Ваша организация Google Workspace должна разрешить пользователям добавлять и использовать входящие веб-перехватчики .
- Java 11 или выше
- Инструмент управления пакетами Maven
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел Создание пространства . Чтобы создать его в Chat, посетите документацию Help Center .
Скрипт приложений
- Аккаунт Google Workspace Business или Enterprise с доступом к Google Chat . Ваша организация Google Workspace должна разрешить пользователям добавлять и использовать входящие веб-перехватчики .
- Создайте автономный проект Apps Script и включите расширенную службу чата .
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел Создание пространства . Чтобы создать его в Chat, посетите документацию Help Center .
Создать вебхук
Чтобы создать вебхук, зарегистрируйте его в чате, где вы хотите получать сообщения, а затем напишите скрипт, который отправляет сообщения.
Зарегистрировать входящий вебхук
- В браузере откройте Chat . Вебхуки не настраиваются из мобильного приложения Chat.
- Перейдите в область, куда вы хотите добавить вебхук.
- Рядом с заголовком пространства нажмите стрелку развернуть больше), а затем нажмите Приложения и интеграции .
Нажмите
вебхуки» .В поле Имя введите
Quickstart Webhook
.В поле URL-адрес аватара введите
https://developers.google.com/chat/images/chat-product-icon.png
.Нажмите «Сохранить» .
Чтобы скопировать URL-адрес веб-перехватчика, нажмите
Еще , а затем нажмите Копировать ссылку .
Написать скрипт вебхука
Пример скрипта webhook отправляет сообщение в пространство, в котором зарегистрирован webhook, отправляя запрос POST
на URL-адрес webhook. 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 чата см. Ограничения использования .