На этой странице рассказывается, как использовать Google Workspace Events API, чтобы создать подписку на ресурс Google Workspace. Подписка Google Workspace позволяет приложению получать информацию о событиях Google Workspace, которые представляют собой изменения ресурса Google Workspace. Чтобы узнать, какие ресурсы и типы событий поддерживает Google Workspace Events API, ознакомьтесь с обзором Google Workspace Events API.
На этой странице описаны следующие шаги по созданию подписки Google Workspace:
- Настройте среду.
- Создайте тему Google Cloud Pub/Sub и подпишитесь на нее. Используйте этот документ в качестве конечной точки для получения событий Google Workspace.
- Вызовите метод
createAPI Google Workspace Events для ресурсаSubscription. - Проверьте подписку Google Workspace, чтобы убедиться, что тема издатель-подписчик получает события, на которые вы подписались.
- При необходимости настройте отправку событий в конечную точку для вашего приложения, чтобы оно могло обрабатывать события и при необходимости выполнять действия.
Требования
Apps Script
- Чтобы использовать команды Google Cloud CLI в этом руководстве:
- Установите Google Cloud CLI.
- Чтобы
инициализировать CLI
gcloud, выполните следующий код:
gcloud init
- Проект Apps Script:
- Используйте свой проект Google Cloud вместо проекта по умолчанию, который автоматически создает Apps Script.
- Для всех областей действия, добавленных при настройке окна запроса доступа OAuth, необходимо также добавить области действия в файл
appsscript.jsonв проекте Apps Script. Например, если вы указали область действияchat.messages, добавьте следующий код: - Включите расширенный сервис
Google Workspace Events.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
- Проект Google Cloud с включенными платежными функциями. Для подписок на Chat необходимо также включить Chat API в облачном проекте и настроить поля Название приложения, URL аватара и Описание. Подробнее о том, как создать приложение Google Chat…
-
Требуется аутентификация и соответствующая область авторизации для каждого типа событий в подписке:
- Обычно требуется аутентификация пользователя с помощью окна запроса доступа OAuth, настроенного для приложения. При настройке окна запроса доступа необходимо указать область действия, чтобы поддерживать каждый тип событий для подписки. Чтобы настроить окно запроса доступа и определить необходимые области действия, ознакомьтесь с разделом Выбор областей действия.
- Чтобы подписаться на событие Chat в качестве приложения Chat, требуется аутентификация приложения с разовым одобрением администратора.
Python
- Python 3.6 или более поздней версии
- Инструмент управления пакетами pip
- Последние версии клиентских библиотек Google для Python. Чтобы установить или обновить их, выполните следующую команду в интерфейсе командной строки:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Чтобы использовать команды Google Cloud CLI в этом руководстве:
- Установите Google Cloud CLI.
- Чтобы
инициализировать CLI
gcloud, выполните следующий код:
gcloud init
- Проект Google Cloud с включенными платежными функциями. Для подписок на Chat необходимо также включить Chat API в облачном проекте и настроить поля Название приложения, URL аватара и Описание. Подробнее о том, как создать приложение Google Chat…
-
Требуется аутентификация и соответствующая область авторизации для каждого типа событий в подписке:
- Обычно требуется аутентификация пользователя с помощью окна запроса доступа OAuth, настроенного для приложения. При настройке окна запроса доступа необходимо указать область действия, чтобы поддерживать каждый тип событий для подписки. Чтобы настроить окно запроса доступа и определить необходимые области действия, ознакомьтесь с разделом Выбор областей действия.
- Чтобы подписаться на событие Chat в качестве приложения Chat, требуется аутентификация приложения с разовым одобрением администратора.
Как настроить среду
В следующем разделе рассказывается, как настроить среду перед созданием подписки Google Workspace.
Как включить Google Workspace Events API и Google Cloud Pub/Sub API
Прежде чем использовать API Google, их нужно включить в облачном проекте Google Cloud. В одном облачном проекте Google Cloud можно включить один или несколько API.Консоль Google Cloud
В консоли Google Cloud откройте проект Google Cloud для своего приложения и включите Google Workspace Events API и Pub/Sub API:
gcloud
В рабочем каталоге войдите в аккаунт Google:
gcloud auth loginУкажите облачный проект для приложения:
gcloud config set project PROJECT_IDЗамените
PROJECT_IDна идентификатор проекта облачного проекта для вашего приложения.Включите Google Workspace Events API и Google Cloud Pub/Sub API:
gcloud services enable pubsub.googleapis.com workspaceevents.googleapis.com
Как создать учетные данные идентификатора клиента OAuth
Выберите тип приложения, чтобы получить инструкции по созданию идентификатора клиента OAuth:
Веб-приложение
- В консоли Google Cloud нажмите на значок меню > Платформа аутентификации Google > Клиенты.
- Нажмите Создать клиента.
- Нажмите Тип приложения > Веб-приложение.
- В поле Название введите название учетных данных. Это название показывается только в консоли Google Cloud.
- Добавьте авторизованные URI, связанные с вашим приложением:
- Клиентские приложения (JavaScript). В разделе Разрешенные источники JavaScript нажмите Добавить URI. Затем введите URI, который будет использоваться для запросов браузера. Это позволяет определить домены, из которых ваше приложение может отправлять запросы к API на сервер OAuth 2.0.
- Серверные приложения (Java, Python и т. д.). В разделе Разрешенные URI перенаправления нажмите Добавить URI. Затем введите URI конечной точки, на которую сервер OAuth 2.0 может отправлять ответы.
- Нажмите Создать.
Новые учетные данные появятся в разделе Идентификаторы клиентов OAuth 2.0.
Обратите внимание, что секретные коды клиентов не используются для веб-приложений.
Android
- В консоли Google Cloud нажмите на значок меню > Платформа аутентификации Google > Клиенты.
- Нажмите Создать клиента.
- Нажмите Тип приложения > Android.
- В поле Название введите название учетных данных. Это название показывается только в консоли Google Cloud.
- В поле Название пакета введите название пакета из файла
AndroidManifest.xml. - В поле SHA-1 certificate fingerprint (Цифровой отпечаток сертификата SHA-1) введите сгенерированный цифровой отпечаток сертификата SHA-1.
- Нажмите Создать.
Созданные учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
iOS
- В консоли Google Cloud нажмите на значок меню > Платформа аутентификации Google > Клиенты.
- Нажмите Создать клиента.
- Нажмите Тип приложения > iOS.
- В поле Название введите название учетных данных. Это название показывается только в консоли Google Cloud.
- В поле Идентификатор пакета введите идентификатор пакета, указанный в файле
Info.plistприложения. - Необязательно: если ваше приложение есть в Apple App Store, укажите его идентификатор.
- Необязательно: в поле Идентификатор команды введите уникальную строку из 10 символов, сгенерированную Apple и назначенную вашей команде.
- Нажмите Создать.
Созданные учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
В приложении Chrome
- В консоли Google Cloud нажмите на значок меню > Платформа аутентификации Google > Клиенты.
- Нажмите Создать клиента.
- Нажмите Тип приложения > Расширение Chrome.
- В поле Название введите название учетных данных. Это название показывается только в консоли Google Cloud.
- В поле Идентификатор товара введите уникальную строку из 32 символов. Этот идентификатор можно найти в URL приложения в интернет-магазине Chrome и в Личном кабинете разработчика продуктов для интернет-магазина Chrome.
- Нажмите Создать.
Созданные учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
Компьютерное приложение
- В консоли Google Cloud нажмите на значок меню > Платформа аутентификации Google > Клиенты.
- Нажмите Создать клиента.
- Нажмите Тип приложения > Компьютерное приложение.
- В поле Название введите название учетных данных. Это название показывается только в консоли Google Cloud.
- Нажмите Создать.
Созданные учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
Телевизоры и устройства с ограниченным количеством входов
- В консоли Google Cloud нажмите на значок меню > Платформа аутентификации Google > Клиенты.
- Нажмите Создать клиента.
- Нажмите Тип приложения > Телевизоры и устройства с ограниченным вводом.
- В поле Название введите название учетных данных. Это название показывается только в консоли Google Cloud.
- Нажмите Создать.
Созданные учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
Универсальная платформа Windows
- В Google API Console нажмите на значок меню > > Клиенты.
- Нажмите Создать клиента.
- Нажмите Тип приложения > Универсальная платформа Windows (UWP).
- В поле "Название" введите название учетных данных. Это название показывается только в Google API Console.
- В поле "Идентификатор магазина" введите уникальный 12-значный идентификатор приложения в Microsoft Store. Его можно найти в URL приложения в Microsoft Store и в Центре партнеров.
- Нажмите Создать.
Созданные учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
Как скачать файл JSON с секретным кодом клиента
Файл с секретным кодом клиента представляет собой JSON-файл с учетными данными идентификатора клиента OAuth, на которые может ссылаться ваше приложение при предоставлении учетных данных.
В Google API Console нажмите на значок меню > APIs & Services (API и сервисы) > Credentials (Учетные данные).
В разделе Идентификаторы клиентов OAuth 2.0 нажмите на созданный вами идентификатор клиента.
Нажмите Скачать JSON.
Сохраните файл как
credentials.json.
Как создать тему Pub/Sub и подписаться на нее
В этом разделе вы создадите тему Pub/Sub и подписку на нее. Тема Pub/Sub служит конечной точкой уведомлений, в которой подписка Google Workspace получает события.
Подробнее о том, как создавать темы Pub/Sub и управлять ими, рассказывается в документации по Pub/Sub.
Чтобы создать тему Pub/Sub и подписаться на нее:
Google API Console
В Google API Console перейдите на страницу Pub/Sub:
Перейти в Google Cloud Pub/Sub
Убедитесь, что выбран облачный проект для вашего приложения.
Нажмите Создать тему и выполните следующие действия:
- Введите название темы, например
workspace-events-topic. - Оставьте флажок Добавить подписку по умолчанию установленным. Pub/Sub присваивает подписке по умолчанию название, похожее на название темы, например
workspace-events-topic-sub. - При необходимости измените или настройте дополнительные свойства темы.
- Введите название темы, например
Нажмите Создать. Полное название темы имеет формат
projects/PROJECT_ID/topics/TOPIC_ID. Полное имя понадобится вам на следующем шаге.Предоставьте доступ для публикации сообщений издатель-подписчик в вашей теме:
- На странице темы перейдите на боковую панель и откройте вкладку Разрешения.
- Нажмите Add Principal (Добавить субъекта).
- В поле Добавление субъектов добавьте сервисный аккаунт для приложения Google Workspace, которое отправляет события в вашу подписку:
- Для событий Chat:
- Для приложений Chat (созданных как дополнения Google Workspace, расширяющие возможности Chat) используйте адрес электронной почты сервисного аккаунта на странице конфигурации Chat API. Подробнее о том, как создать приложение Google Chat, использующее Pub/Sub…
- Для приложений Chat, которые не являются дополнениями Google Workspace, используйте
chat-api-push@system.gserviceaccount.com. Подробнее о том, как создать приложение Google Chat, использующее издатель-подписчик…
- Для событий Диска:
drive-api-event-push@system.gserviceaccount.com. - Для мероприятий Meet:
meet-api-event-push@system.gserviceaccount.com.
- Для событий Chat:
- В меню Назначить роли выберите
Pub/Sub Publisher. - Нажмите Сохранить. Обновление разрешений для темы может занять несколько минут.
gcloud
В облачном проекте создайте тему, выполнив следующую команду:
gcloud pubsub topics create TOPIC_IDЗамените
TOPIC_IDуникальным идентификатором темы, напримерworkspace-events-topic.В выходных данных будет указано полное название темы в формате
projects/PROJECT_ID/topics/TOPIC_ID. Запишите название и убедитесь, что значение атрибута PROJECT_ID – это идентификатор облачного проекта для вашего приложения. Название темы понадобится вам на следующем шаге и при создании подписки Google Workspace.Чтобы предоставить доступ на публикацию сообщений в теме:
gcloud pubsub topics add-iam-policy-binding TOPIC_NAME --member='serviceAccount:GOOGLE_WORKSPACE_APPLICATION' --role='roles/pubsub.publisher'Замените следующее:
TOPIC_NAME: полное название темы, которое было получено на предыдущем шаге. Формат:projects/PROJECT_ID/topics/TOPIC_ID.GOOGLE_WORKSPACE_APPLICATION– приложение Google Workspace, которое должно отправлять события в вашу подписку:- Чтобы получать события из Chat, используйте один из следующих сервисных аккаунтов:
- Для приложений Chat (созданных как дополнения Google Workspace, расширяющие возможности Chat) используйте адрес электронной почты сервисного аккаунта на странице конфигурации Chat API. Подробнее о том, как создать приложение Google Chat, использующее издатель-подписчик…
- Для приложений Chat, которые не являются дополнениями, используйте
chat-api-push@system.gserviceaccount.com. Подробнее о том, как создать приложение Google Chat, использующее издатель-подписчик…
- Чтобы получать события с Диска, используйте
drive-api-event-push@system.gserviceaccount.com. - Чтобы получать события из Meet, используйте
meet-api-event-push@system.gserviceaccount.com.
- Чтобы получать события из Chat, используйте один из следующих сервисных аккаунтов:
Обновление разрешений для темы может занять несколько минут.
Создайте подписку Pub/Sub для темы:
gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAMEЗамените следующее:
SUBSCRIPTION_NAME– название подписки, напримерworkspace-events-subscription.TOPIC_NAME– название темы, созданной на предыдущем шаге.
Как подписаться на ресурс Google Workspace
В этом разделе вы подписываетесь на ресурс Google Workspace, события которого хотите отслеживать.
Выберите и укажите целевой ресурс
В подписке Google Workspace целевой ресурс – это ресурс Google Workspace, события которого вы отслеживаете. Целевой ресурс представлен в поле targetResource подписки и отформатирован с использованием полного имени ресурса. Например, для подписки, которая отслеживает чат-группу (spaces/AAAABBBBBBB), значение targetResource – //chat.googleapis.com/spaces/AAAABBBBBBB.
Как определить целевой ресурс для Chat
| Целевой ресурс | Формат | Ограничения |
|---|---|---|
| Пробел |
где SPACE – идентификатор в
названии ресурса ресурса Chat API |
Пользователь Chat или приложение Chat, авторизующее подписку, должны быть участниками чат-группы через аккаунт Google Workspace или Google. Поддерживаемые форматы: |
| Все чат-группы пользователя |
|
Подписка получает события только для чат-групп, в которых пользователь является участником через аккаунт Google Workspace или Google. Поддерживается только аутентификация пользователей. |
| Пользователь |
где USER – идентификатор в
названии ресурса ресурса Chat API |
Подписка получает только события, связанные с пользователем, который ее авторизовал. Пользователь не может оформить подписку от имени другого пользователя. Поддерживается только аутентификация пользователей. |
| Клиент (, предварительная версия для разработчиков) |
где CUSTOMER – идентификатор клиента. Вы также можете использовать псевдоним |
Подписка получает события для всех чат-групп и пользователей, управляемых доменом клиента. Поддерживает только аутентификацию приложений с одобрением администратора. |
Как определить целевой ресурс для Диска
| Целевой ресурс | Формат | Ограничения (если применимо) |
|---|---|---|
| Файл |
//drive.googleapis.com/files/FILE
где FILE – идентификатор в
названии ресурса ресурса Drive API |
У пользователя, который авторизует подписку, должно быть разрешение на файл в подписке относительно события подписки. |
| Общий диск |
//drive.googleapis.com/drives/DRIVE
где DRIVE – идентификатор в названии ресурса
ресурса Drive API |
Подписка получает события только для объектов на общем диске, где пользователь является участником через аккаунт Google Workspace или аккаунт Google. |
Как определить целевой ресурс для Meet
| Целевой ресурс | Формат | Ограничения (если применимо) |
|---|---|---|
| Чат-группа встречи | //meet.googleapis.com/spaces/SPACE
где SPACE – идентификатор в
названии ресурса Meet REST API |
|
| Пользователь | //cloudidentity.googleapis.com/users/USER
где USER – это идентификатор в поле
|
Подписка получает события обо всех переговорных комнатах, владельцем которых является пользователь. Обычно владелец переговорной комнаты также является организатором мероприятия Google Календаря, связанного с переговорной комнатой. |
Как создать подписку Google Workspace
Чтобы создать подписку, используйте метод subscriptions.create Google Workspace Events API для создания ресурса Subscription.
Укажите следующие поля:
targetResource– сервис Google Workspace, указанный в предыдущем разделе, отформатированный с использованием полного названия ресурса.eventTypes– массив из одного или нескольких типов событий, которые вы хотите получать для ресурса. Например, если приложению нужно знать только о новых сообщениях, опубликованных в чат-группе Chat, оно может подписаться только на события, связанные с созданием сообщений.notificationEndpoint– конечная точка уведомлений, куда подписка Google Workspace отправляет события. Используйте тему Pub/Sub, созданную в предыдущем разделе.payloadOptions: варианты указания того, сколько данных о ресурсах нужно включить в полезную нагрузку события. Эта конфигурация влияет на срок действия подписки. Подробнее о данных о событиях…
Чтобы оформить подписку Google Workspace:
Apps Script
В проекте Apps Script создайте новый файл скрипта с названием
createSubscriptionи добавьте следующий код:function createSubscription() { // The Google Workspace resource to monitor for events. const targetResource = 'TARGET_RESOURCE'; // The types of events to receive. const eventTypes = [EVENT_TYPES]; // The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic. const pubsubTopic = 'TOPIC_NAME'; // Whether to include resource data or not. const resourceData = RESOURCE_DATA; // Call the Workspace Events API using the advanced service. const response = WorkspaceEvents.Subscriptions.create({ targetResource: targetResource, eventTypes: eventTypes, notificationEndpoint: { pubsubTopic: pubsubTopic, }, payloadOptions: { includeResource: resourceData } }); console.log(response); }Замените следующее:
TARGET_RESOURCE– ресурс Google Workspace, на который вы подписываетесь, в формате полного имени ресурса. Например, чтобы подписаться на чат-группу с идентификаторомAAAABBBB, используйте//chat.googleapis.com/spaces/AAAABBBB.EVENT_TYPES– один или несколько типов событий, на которые вы хотите подписаться в целевом ресурсе. Формат: массив строк, например'google.workspace.chat.message.v1.created'.TOPIC_NAME– полное название темы издатель-подписчик, созданной в вашем облачном проекте. Формат:projects/PROJECT_ID/topics/TOPIC_ID.RESOURCE_DATA– логическое значение, указывающее, включены ли в полезную нагрузку данные ресурса:True– включает все данные ресурса. Чтобы ограничить количество полей, добавьте полеfieldMaskи укажите хотя бы одно поле для измененного ресурса. Только подписки на ресурсы Chat поддерживают включение данных ресурсов.False: данные о ресурсах исключены.
Чтобы создать подписку Google Workspace, запустите функцию
createSubscriptionв проекте Apps Script.
Python
В рабочем каталоге создайте файл с названием
create_subscription.pyи добавьте в него следующий код:"""Create subscription.""" from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Specify required scopes. SCOPES = [SCOPES] # Authenticate with Google Workspace and get user authentication. flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES) CREDENTIALS = flow.run_local_server() # The Google Workspace resource to monitor for events. TARGET_RESOURCE = 'TARGET_RESOURCE' # The types of events to receive. EVENT_TYPES = [EVENT_TYPES] # The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic. TOPIC = 'TOPIC_NAME' # Call the Workspace Events API using the service endpoint. service = build( 'workspaceevents', 'v1', credentials=CREDENTIALS, ) BODY = { 'target_resource': TARGET_RESOURCE, 'event_types': EVENT_TYPES, 'notification_endpoint': {'pubsub_topic': TOPIC}, 'payload_options': {'include_resource': RESOURCE_DATA}, } response = service.subscriptions().create(body=BODY).execute() print(response)Замените следующее:
SCOPES– одна или несколько областей действия OAuth, поддерживающих каждый тип событий для подписки. Форматируется как массив строк. Чтобы указать несколько областей, перечислите их через запятую. Пример:'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'.TARGET_RESOURCE– ресурс Google Workspace, на который вы подписываетесь, в формате полного имени ресурса. Например, чтобы подписаться на чат-группу с идентификаторомAAAABBBB, используйте//chat.googleapis.com/spaces/AAAABBBB.EVENT_TYPES– один или несколько типов событий, на которые вы хотите подписаться в целевом ресурсе. Формат: массив строк, например'google.workspace.chat.message.v1.created'.TOPIC_NAME– полное название темы издатель-подписчик, созданной в вашем облачном проекте. Формат:projects/PROJECT_ID/topics/TOPIC_ID.RESOURCE_DATA– логическое значение, указывающее, включены ли в полезную нагрузку данные ресурса:True– включает все данные ресурса. Чтобы ограничить количество полей, добавьте полеfieldMaskи укажите хотя бы одно поле для измененного ресурса. Только подписки на ресурсы Chat поддерживают включение данных ресурсов.False: данные о ресурсах исключены.
Чтобы создать подписку Google Workspace, выполните в терминале следующие команды:
python3 create_subscription.py
Google Workspace Events API возвращает завершенную долго выполняющуюся операцию, которая содержит экземпляр созданного вами ресурса Subscription.
Как протестировать подписку Google Workspace
Чтобы проверить, получаете ли вы события Google Workspace, вы можете активировать событие и извлечь сообщения в подписку издатель-подписчик.
Чтобы протестировать подписку Google Workspace:
Google API Console
Запускать один или несколько типов событий в целевом ресурсе подписки Google Workspace. Например, если вы подписались на новые сообщения в чат-группе Chat, опубликуйте сообщение в этой группе.
В Google API Console перейдите на страницу Pub/Sub:
Убедитесь, что выбран облачный проект для вашего приложения.
В меню Pub/Sub нажмите Подписки.
В таблице найдите подписку Pub/Sub для своей темы и нажмите на ее название.
Откройте вкладку Сообщения.
Нажмите Получить. На создание сообщения Pub/Sub на основе события может уйти несколько минут.
gcloud
Запускать один или несколько типов событий в целевом ресурсе подписки Google Workspace. Например, если вы подписались на новые сообщения в чат-группе Chat, опубликуйте сообщение в этой группе.
Выполните следующую команду:
gcloud pubsub subscriptions pull PUBSUB_SUBSCRIPTION_NAME --format=json --limit=MESSAGE_COUNT --auto-ackЗамените следующее:
PUBSUB_SUBSCRIPTION_NAME– полное название подписки издатель-подписчик в форматеprojects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID.MESSAGE_COUNT– максимальное количество сообщений издатель-подписчик, которые вы хотите получить.
На создание сообщения Pub/Sub на основе события может уйти несколько минут.
Для каждого события Google Workspace, которое вы активировали, в вашу подписку Pub/Sub отправляется сообщение, содержащее это событие. Подробную информацию можно найти в статье Как получать события в виде сообщений Google Cloud Pub/Sub.
Как настроить получение событий в приложении
Созданная вами подписка издатель-подписчик основана на извлечении. После тестирования подписки издатель-подписчик вы можете изменить тип доставки, чтобы изменить способ получения событий приложением. Например, вы можете настроить подписку издатель-подписчик на тип доставки push, чтобы ваше приложение могло получать события непосредственно в конечную точку приложения.
Информацию о настройке подписки Pub/Sub можно найти в документации по Pub/Sub.
Как подписаться на события чат-группы Chat в качестве приложения Google Chat
Вы можете подписаться на события Chat как приложение Chat из чат-группы, в которой это приложение является участником. Приложения Chat не могут подписываться на события пользователей.
Написать скрипт, который вызывает Google Workspace Events API
Вот как создать подписку на события чат-группы с аутентификацией приложения и одобрением администратора:
- При необходимости создайте приложение Chat.
Подписаться на ресурс Chat, но:
- Вместо аутентификации пользователя выполните аутентификацию как приложение Chat с однократным одобрением администратора.
Укажите области действия авторизации, которые позволят приложению Chat подписываться на события Chat. Области авторизации всегда начинаются с
chat.appи включают следующие элементы:https://www.googleapis.com/auth/chat.app.memberships: Подпишитесь на события участников чат-группы.https://www.googleapis.com/auth/chat.app.memberships.readonly: Подпишитесь на события участников чат-группы.https://www.googleapis.com/auth/chat.app.messages.readonly: Подпишитесь на события сообщений и реакций в чат-группе.https://www.googleapis.com/auth/chat.app.spaces: Подпишитесь на события чат-группы.https://www.googleapis.com/auth/chat.app.spaces.readonly: Подпишитесь на события чат-группы.
В следующем примере кода показано, как подписаться на события сообщений в определенной чат-группе Chat:
Python
"""Create subscription."""
from google.oauth2 import service_account
from apiclient.discovery import build
# Specify required scopes.
SCOPES = ['https://www.googleapis.com/auth/chat.app.messages.readonly']
# Specify service account details.
CREDENTIALS = (
service_account.Credentials.from_service_account_file('credentials.json')
.with_scopes(SCOPES)
)
# The Google Workspace resource to monitor for events.
TARGET_RESOURCE = '//chat.googleapis.com/spaces/SPACE_ID'
# The types of events to receive.
EVENT_TYPES = [
'google.workspace.chat.message.v1.created',
'google.workspace.chat.message.v1.updated',
'google.workspace.chat.message.v1.deleted',
]
# The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic.
TOPIC = 'TOPIC_NAME'
# Call the Workspace Events API using the service endpoint.
service = build(
'workspaceevents',
'v1',
credentials=CREDENTIALS,
)
BODY = {
'target_resource': TARGET_RESOURCE,
'event_types': EVENT_TYPES,
'notification_endpoint': {'pubsub_topic': TOPIC},
'payload_options': {'include_resource': RESOURCE_DATA},
}
response = service.subscriptions().create(body=BODY).execute()
print(response)
Замените следующее:
SPACE_ID– название чат-группы, которое можно получить с помощью методаspaces.listв Chat API или из URL чат-группы.TOPIC_NAME– полное название темы издатель-подписчик, созданной в вашем облачном проекте. Формат:projects/PROJECT_ID/topics/TOPIC_ID.RESOURCE_DATA– логическое значение, указывающее, включены ли в полезную нагрузку данные ресурса:True– включает все данные ресурса. Чтобы ограничить количество полей, добавьте полеfieldMaskи укажите хотя бы одно поле для измененного ресурса. Только подписки на ресурсы Chat поддерживают включение данных ресурсов.False: данные о ресурсах исключены.
Как подписаться на все события Chat в организации Google Workspace в качестве приложения Google Chat
Подписка клиента позволяет приложению Chat отслеживать события чат-групп и события пользователей во всей организации Google Workspace.
Подробнее о том, как доставляются события для подписок клиентов, в том числе в чат-группах, управляемых внешними организациями, рассказывается в статье Ограничения подписок клиентов и особенности доставки событий.
Требования и ограничения
- Аутентификация: Как выполнить аутентификацию приложения Chat с помощью одноразового одобрения администратора
- SKU: У организации Google Workspace должна быть хотя бы одна лицензия Enterprise. Обратите внимание, что это требование не будет строго соблюдаться на этапе программы предварительной версии для разработчиков, но будет введено в будущем (о чем мы сообщим отдельно).
- Уникальность. Приложение Chat может создать только одну подписку клиента для определенной организации Google Workspace. В организации Google Workspace может быть не более пяти подписок, созданных разными приложениями Chat.
- Области действия. В зависимости от типов событий, которые вы хотите получать, требуется одна или несколько из следующих областей действия:
https://www.googleapis.com/auth/chat.app.all.spaces.readonly– для получения событий о чат-группах.https://www.googleapis.com/auth/chat.app.all.memberships.readonly– для получения событий, связанных со спонсорством.https://www.googleapis.com/auth/chat.app.all.messages.readonly– для получения событий о сообщениях и реакциях.https://www.googleapis.com/auth/chat.app.all.users.readstate.readonly( предварительная версия для разработчиков) – для получения событий о статусе прочтения.
Как создать подписку клиента
Чтобы создать подписку клиента, вызовите метод subscriptions.create.
В следующем примере кода Python создается подписка клиента:
Python
"""Create a customer subscription."""
from google.oauth2 import service_account
from apiclient.discovery import build
# Specify required scopes.
# Replace with the scopes needed for the event types you want to receive.
SCOPES = ['https://www.googleapis.com/auth/chat.app.all.messages.readonly']
# Specify service account details.
CREDENTIALS = (
service_account.Credentials.from_service_account_file('credentials.json')
.with_scopes(SCOPES)
)
# Monitor all events for the Google Workspace organization.
TARGET_RESOURCE = '//admin.googleapis.com/customers/CUSTOMER_ID'
# The types of events to receive.
EVENT_TYPES = [
'google.workspace.chat.message.v1.created',
'google.workspace.chat.message.v1.updated',
'google.workspace.chat.message.v1.deleted',
]
# The endpoint to deliver events to.
TOPIC = 'TOPIC_NAME'
# Call the Workspace Events API.
# Note: Use the v1beta endpoint for Developer Preview features.
service = build(
'workspaceevents',
'v1beta',
credentials=CREDENTIALS,
)
BODY = {
'target_resource': TARGET_RESOURCE,
'event_types': EVENT_TYPES,
'notification_endpoint': {'pubsub_topic': TOPIC},
'payload_options': {'include_resource': RESOURCE_DATA},
}
response = service.subscriptions().create(body=BODY).execute()
print(response)
Замените следующее:
CUSTOMER_ID– идентификатор клиента. Вы также можете использовать псевдонимmy_customerдля организации Google Workspace приложения Chat.TOPIC_NAME– полное название темы издателя-подписчика, созданной в вашем облачном проекте. Формат:projects/PROJECT_ID/topics/TOPIC_ID.RESOURCE_DATA– логическое значение, указывающее, включены ли данные ресурса в полезную нагрузку подписки:True– включает все данные ресурса. Чтобы ограничить количество полей, добавьте полеfieldMaskи укажите хотя бы одно поле для измененного ресурса. Данные ресурсов можно включить только в подписки на ресурсы Chat.False: данные о ресурсах исключены.