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