На этой странице описано, как настроить веб-перехватчик для отправки асинхронных сообщений в пространство чата с использованием внешних триггеров. Например, вы можете настроить приложение мониторинга для уведомления дежурного персонала в чате о сбое сервера. Чтобы отправить синхронное сообщение с помощью приложения чата, см. раздел «Отправка сообщения» .
При таком типе архитектуры пользователи не могут взаимодействовать с веб-хуком или подключенным внешним приложением, поскольку связь односторонняя. Веб-хуки не являются диалоговыми. Они не могут отвечать на сообщения пользователей или получать сообщения от них, а также обрабатывать события взаимодействия в чат-приложении . Для ответа на сообщения следует создавать чат-приложение вместо веб-хука.
Хотя веб-хук технически не является приложением чата — веб-хуки соединяют приложения с помощью стандартных HTTP-запросов — на этой странице он упоминается как приложение чата для упрощения. Каждый веб-хук работает только в том пространстве чата, в котором он зарегистрирован. Входящие веб-хуки работают в личных сообщениях, но только если у всех пользователей включены приложения чата . Вы не можете публиковать веб-хуки в Google Workspace Marketplace.
На следующей диаграмме показана архитектура веб-перехватчика, подключенного к чату:
На приведенной выше диаграмме показан следующий поток информации в чат-приложении:
- Логика приложения «Чат» получает информацию от внешних сторонних сервисов, таких как система управления проектами или система обработки заявок.
- Логика чат-приложения размещается либо в облачной, либо в локальной системе и может отправлять сообщения, используя URL-адрес веб-перехватчика, в определенное пространство чата.
- Пользователи могут получать сообщения от приложения «Чат» в конкретном чате, но не могут взаимодействовать с самим приложением «Чат».
Предварительные требования
Node.js
- Для работы вам потребуется учетная запись Google Workspace для бизнеса или предприятия с доступом к Google Chat . Ваша организация в Google Workspace должна разрешать пользователям добавлять и использовать входящие веб-хуки .
- Node.js 14 или выше
- Инструмент управления пакетами npm
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел «Создание пространства» . Чтобы создать пространство в самом чате, посетите документацию в Справочном центре .
Python
- Для работы вам потребуется учетная запись Google Workspace для бизнеса или предприятия с доступом к Google Chat . Ваша организация в Google Workspace должна разрешать пользователям добавлять и использовать входящие веб-хуки .
- Python 3.6 или выше
- Инструмент управления пакетами pip
Библиотека
httplib2. Для установки библиотеки выполните следующую команду в командной строке:pip install httplib2Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел «Создание пространства» . Чтобы создать пространство в самом чате, посетите документацию в Справочном центре .
Java
- Для работы вам потребуется учетная запись Google Workspace для бизнеса или предприятия с доступом к Google Chat . Ваша организация в Google Workspace должна разрешать пользователям добавлять и использовать входящие веб-хуки .
- Java 11 или более поздняя версия
- Инструмент управления пакетами Maven
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел «Создание пространства» . Чтобы создать пространство в самом чате, посетите документацию в Справочном центре .
Apps Script
- Для работы вам потребуется учетная запись Google Workspace для бизнеса или предприятия с доступом к Google Chat . Ваша организация в Google Workspace должна разрешать пользователям добавлять и использовать входящие веб-хуки .
- Создайте автономный проект Apps Script и включите расширенную службу чата .
- Пространство Google Chat. Чтобы создать его с помощью API Google Chat, см. раздел «Создание пространства» . Чтобы создать пространство в самом чате, посетите документацию в Справочном центре .
Создайте веб-перехватчик
Чтобы создать веб-хук, зарегистрируйте его в чате, куда вы хотите получать сообщения, а затем напишите скрипт, который будет отправлять эти сообщения.
Зарегистрируйте входящий веб-перехватчик
- Откройте приложение «Чат» в браузере. Веб-хуки нельзя настроить в мобильном приложении «Чат».
- Перейдите в раздел, куда вы хотите добавить веб-хук.
- Рядом с названием пространства нажмите стрелку , а затем нажмите «Приложения и интеграции» .
Нажмите «Добавить веб-перехватчики» .
В поле «Имя» введите
Quickstart Webhook.В поле «URL аватара» введите
https://developers.google.com/chat/images/chat-product-icon.png.Нажмите « Сохранить ».
Чтобы скопировать URL-адрес веб-перехватчика, нажмите More , а затем Copy link .
URL веб-перехватчика содержит два параметра:
key, общее значение, используемое всеми веб-перехватчиками, иtoken, уникальное значение, которое необходимо хранить в секрете для обеспечения безопасности вашего веб-перехватчика.
Напишите скрипт веб-перехватчика.
В приведенном примере скрипт веб-перехватчика отправляет сообщение в пространство, где он зарегистрирован, путем отправки POST запроса на URL-адрес веб-перехватчика. API чата отвечает экземпляром объекта Message .
Выберите язык, чтобы узнать, как создать скрипт веб-перехватчика:
Node.js
В рабочей директории создайте файл с именем
index.js.В
index.jsвставьте следующий код:Замените значение переменной
urlна URL-адрес веб-перехватчика, который вы скопировали при регистрации веб-перехватчика.
Python
В рабочей директории создайте файл с именем
quickstart.py.В файл
quickstart.pyвставьте следующий код:Замените значение переменной
urlна URL-адрес веб-перехватчика, который вы скопировали при регистрации веб-перехватчика.
Java
В рабочей директории создайте файл с именем
pom.xml.В
pom.xmlскопируйте и вставьте следующее:В вашей рабочей директории создайте следующую структуру каталогов
src/main/java.В каталоге
src/main/javaсоздайте файл с именемApp.java.В
App.javaвставьте следующий код:Замените значение переменной
URLна URL-адрес веб-перехватчика, который вы скопировали при регистрации веб-перехватчика.
Apps Script
В браузере перейдите в раздел Apps Script .
Нажмите «Новый проект».
Вставьте следующий код:
Замените значение переменной
urlна URL-адрес веб-перехватчика, который вы скопировали при регистрации веб-перехватчика.
Запустите скрипт веб-перехватчика
В командной строке запустите скрипт:
Node.js
node index.jsPython
python3 quickstart.pyJava
mvn compile exec:java -Dexec.mainClass=AppApps Script
- Нажмите «Выполнить» .
При запуске кода веб-хук отправляет сообщение в то пространство, в котором вы его зарегистрировали.
Начать или ответить на сообщение в ветке обсуждения
Укажите
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
Python
Java
Apps Script
Обработка ошибок
Запросы через веб-перехватчик могут завершаться неудачей по различным причинам, в том числе:
- Неверный запрос.
- Веб-хук или пространство, на котором он размещен, удаляется.
- Периодические проблемы, такие как проблемы с подключением к сети или ограничениями по квоте.
При создании веб-хука следует надлежащим образом обрабатывать ошибки следующим образом:
- Запись в журнал ошибки.
- В случае ошибок, связанных со временем, квотами или сетевым подключением, повторный запрос выполняется с экспоненциальной задержкой .
- Ничего не делать, что уместно, если отправка сообщения веб-перехватчика не важна.
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 чата см. в разделе «Ограничения использования» .
Связанные темы
- Выберите архитектуру приложения для чата.
- Отправляйте сообщения с открытками
- Форматирование сообщений