На этой странице объясняется, как использовать 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.
- Вызовите метод
createGoogle Workspace Events API для ресурса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 в облачном проекте и настроить поля App name (Название приложения), Avatar URL (URL аватара) и Description (Описание). Подробнее о том, как создать приложение 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 в облачном проекте и настроить поля App name (Название приложения), Avatar URL (URL аватара) и Description (Описание). Подробнее о том, как создать приложение 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 Auth platform (Платформа Google Auth) > Clients (Клиенты).
- Нажмите Create Client (Создать клиента).
- Нажмите Тип приложения > Веб-приложение.
- В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
- Добавьте авторизованные URI, связанные с вашим приложением:
- Клиентские приложения (JavaScript). В разделе Разрешенные источники JavaScript нажмите Добавить URI. Затем введите URI, который будет использоваться для запросов браузера. Это домены, из которых ваше приложение может отправлять запросы к API на сервер OAuth 2.0.
- Серверные приложения (Java, Python и т. д.) – в разделе Разрешенные URI перенаправления нажмите Добавить URI. Затем введите URI конечной точки, на который сервер OAuth 2.0 может отправлять ответы.
- Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
- Нажмите Создать.
Новые учетные данные появятся в разделе Идентификаторы клиентов OAuth 2.0.
Обратите внимание, что секретные коды клиентов не используются для веб-приложений.
Android
- В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).
- Нажмите Create Client (Создать клиента).
- Нажмите Тип приложения > Android.
- В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
- В поле Название пакета введите название пакета из файла
AndroidManifest.xml. - В поле Цифровой отпечаток сертификата SHA-1 введите сгенерированный цифровой отпечаток сертификата SHA-1.
- Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
- Нажмите Создать.
Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
iOS
- В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).
- Нажмите Create Client (Создать клиента).
- Нажмите Тип приложения > iOS.
- В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
- В поле Идентификатор пакета введите идентификатор пакета, указанный в файле
Info.plistприложения. - Если ваше приложение есть в Apple App Store, укажите его идентификатор в этом магазине (необязательно).
- При необходимости в поле Идентификатор команды введите уникальную строку из 10 символов, сгенерированную Apple и назначенную вашей команде.
- Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
- Нажмите Создать.
Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
В приложении Chrome
- В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).
- Нажмите Create Client (Создать клиента).
- Нажмите Тип приложения > Расширение Chrome.
- В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
- В поле Идентификатор объекта введите уникальный идентификатор приложения, состоящий из 32 символов. Этот идентификатор можно найти в URL приложения в интернет-магазине Chrome и в Личном кабинете разработчика продуктов для интернет-магазина Chrome.
- Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
- Нажмите Создать.
Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
Компьютерное приложение
- В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).
- Нажмите Create Client (Создать клиента).
- Нажмите Тип приложения > Компьютерное приложение.
- В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
- Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
- Нажмите Создать.
Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
Телевизоры и устройства с ограниченными возможностями ввода
- В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).
- Нажмите Create Client (Создать клиента).
- Нажмите Тип приложения > Телевизоры и устройства с ограниченным вводом.
- В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
- Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
- Нажмите Создать.
Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
Универсальная платформа Windows
- В Google API Console нажмите на значок меню > > Clients (Клиенты).
- Нажмите Create Client (Создать клиента).
- Нажмите Тип приложения > Универсальная платформа Windows (UWP).
- В поле "Название" введите название учетных данных. Это название будет показываться только в Google API Console.
- В поле "Идентификатор магазина" введите уникальный 12-значный идентификатор Microsoft Store. Его можно найти в URL приложения в Microsoft Store и в Центре партнеров.
- Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
- Нажмите Создать.
Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".
Скачайте JSON-файл с секретным кодом клиента
Файл секретного кода клиента – это JSON-представление учетных данных идентификатора клиента OAuth, на которые может ссылаться ваше приложение при предоставлении учетных данных.
В Google API Console нажмите на значок меню > APIs & Services (API и сервисы) > Credentials (Учетные данные).
В разделе Идентификаторы клиентов OAuth 2.0 нажмите на созданный идентификатор клиента.
Нажмите Скачать JSON.
Сохраните файл под названием
credentials.json.
Как создать тему 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. Это полное имя понадобится вам на следующем шаге.Предоставьте доступ к публикации сообщений Pub/Sub в вашей теме:
- На странице темы перейдите на боковую панель и откройте вкладку Разрешения.
- Нажмите Add Principal (Добавить пользователя).
- В поле Добавление субъектов добавьте сервисный аккаунт для приложения Google Workspace, которое доставляет события в вашу подписку:
- Для событий Chat:
chat-api-push@system.gserviceaccount.com. - Для событий Диска:
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, авторизующие подписку, должны быть участниками чат-группы через свой аккаунт Google Workspace или Google. Поддерживаемые форматы: |
| Все чат-группы пользователя |
|
Подписка получает события только для чат-групп, в которых пользователь является участником через свой аккаунт Google Workspace или Google. Поддерживается только аутентификация пользователей. |
| Пользователь |
где USER – идентификатор в
названии ресурса Chat API |
Подписка получает только события, связанные с пользователем, который авторизовал подписку. Пользователь не может авторизовать подписку от имени других пользователей. Поддерживается только аутентификация пользователей. |
| Клиент (предварительная версия для разработчиков) |
где CUSTOMER – идентификатор клиента. Вы также можете использовать псевдоним |
Подписка получает события для всех чат-групп и пользователей, управляемых доменом клиента. Поддерживается только аутентификация приложения с одобрением администратора. |
Как определить целевой ресурс для Диска
| Целевой ресурс | Формат | Ограничения (если применимо) |
|---|---|---|
| Файл |
//drive.googleapis.com/files/FILE
где FILE – идентификатор в
названии ресурса ресурса |
Пользователь, который авторизует подписку, должен иметь разрешение на доступ к файлу в рамках подписки, связанной с событием подписки. |
| Общий диск |
//drive.googleapis.com/drives/DRIVE
где DRIVE – идентификатор в названии ресурса ресурса |
Подписка получает события только для объектов на общем диске, участником которого пользователь является через свой аккаунт Google Workspace или аккаунт Google. |
Как определить целевой ресурс для Meet
| Целевой ресурс | Формат | Ограничения (если применимо) |
|---|---|---|
| Чат-группа встречи | //meet.googleapis.com/spaces/SPACE
где SPACE – идентификатор в
названии ресурса ресурса |
|
| Пользователь | //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 для своей темы и нажмите на ее название.
Откройте вкладку Сообщения.
Нажмите Pull (Извлечь). На создание сообщения 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, которое вы активировали, в вашу подписку издатель-подписчик доставляется сообщение, содержащее это событие. Подробнее о том, как получать события в виде сообщений Google Cloud Pub/Sub…
Как настроить получение событий в приложении
Созданная вами подписка издатель-подписчик основана на запросах. После тестирования подписки издатель-подписчик вы можете изменить тип доставки, чтобы изменить способ получения событий приложением. Например, вы можете настроить подписку издатель-подписчик на тип доставки push, чтобы ваше приложение могло получать события непосредственно в конечную точку приложения.
Подробнее о настройке подписки Pub/Sub…
Как подписаться на события чат-группы Chat в качестве приложения Google Chat
Вы можете подписаться на события Chat как приложение Chat из чат-группы, в которой состоит приложение Chat. Приложения Chat не могут подписываться на события пользователей.
Напишите скрипт, который вызывает Google Workspace Events API
Чтобы создать подписку на события чат-группы Chat с аутентификацией приложения и одобрением администратора, выполните следующие действия:
- При необходимости создайте приложение Chat.
Подписаться на ресурс Chat, но:
- Вместо аутентификации пользователя выполните аутентификацию как приложение Chat с однократным одобрением администратора.
Укажите области действия авторизации, которые позволяют приложению Chat подписываться на события Chat. Эти области авторизации всегда начинаются с
chat.appи включают следующее:https://www.googleapis.com/auth/chat.app.memberships– подписка на события участников чат-группы Chat.https://www.googleapis.com/auth/chat.app.memberships.readonly– подписка на события участников чат-группы Chat.https://www.googleapis.com/auth/chat.app.messages.readonly: подписка на события сообщений и откликов в чат-группе Chat.https://www.googleapis.com/auth/chat.app.spaces– подписка на события чат-группы Chat.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: не включает данные о ресурсах.