На этой странице объясняется, как использовать API событий Google Workspace для создания подписки на ресурс Google Workspace. Подписка на Google Workspace позволяет вашему приложению получать информацию о событиях Google Workspace , которые представляют собой изменения в ресурсе Google Workspace. Чтобы узнать, какие ресурсы и типы событий поддерживает API событий Google Workspace, см. обзор API событий Google Workspace .
На этой странице описаны следующие шаги для создания подписки на Google Workspace:
- Настройте свою среду.
- Создайте тему Google Cloud Pub/Sub и подпишитесь на неё. Используйте этот документ в качестве конечной точки для получения событий Google Workspace.
- Вызовите метод `
createAPI событий Google Workspace для ресурсаSubscription. - Проверьте свою подписку на Google Workspace, чтобы убедиться, что ваша тема Pub/Sub получает события, на которые вы подписаны.
- При желании можно настроить способ отправки событий на конечную точку вашего приложения, чтобы приложение могло обработать событие и, при необходимости, предпринять соответствующие действия.
Предварительные требования
Apps Script
- Чтобы использовать команды Google Cloud CLI, описанные в этом руководстве:
- Установите Google Cloud CLI .
- Для инициализации интерфейса командной строки
gcloudвыполните следующий код:
gcloud init
- Проект на Apps Script:
- Используйте свой проект Google Cloud вместо проекта, автоматически создаваемого Apps Script по умолчанию.
- Для всех областей действия (scopes), которые вы добавили для настройки экрана согласия OAuth, необходимо также добавить эти области в файл
appsscript.jsonв вашем проекте Apps Script. Например, если вы указали область действияchat.messages, добавьте следующее: - Включите расширенную службу «
Google Workspace Events.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages" ]
- Проект Google Cloud с включенной функцией выставления счетов. Для подписки на чат необходимо также включить API чата в вашем проекте Cloud и настроить поля «Имя приложения» , «URL-адрес аватара» и «Описание» . Подробнее см. в разделе «Создание приложения Google Chat» .
- Для каждого типа событий в подписке требуется аутентификация и соответствующая область авторизации :
- Как правило, требуется аутентификация пользователя с помощью экрана согласия OAuth, настроенного для приложения. При настройке экрана согласия необходимо указать область действия для поддержки каждого типа событий в рамках подписки. Чтобы настроить экран согласия и определить необходимые области действия, см. раздел «Выбор областей действия» .
- Для подписки на событие чата в качестве приложения чата требуется аутентификация приложения с одноразовым подтверждением администратора .
Python
- Python 3.6 или выше
- Инструмент управления пакетами pip
- Новейшие клиентские библиотеки Google для Python. Для их установки или обновления выполните следующую команду в командной строке:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Чтобы использовать команды Google Cloud CLI, описанные в этом руководстве:
- Установите Google Cloud CLI .
- Для инициализации интерфейса командной строки
gcloudвыполните следующий код:
gcloud init
- Проект Google Cloud с включенной функцией выставления счетов. Для подписки на чат необходимо также включить API чата в вашем проекте Cloud и настроить поля «Имя приложения» , «URL-адрес аватара» и «Описание» . Подробнее см. в разделе «Создание приложения Google Chat» .
- Для каждого типа событий в подписке требуется аутентификация и соответствующая область авторизации :
- Как правило, требуется аутентификация пользователя с помощью экрана согласия OAuth, настроенного для приложения. При настройке экрана согласия необходимо указать область действия для поддержки каждого типа событий в рамках подписки. Чтобы настроить экран согласия и определить необходимые области действия, см. раздел «Выбор областей действия» .
- Для подписки на событие чата в качестве приложения чата требуется аутентификация приложения с одноразовым подтверждением администратора .
Настройте свою среду
В следующем разделе объясняется, как настроить рабочую среду перед созданием подписки на Google Workspace.
Включите API событий Google Workspace и API Google Cloud Pub/Sub.
Перед использованием API Google необходимо включить их в проекте Google Cloud. В одном проекте Google Cloud можно включить один или несколько API.Консоль Google Cloud
В консоли Google Cloud откройте проект Google Cloud для вашего приложения и включите API событий Google Workspace и API публикации/подписки:
gcloud
В своей рабочей директории войдите в свой аккаунт Google:
gcloud auth loginУстановите для своего приложения облачный проект:
gcloud config set project PROJECT_IDЗамените
PROJECT_IDна идентификатор проекта Cloud для вашего приложения.Включите API событий Google Workspace и API Google Cloud Pub/Sub:
gcloud services enable pubsub.googleapis.com workspaceevents.googleapis.com
Создание учетных данных клиента OAuth
Выберите тип вашего приложения , чтобы получить подробные инструкции по созданию идентификатора клиента OAuth:
Веб-приложение
- В консоли Google API перейдите в > Платформа аутентификации Google > Клиенты .
- Нажмите «Создать клиента» .
- Выберите «Тип приложения» > «Веб-приложение» .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google API.
- Добавьте авторизованные URI, связанные с вашим приложением:
- Клиентские приложения (JavaScript) – В разделе «Авторизованные источники JavaScript» нажмите «Добавить URI» . Затем введите URI, который будет использоваться для запросов браузера. Это определяет домены, с которых ваше приложение может отправлять API-запросы на сервер OAuth 2.0.
- Для серверных приложений (Java, Python и другие) — в разделе «Авторизованные URI перенаправления» нажмите «Добавить URI» . Затем введите URI конечной точки, на которую сервер OAuth 2.0 сможет отправлять ответы.
- Нажмите «Создать» .
Вновь созданные учетные данные отображаются в разделе «Идентификаторы клиентов OAuth 2.0» .
Обратите внимание на идентификатор клиента (Client ID). Секретные ключи клиента не используются в веб-приложениях.
Android
- В консоли Google API перейдите в > Платформа аутентификации Google > Клиенты .
- Нажмите «Создать клиента» .
- Нажмите «Тип приложения» > «Android» .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google API.
- В поле "Имя пакета" введите имя пакета из файла
AndroidManifest.xml. - В поле "Отпечаток сертификата SHA-1" введите сгенерированный отпечаток сертификата SHA-1 .
- Нажмите «Создать» .
Вновь созданные учетные данные отображаются в разделе "Идентификаторы клиентов OAuth 2.0".
iOS
- В консоли Google API перейдите в > Платформа аутентификации Google > Клиенты .
- Нажмите «Создать клиента» .
- Нажмите «Тип приложения» > «iOS» .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google API.
- В поле "Идентификатор пакета" введите идентификатор пакета, указанный в файле
Info.plistприложения. - Необязательно: если ваше приложение отображается в Apple App Store, введите идентификатор приложения в App Store.
- Необязательно: в поле «Идентификатор команды» введите уникальную 10-символьную строку, сгенерированную Apple и присвоенную вашей команде.
- Нажмите «Создать» .
Вновь созданные учетные данные отображаются в разделе "Идентификаторы клиентов OAuth 2.0".
приложение Chrome
- В консоли Google API перейдите в > Платформа аутентификации Google > Клиенты .
- Нажмите «Создать клиента» .
- Нажмите «Тип приложения» > «Расширение Chrome» .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google API.
- В поле «Идентификатор элемента» введите уникальный 32-символьный идентификатор вашего приложения. Этот идентификатор можно найти в URL-адресе вашего приложения в Chrome Web Store и в панели разработчика Chrome Web Store .
- Нажмите «Создать» .
Вновь созданные учетные данные отображаются в разделе "Идентификаторы клиентов OAuth 2.0".
Настольное приложение
- В консоли Google API перейдите в > Платформа аутентификации Google > Клиенты .
- Нажмите «Создать клиента» .
- Выберите «Тип приложения» > «Настольное приложение» .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google API.
- Нажмите «Создать» .
Вновь созданные учетные данные отображаются в разделе "Идентификаторы клиентов OAuth 2.0".
Телевизоры и устройства с ограниченным набором входных сигналов
- В консоли Google API перейдите в > Платформа аутентификации Google > Клиенты .
- Нажмите «Создать клиента» .
- Нажмите «Тип приложения» > «Телевизоры и устройства ввода с ограниченным набором параметров» .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google API.
- Нажмите «Создать» .
Вновь созданные учетные данные отображаются в разделе "Идентификаторы клиентов OAuth 2.0".
Универсальная платформа Windows (UWP)
- В консоли Google API перейдите в > Платформа аутентификации Google > Клиенты .
- Нажмите «Создать клиента» .
- Щелкните Тип приложения > Универсальная платформа Windows (UWP) .
- В поле «Имя» введите имя для учетных данных. Это имя отображается только в консоли Google API.
- В поле «Идентификатор магазина» введите уникальный 12-символьный идентификатор вашего приложения в Microsoft Store. Этот идентификатор можно найти в URL-адресе вашего приложения в Microsoft Store и в Центре партнеров .
- Нажмите «Создать» .
Вновь созданные учетные данные отображаются в разделе "Идентификаторы клиентов OAuth 2.0".
Загрузите JSON-файл с секретным ключом клиента.
Файл с секретными данными клиента представляет собой JSON-представление учетных данных идентификатора клиента OAuth, на которые ваше приложение может ссылаться при предоставлении учетных данных.
В консоли Google API перейдите в > API и сервисы > Учетные данные .
В разделе «Идентификаторы клиентов OAuth 2.0» щелкните созданный вами идентификатор клиента.
Нажмите «Скачать JSON» .
Сохраните файл как
credentials.json.
Создайте тему Pub/Sub и подпишитесь на нее.
В этом разделе вы создаёте тему Pub/Sub и подписку на неё. Ваша тема Pub/Sub служит конечной точкой уведомлений, куда ваша подписка Google Workspace получает события.
Для получения дополнительной информации о создании и управлении темами Pub/Sub см. документацию Pub/Sub .
Чтобы создать тему Pub/Sub и подписаться на неё:
Консоль Google API
В консоли Google API перейдите на страницу «Публикация/Подписка»:
Перейдите на страницу Google Cloud Pub/Sub.
Убедитесь, что для вашего приложения выбран облачный проект.
Нажмите кнопку , создайте тему и выполните следующие действия:
- Введите название для вашей темы, например,
workspace-events-topic. - Оставьте выбранным параметр «Добавить подписку по умолчанию» . Pub/Sub присваивает этой подписке по умолчанию имя, похожее на имя вашей темы, например,
workspace-events-topic-sub. - Необязательно: обновите или настройте дополнительные свойства для вашей темы.
- Введите название для вашей темы, например,
Нажмите «Создать» . Полное название вашей темы имеет формат
projects/ PROJECT_ID /topics/ TOPIC_ID. Используйте это полное название на следующем шаге.Предоставьте доступ на публикацию сообщений Pub/Sub в вашей теме:
- На странице вашей темы перейдите в боковую панель и откройте вкладку «Разрешения» .
- Нажмите «Добавить основного пользователя» .
- В поле «Добавить субъекты» добавьте учетную запись службы для приложения Google Workspace, которое отправляет события в вашу подписку:
- Для событий чата:
- Если ваше приложение Chat является надстройкой Google Workspace, расширяющей функциональность Chat, используйте адрес электронной почты сервисной учетной записи на странице конфигурации API Chat . Для получения дополнительной информации см. раздел «Создание приложения Google Chat с использованием модели публикации/подписки» .
- Если ваше приложение для чата использует события взаимодействия Chat API , используйте
chat-api-push@system.gserviceaccount.com.
- Предварительная версия для разработчиков: : Для событий Drive
drive-api-event-push@system.gserviceaccount.com. - Для получения информации о мероприятиях Meet,
meet-api-event-push@system.gserviceaccount.com.
- Для событий чата:
- В меню «Назначить роли» выберите
Pub/Sub Publisher. - Нажмите «Сохранить» . Обновление прав доступа к вашей теме может занять несколько минут.
gcloud
В вашем проекте Cloud создайте тему, выполнив следующую команду:
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 является надстройкой Google Workspace, расширяющей функциональность Chat, используйте адрес электронной почты сервисной учетной записи на странице конфигурации API Chat . Для получения дополнительной информации см. раздел «Создание приложения Google Chat с использованием модели публикации/подписки» .
- Если ваше приложение для чата использует события взаимодействия Chat API , используйте
chat-api-push@system.gserviceaccount.com.
- Предварительная версия для разработчиков: Чтобы получать события из Google Drive, используйте
drive-api-event-push@system.gserviceaccount.com. - Для получения событий от Meet используйте
meet-api-event-push@system.gserviceaccount.com.
- Для получения событий из чата используйте одну из следующих учетных записей служб:
Обновление прав доступа к вашей теме может занять несколько минут.
-
Создайте подписку 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 .
Определите целевой ресурс для чата.
| Целевой ресурс | Формат | Ограничения |
|---|---|---|
| Космос | где SPACE — это идентификатор в имени ресурса | Пользователь чата или приложение чата, авторизующее подписку, должно быть участником пространства через свою учетную запись Google Workspace или Google Account. Поддерживается: |
| Все места для пользователя | | Подписка получает события только для тех пространств, где пользователь является участником через свою учетную запись Google Workspace или Google Account. Поддерживается только аутентификация пользователя . |
| Пользователь | где USER — это идентификатор в имени ресурса | Подписка получает события только о пользователе, который её авторизовал. Пользователь не может авторизовать подписку от имени других пользователей. Поддерживается только аутентификация пользователя . |
Определите целевой ресурс для Drive
| Целевой ресурс | Формат | Ограничения (если применимо) |
|---|---|---|
| Файл | //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 API Google Workspace Events, чтобы создать ресурс Subscription . Укажите следующие поля:
-
targetResource: Рабочая область Google, которую вы определили в предыдущем разделе , отформатированная с использованием ее полного имени ресурса. -
eventTypes: Массив из одного или нескольких типов событий, которые вы хотите получать о ресурсе. Например, если вашему приложению нужно знать только о новых сообщениях, опубликованных в чате, оно может просто подписаться на события о созданных сообщениях. -
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: Полное имя темы Pub/Sub, созданной в вашем облачном проекте. Формат:projects/ PROJECT_ID /topics/ TOPIC_ID. RESOURCE_DATA: Логическое значение, указывающее, включает ли подписка данные ресурса в полезную нагрузку:-
True: Включает все данные ресурса. Чтобы ограничить список включаемых полей, добавьте полеfieldMaskи укажите как минимум одно поле для измененного ресурса. Включение данных ресурса поддерживается только подписками на ресурсы чата. -
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: Полное имя темы Pub/Sub, созданной в вашем облачном проекте. Формат:projects/ PROJECT_ID /topics/ TOPIC_ID. RESOURCE_DATA: Логическое значение, указывающее, включает ли подписка данные ресурса в полезную нагрузку:-
True: Включает все данные ресурса. Чтобы ограничить список включаемых полей, добавьте полеfieldMaskи укажите как минимум одно поле для измененного ресурса. Включение данных ресурса поддерживается только подписками на ресурсы чата. -
False: Исключает данные о ресурсах.
-
-
Для создания подписки Google Workspace выполните в терминале следующую команду:
python3 create_subscription.py
API событий Google Workspace возвращает завершенную длительную операцию , содержащую экземпляр ресурса Subscription , который вы создали.
Проверьте свою подписку на Google Workspace.
Чтобы проверить, получаете ли вы события Google Workspace, вы можете инициировать событие и получать сообщения в подписку Pub/Sub.
Чтобы проверить свою подписку на Google Workspace:
Консоль Google API
Запустите один или несколько типов событий в целевом ресурсе вашей подписки Google Workspace. Например, если вы подписаны на получение новых сообщений в чате, отправьте сообщение в этот чат.
В консоли Google API перейдите на страницу «Публикация/Подписка»:
Перейти в раздел "Публикация/Подписка"
Убедитесь, что для вашего приложения выбран облачный проект.
В меню «Публикация/Подписка» нажмите «Подписки» .
В таблице найдите подписку Pub/Sub для вашей темы и щелкните название подписки.
Нажмите вкладку «Сообщения» .
Нажмите «Pull» . Для генерации сообщения Pub/Sub по событию может потребоваться несколько минут.
gcloud
Запустите один или несколько типов событий в целевом ресурсе вашей подписки Google Workspace. Например, если вы подписаны на получение новых сообщений в чате, опубликуйте сообщение в этом чате.
Выполните следующую команду:
gcloud pubsub subscriptions pull PUBSUB_SUBSCRIPTION_NAME --format=json --limit=MESSAGE_COUNT --auto-ackЗамените следующее:
-
PUBSUB_SUBSCRIPTION_NAME: Полное название вашей подписки Pub/Sub, отформатированное какprojects/ PROJECT_ID /subscriptions/ SUBSCRIPTION_ID. -
MESSAGE_COUNT: Максимальное количество сообщений Pub/Sub, которые вы хотите получить.
Для генерации сообщения Pub/Sub по событию может потребоваться до нескольких минут.
-
Для каждого инициированного вами события Google Workspace в вашу подписку Pub/Sub отправляется сообщение, содержащее это событие. Подробнее см. раздел «Получение событий в виде сообщений Google Cloud Pub/Sub» .
Настройте способ получения событий вашим приложением.
Созданная вами подписка Pub/Sub основана на принципе "получения данных". После тестирования подписки Pub/Sub вы можете изменить тип доставки, чтобы изменить способ получения событий вашим приложением. Например, вы можете настроить подписку Pub/Sub на тип доставки "push", чтобы ваше приложение могло получать события непосредственно на конечную точку приложения.
Чтобы узнать о настройке подписки Pub/Sub, см. документацию Pub/Sub .
Подпишитесь на события в чате, используя приложение Google Chat.
Вы можете подписаться на события чата как приложение чата из пространства, в котором это приложение чата имеет членство. Приложения чата не могут подписываться на события пользователей.
Напишите скрипт, который вызывает API событий Google Workspace.
Вот как создать подписку на события в чате с аутентификацией приложения и подтверждением администратора :
- При необходимости создайте приложение для чата .
Подпишитесь на ресурс чата , но:
- Вместо аутентификации пользователя используйте аутентификацию в качестве приложения чата с одноразовым подтверждением администратора .
Укажите области авторизации, которые позволяют приложению «Чат» подписываться на события чата. Эти области авторизации всегда начинаются с
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: Подпишитесь на события в чате.
-
Приведенный ниже пример кода подписывается на события сообщений в указанном пространстве чата:
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',
'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)
Замените следующее:
-
SPACE_ID: Название пространства, которое можно получить из методаspaces.listв API чата или из URL-адреса пространства. -
TOPIC_NAME: Полное имя темы Pub/Sub, созданной в вашем облачном проекте. Формат:projects/ PROJECT_ID /topics/ TOPIC_ID. RESOURCE_DATA: Логическое значение, указывающее, включает ли подписка данные ресурса в полезную нагрузку:-
True: Включает все данные ресурса. Чтобы ограничить список включаемых полей, добавьте полеfieldMaskи укажите как минимум одно поле для измененного ресурса. Включение данных ресурса поддерживается только подписками на ресурсы чата. -
False: Исключает данные о ресурсах.
-