На этой странице объясняется, как создать приложение чата с использованием архитектуры Pub/Sub . Такая архитектура для приложения чата полезна, если в вашей организации есть брандмауэр, который может препятствовать отправке сообщений в ваше приложение чата, или если приложение чата использует API событий Google Workspace . Однако эта архитектура имеет следующие ограничения, поскольку такие приложения чата могут отправлять и получать только асинхронные сообщения :
- В сообщениях нельзя использовать диалоговые окна . Вместо этого используйте сообщение в виде карточки .
- Невозможно обновить отдельные карточки с помощью синхронного ответа. Вместо этого обновите все сообщение, вызвав метод
patch.
На следующей диаграмме показана архитектура чат-приложения, созданного с использованием модели публикации/подписки (Pub/Sub):
На приведенной выше диаграмме показано следующее взаимодействие пользователя с приложением Pub/Sub Chat:
Пользователь отправляет сообщение в чате приложению чата, либо в личном сообщении, либо в пространстве чата, либо происходит событие в пространстве чата, на которое у приложения чата есть активная подписка .
Чат отправляет сообщение в тему Pub/Sub.
Сервер приложений, представляющий собой облачную или локальную систему, содержащую логику приложения чата, подписывается на тему Pub/Sub, чтобы получать сообщения через брандмауэр.
При желании приложение «Чат» может вызывать API чата для асинхронной отправки сообщений или выполнения других операций.
Предварительные требования
При создании приложения для чата необходимо снять флажок «Создать это приложение для чата как надстройку Google Workspace» на странице конфигурации API чата в консоли Google Cloud. См. раздел «Публикация приложения в Google Chat» .
Node.js
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Проект Google Cloud с включенной оплатой. Чтобы проверить, включена ли оплата в существующем проекте, см. раздел «Проверка статуса оплаты ваших проектов ». Чтобы создать проект и настроить оплату, см. раздел «Создание проекта Google Cloud» .
- Node.js 14 или выше
- Инструмент управления пакетами npm
- Инициализированный проект Node.js. Чтобы инициализировать новый проект, создайте новую папку, перейдите в неё и выполните следующую команду в командной строке:
npm init
Python
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Проект Google Cloud с включенной оплатой. Чтобы проверить, включена ли оплата в существующем проекте, см. раздел «Проверка статуса оплаты ваших проектов ». Чтобы создать проект и настроить оплату, см. раздел «Создание проекта Google Cloud» .
- Python 3.6 или выше
- Инструмент управления пакетами pip
Java
- Корпоративный аккаунт Google Workspace с доступом к Google Chat .
- Проект Google Cloud с включенной оплатой. Чтобы проверить, включена ли оплата в существующем проекте, см. раздел «Проверка статуса оплаты ваших проектов ». Чтобы создать проект и настроить оплату, см. раздел «Создание проекта Google Cloud» .
- Java 11 или более поздняя версия
- Инструмент управления пакетами Maven
Настройте среду
Перед использованием API Google необходимо включить их в проекте Google Cloud. В одном проекте Google Cloud можно включить один или несколько API.В консоли Google Cloud включите API Google Chat и API Pub/Sub.
Настройка Pub/Sub
Создайте тему Pub/Sub , в которую API чата сможет отправлять сообщения. Рекомендуется использовать одну тему на каждое приложение чата.
Предоставьте Chat разрешение на публикацию в теме, назначив роль издателя/подписчика следующей учетной записи службы:
chat-api-push@system.gserviceaccount.comСоздайте служебную учетную запись для приложения «Чат», чтобы авторизоваться с помощью Pub/Sub и Chat, и сохраните файл закрытого ключа в свою рабочую директорию.
Создайте подписку по запросу (pull subscription) на данную тему.
Назначьте роль подписчика Pub/Sub для подписки на учетную запись службы, которую вы создали ранее.
Напишите сценарий
Node.js
В командной строке укажите учетные данные сервисной учетной записи :
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATHВ командной строке укажите идентификатор проекта Google Cloud:
export PROJECT_ID=PROJECT_IDВ командной строке укажите идентификатор подписки для ранее созданной подписки Pub/Sub:
export SUBSCRIPTION_ID=SUBSCRIPTION_IDВ рабочей директории создайте файл с именем
package.json.В файл
package.jsonвставьте следующий код:В рабочей директории создайте файл с именем
index.js.В
index.jsвставьте следующий код:
Python
В командной строке укажите учетные данные сервисной учетной записи :
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATHВ командной строке укажите идентификатор проекта Google Cloud:
export PROJECT_ID=PROJECT_IDВ командной строке укажите идентификатор подписки для ранее созданной подписки Pub/Sub:
export SUBSCRIPTION_ID=SUBSCRIPTION_IDВ рабочей директории создайте файл с именем
requirements.txt.В файл
requirements.txtвставьте следующий код:В рабочей директории создайте файл с именем
app.pyВ
app.pyвставьте следующий код:
Java
В командной строке укажите учетные данные сервисной учетной записи :
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATHВ командной строке укажите идентификатор проекта Google Cloud:
export PROJECT_ID=PROJECT_IDВ командной строке укажите идентификатор подписки для ранее созданной подписки Pub/Sub:
export SUBSCRIPTION_ID=SUBSCRIPTION_IDВ рабочей директории создайте файл с именем
pom.xml.В файл
pom.xmlвставьте следующий код:В рабочей директории создайте структуру каталогов
src/main/java.В каталоге
src/main/javaсоздайте файл с именемMain.java.В
Main.javaвставьте следующий код:
Опубликуйте приложение в чате.
В консоли Google Cloud перейдите в > API и сервисы > Включенные API и сервисы > Google Chat API > Конфигурация .
Настройте приложение «Чат» для режима публикации/подписки:
- Нажмите «Отключить ». Создайте это приложение чата как надстройку для Google Workspace . Откроется диалоговое окно с запросом подтверждения. В диалоговом окне нажмите «Отключить» .
- В поле «Название приложения» введите
Quickstart App. - В поле "URL аватара" введите
https://developers.google.com/chat/images/quickstart-app-avatar.png. - В поле «Описание» введите
Quickstart app. - В разделе «Функциональность» выберите «Присоединяйтесь к пространствам и групповым беседам» .
- В разделе «Настройки подключения» выберите Cloud Pub/Sub и вставьте имя темы Pub/Sub, которую вы создали ранее.
- В разделе «Видимость» выберите «Сделать это приложение Google Chat доступным для определенных людей и групп в вашем домене» и введите свой адрес электронной почты.
- В разделе «Журналы» выберите « Записывать ошибки в журнал» и перейдите в раздел «Ведение журнала» .
Нажмите « Сохранить ».
Приложение готово к приему и ответам на сообщения в чате.
Запустите скрипт
В командной строке перейдите в свой рабочий каталог и запустите скрипт:
Node.js
npm install
npm start
Python
python -m venv env
source env/bin/activate
pip install -r requirements.txt -U
python app.py
Java
mvn compile exec:java -Dexec.mainClass=Main
При запуске кода приложение начинает прослушивать сообщения, публикуемые в топик Pub/Sub.
Протестируйте свое приложение для чата
Чтобы протестировать приложение «Чат», откройте личное сообщение в приложении «Чат» и отправьте сообщение:
Откройте Google Chat, используя учетную запись Google Workspace, которую вы указали при добавлении себя в качестве доверенного тестировщика.
- Нажмите новый чат» .
- В поле «Добавить 1 или более человек» введите название вашего приложения для чата.
Выберите ваше приложение для чата из результатов поиска. Откроется личное сообщение.
- В новом личном сообщении в приложении напишите
Helloи нажмитеenter.
Чтобы добавить доверенных тестировщиков и узнать больше о тестировании интерактивных функций, см. раздел «Тестирование интерактивных функций для приложений Google Chat» .
Устранение неполадок
Когда приложение или карточка Google Chat выдает ошибку, интерфейс чата отображает сообщение «Что-то пошло не так» или «Не удалось обработать ваш запрос». Иногда интерфейс чата не отображает никаких сообщений об ошибке, но приложение или карточка чата выдает неожиданный результат; например, сообщение на карточке может не появиться.
Хотя сообщение об ошибке может не отображаться в пользовательском интерфейсе чата, подробные сообщения об ошибках и данные журнала доступны для исправления ошибок, если включено ведение журнала ошибок для приложений чата. Для получения помощи по просмотру, отладке и исправлению ошибок см. раздел «Устранение неполадок и исправление ошибок Google Chat» .
Уборка
Чтобы избежать списания средств с вашего аккаунта Google Cloud за ресурсы, использованные в этом руководстве, мы рекомендуем удалить проект Cloud.
- В консоли Google Cloud перейдите на страницу «Управление ресурсами» > IAM и администрирование > Управление ресурсами .
- В списке проектов выберите проект, который хотите удалить, и нажмите кнопку «Удалить .
- В диалоговом окне введите идентификатор проекта, а затем нажмите «Завершить» , чтобы удалить проект.
Связанные темы
Чтобы добавить в ваше приложение для чата дополнительные функции, см. следующие разделы: