Как создать подписку Google Workspace

На этой странице объясняется, как использовать Google Workspace Events API для создания подписки на ресурс Google Workspace. Подписка Google Workspace позволяет вашему приложению получать информацию о событиях Google Workspace, которые представляют собой изменения в ресурсе Google Workspace. Чтобы узнать, какие ресурсы и типы событий поддерживает Google Workspace Events API, ознакомьтесь с обзором Google Workspace Events API.

На этой странице описаны следующие шаги по созданию подписки Google Workspace:

  1. Настройте среду.
  2. Создайте тему Google Cloud Pub/Sub и подпишитесь на нее. Используйте этот документ как конечную точку для получения событий Google Workspace.
  3. Вызовите метод create Google Workspace Events API для ресурса Subscription.
  4. Протестируйте подписку Google Workspace, чтобы убедиться, что тема издатель-подписчик получает события, на которые вы подписались.
  5. При необходимости настройте отправку событий в конечную точку приложения, чтобы оно могло обрабатывать события и при необходимости выполнять действия.

Требования

Apps Script

  • Чтобы использовать команды Google Cloud CLI, приведенные в этом руководстве:
    1. Установите Google Cloud CLI.
    2. Чтобы инициализировать CLI gcloud, выполните следующий код:
    3.   gcloud init
        
  • Проект Apps Script:
    • Используйте свой проект Google Cloud вместо проекта по умолчанию, созданного автоматически Apps Script.
    • Все области действия, которые вы добавили при настройке окна запроса доступа OAuth, также необходимо добавить в файл appsscript.json в проекте Apps Script. Например, если вы указали область действия chat.messages, добавьте следующее:
    • "oauthScopes": [
        "https://www.googleapis.com/auth/chat.messages"
      ]
          
    • Включите расширенный сервис Google Workspace Events.

Python

  • Python 3.6 или более поздней версии;
  • Инструмент управления пакетами pip.
  • Последние версии клиентских библиотек Google для Python. Чтобы установить или обновить их, выполните в интерфейсе командной строки следующую команду:
      pip3 install --upgrade google-api-python-client google-auth-oauthlib
      
  • Чтобы использовать команды Google Cloud CLI, приведенные в этом руководстве:
    1. Установите Google Cloud CLI.
    2. Чтобы инициализировать CLI gcloud, выполните следующий код:
    3.   gcloud init
        

Как настроить среду

В этом разделе объясняется, как настроить среду перед созданием подписки 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:

Как включить API

gcloud

  1. В рабочем каталоге войдите в аккаунт Google:

    gcloud auth login
  2. Укажите облачный проект для своего приложения:

    gcloud config set project PROJECT_ID

    Замените PROJECT_ID на идентификатор проекта облачного проекта для вашего приложения.

  3. Включите Google Workspace Events API и Google Cloud Pub/Sub API.

    gcloud services enable pubsub.googleapis.com workspaceevents.googleapis.com

Как создать учетные данные идентификатора клиента OAuth

Выберите тип приложения, чтобы получить инструкции по созданию идентификатора клиента OAuth.

Веб-приложение

  1. В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).

    Перейти в раздел "Клиенты"

  2. Нажмите Create Client (Создать клиента).
  3. Нажмите Тип приложения > Веб-приложение.
  4. В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
  5. Добавьте авторизованные URI, связанные с вашим приложением:
    • Клиентские приложения (JavaScript). В разделе Разрешенные источники JavaScript нажмите Добавить URI. Затем введите URI, который будет использоваться для запросов браузера. Это домены, из которых ваше приложение может отправлять запросы к API на сервер OAuth 2.0.
    • Серверные приложения (Java, Python и т. д.) – в разделе Разрешенные URI перенаправления нажмите Добавить URI. Затем введите URI конечной точки, на который сервер OAuth 2.0 может отправлять ответы.
  6. Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
  7. Нажмите Создать.

    Новые учетные данные появятся в разделе Идентификаторы клиентов OAuth 2.0.

    Обратите внимание, что секретные коды клиентов не используются для веб-приложений.

Android

  1. В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).

    Перейти в раздел "Клиенты"

  2. Нажмите Create Client (Создать клиента).
  3. Нажмите Тип приложения > Android.
  4. В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
  5. В поле Название пакета введите название пакета из файла AndroidManifest.xml.
  6. В поле Цифровой отпечаток сертификата SHA-1 введите сгенерированный цифровой отпечаток сертификата SHA-1.
  7. Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
  8. Нажмите Создать.

    Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".

iOS

  1. В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).

    Перейти в раздел "Клиенты"

  2. Нажмите Create Client (Создать клиента).
  3. Нажмите Тип приложения > iOS.
  4. В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
  5. В поле Идентификатор пакета введите идентификатор пакета, указанный в файле Info.plist приложения.
  6. Если ваше приложение есть в Apple App Store, укажите его идентификатор в этом магазине (необязательно).
  7. При необходимости в поле Идентификатор команды введите уникальную строку из 10 символов, сгенерированную Apple и назначенную вашей команде.
  8. Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
  9. Нажмите Создать.

    Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".

В приложении Chrome

  1. В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).

    Перейти в раздел "Клиенты"

  2. Нажмите Create Client (Создать клиента).
  3. Нажмите Тип приложения > Расширение Chrome.
  4. В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
  5. В поле Идентификатор объекта введите уникальный идентификатор приложения, состоящий из 32 символов. Этот идентификатор можно найти в URL приложения в интернет-магазине Chrome и в Личном кабинете разработчика продуктов для интернет-магазина Chrome.
  6. Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
  7. Нажмите Создать.

    Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".

Компьютерное приложение

  1. В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).

    Перейти в раздел "Клиенты"

  2. Нажмите Create Client (Создать клиента).
  3. Нажмите Тип приложения > Компьютерное приложение.
  4. В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
  5. Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
  6. Нажмите Создать.

    Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".

Телевизоры и устройства с ограниченными возможностями ввода

  1. В консоли Google Cloud нажмите на значок меню > Google Auth platform (Платформа Google Auth) > Clients (Клиенты).

    Перейти в раздел "Клиенты"

  2. Нажмите Create Client (Создать клиента).
  3. Нажмите Тип приложения > Телевизоры и устройства с ограниченным вводом.
  4. В поле Name (Название) введите название учетных данных. Это название показывается только в консоли Google Cloud.
  5. Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
  6. Нажмите Создать.

    Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".

Универсальная платформа Windows

  1. В Google API Console нажмите на значок меню > > Clients (Клиенты).

    Перейти в раздел "Клиенты"

  2. Нажмите Create Client (Создать клиента).
  3. Нажмите Тип приложения > Универсальная платформа Windows (UWP).
  4. В поле "Название" введите название учетных данных. Это название будет показываться только в Google API Console.
  5. В поле "Идентификатор магазина" введите уникальный 12-значный идентификатор Microsoft Store. Его можно найти в URL приложения в Microsoft Store и в Центре партнеров.
  6. Если ваше приложение – это ИИ-агент, который выполняет действия от имени пользователей, выберите Использовать этот клиент для агента на основе ИИ. Если ваше приложение поддерживает как рабочие процессы ИИ-агентов, так и стандартные пользовательские функции, создайте отдельные клиенты OAuth для каждого случая. После создания клиента изменить эту настройку нельзя.
  7. Нажмите Создать.

    Новые учетные данные появятся в разделе "Идентификаторы клиентов OAuth 2.0".

Скачайте JSON-файл с секретным кодом клиента

Файл секретного кода клиента – это JSON-представление учетных данных идентификатора клиента OAuth, на которые может ссылаться ваше приложение при предоставлении учетных данных.

  1. В Google API Console нажмите на значок меню > APIs & Services (API и сервисы) > Credentials (Учетные данные).

    Перейти к учетным данным

  2. В разделе Идентификаторы клиентов OAuth 2.0 нажмите на созданный идентификатор клиента.

  3. Нажмите Скачать JSON.

  4. Сохраните файл под названием credentials.json.

Как создать тему Pub/Sub и подписаться на нее

В этом разделе вы создадите тему Pub/Sub и подписку на нее. Тема издатель-подписчик служит конечной точкой оповещений, в которой подписка Google Workspace получает события.

Подробнее о том, как создавать темы Pub/Sub и управлять ими, рассказывается в документации по Pub/Sub.

Чтобы создать тему Pub/Sub и подписаться на нее, выполните следующие действия:

Google API Console

  1. В Google API Console перейдите на страницу Pub/Sub:

    Перейти в Google Cloud Pub/Sub

    Убедитесь, что выбран облачный проект для вашего приложения.

  2. Нажмите Создать тему и сделайте следующее:

    1. Введите название темы, например workspace-events-topic.
    2. Оставьте выбранным вариант Добавить подписку по умолчанию. Pub/Sub присваивает этой подписке по умолчанию название, похожее на название темы, например workspace-events-topic-sub.
    3. При необходимости обновите или настройте дополнительные свойства темы.
  3. Нажмите Создать. Полное название темы имеет следующий формат: projects/PROJECT_ID/topics/TOPIC_ID. Это полное имя понадобится вам на следующем шаге.

  4. Предоставьте доступ к публикации сообщений Pub/Sub в вашей теме:

    1. На странице темы перейдите на боковую панель и откройте вкладку Разрешения.
    2. Нажмите Add Principal (Добавить пользователя).
    3. В поле Добавление субъектов добавьте сервисный аккаунт для приложения Google Workspace, которое доставляет события в вашу подписку:
      1. Для событий Chat: chat-api-push@system.gserviceaccount.com.
      2. Для событий Диска: drive-api-event-push@system.gserviceaccount.com.
      3. Для мероприятий Meet: meet-api-event-push@system.gserviceaccount.com.
    4. В меню Назначить роли выберите Pub/Sub Publisher.
    5. Нажмите Сохранить. Обновление разрешений для темы может занять несколько минут.

gcloud

  1. В облачном проекте создайте тему, выполнив следующую команду:

    gcloud pubsub topics create TOPIC_ID

    Замените TOPIC_ID уникальным идентификатором темы, например workspace-events-topic.

    В выходных данных будет указано полное название темы в формате projects/PROJECT_ID/topics/TOPIC_ID. Запишите название и убедитесь, что значение PROJECT_ID – это идентификатор облачного проекта для вашего приложения. Используйте название темы на следующем шаге и для создания подписки Google Workspace.

  2. Предоставьте доступ к публикации сообщений в вашей теме:

    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, которое должно доставлять события в вашу подписку:

    Обновление разрешений для темы может занять несколько минут.

  3. Создайте подписку 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

Целевой ресурс Формат Ограничения
Пробел

//chat.googleapis.com/spaces/SPACE

где SPACE – идентификатор в названии ресурса space Chat API. Идентификатор можно получить из URL чат-группы или с помощью метода spaces.list().

Пользователь или приложение Chat, авторизующие подписку, должны быть участниками чат-группы через свой аккаунт Google Workspace или Google. Поддерживаемые форматы:
Все чат-группы пользователя

//chat.googleapis.com/spaces/-

Подписка получает события только для чат-групп, в которых пользователь является участником через свой аккаунт Google Workspace или Google. Поддерживается только аутентификация пользователей.
Пользователь

//cloudidentity.googleapis.com/users/USER

где USER – идентификатор в названии ресурса Chat API user. Подробнее о том, как идентифицировать и указывать пользователей Google Chat…

Подписка получает только события, связанные с пользователем, который авторизовал подписку. Пользователь не может авторизовать подписку от имени других пользователей. Поддерживается только аутентификация пользователей.

Клиент (предварительная версия для разработчиков)

//admin.googleapis.com/customers/CUSTOMER

где CUSTOMER – идентификатор клиента. Вы также можете использовать псевдоним my_customer для пользовательского домена приложения Chat.

Подписка получает события для всех чат-групп и пользователей, управляемых доменом клиента. Поддерживается только аутентификация приложения с одобрением администратора.

Как определить целевой ресурс для Диска

Целевой ресурс Формат Ограничения (если применимо)
Файл //drive.googleapis.com/files/FILE

где FILE – идентификатор в названии ресурса ресурса files Drive API. Идентификатор можно получить из URL файла или с помощью метода files.list.

Пользователь, который авторизует подписку, должен иметь разрешение на доступ к файлу в рамках подписки, связанной с событием подписки.
Общий диск //drive.googleapis.com/drives/DRIVE

где DRIVE – идентификатор в названии ресурса ресурса drives Drive API. Идентификатор можно получить из URL диска или с помощью метода drives.list.

Подписка получает события только для объектов на общем диске, участником которого пользователь является через свой аккаунт Google Workspace или аккаунт Google.

Как определить целевой ресурс для Meet

Целевой ресурс Формат Ограничения (если применимо)
Чат-группа встречи //meet.googleapis.com/spaces/SPACE

где SPACE – идентификатор в названии ресурса ресурса spaces Meet REST API. Подробнее о том, как Meet идентифицирует переговорную комнату…

Пользователь //cloudidentity.googleapis.com/users/USER

где USER – идентификатор в поле signedinUser.user ресурса participants Meet REST API. Подробнее о работе с участниками…

Подписка получает события обо всех переговорных комнатах, владельцем которых является пользователь. Обычно владелец переговорной комнаты также является организатором мероприятия в 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

  1. В проекте 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: не включает данные о ресурсах.
  2. Чтобы создать подписку Google Workspace, запустите функцию createSubscription в проекте Apps Script.

Python

  1. В рабочем каталоге создайте файл с названием 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: не включает данные о ресурсах.
  2. Чтобы создать подписку Google Workspace, выполните в терминале следующую команду:

    python3 create_subscription.py

Google Workspace Events API возвращает завершенную продолжительную операцию, которая содержит экземпляр созданного вами ресурса Subscription.

Протестируйте подписку Google Workspace

Чтобы проверить, получаете ли вы события Google Workspace, вы можете активировать событие и извлечь сообщения в подписку издатель-подписчик.

Чтобы протестировать подписку Google Workspace:

Google API Console

  1. Запустите один или несколько типов событий в целевом ресурсе подписки Google Workspace. Например, если вы подписались на новые сообщения в чат-группе Chat, опубликуйте в ней сообщение.

  2. В Google API Console перейдите на страницу Pub/Sub:

    Перейти в Pub/Sub

    Убедитесь, что выбран облачный проект для вашего приложения.

  3. В меню Pub/Sub выберите Подписки.

  4. В таблице найдите подписку Pub/Sub для своей темы и нажмите на ее название.

  5. Откройте вкладку Сообщения.

  6. Нажмите Pull (Извлечь). На создание сообщения Pub/Sub может уйти несколько минут.

gcloud

  1. Запустите один или несколько типов событий в целевом ресурсе подписки Google Workspace. Например, если вы подписались на новые сообщения в чат-группе Chat, опубликуйте в ней сообщение.

  2. Выполните следующую команду:

    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 с аутентификацией приложения и одобрением администратора, выполните следующие действия:

  1. При необходимости создайте приложение Chat.
  2. Подписаться на ресурс Chat, но:

    1. Вместо аутентификации пользователя выполните аутентификацию как приложение Chat с однократным одобрением администратора.
    2. Укажите области действия авторизации, которые позволяют приложению 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: не включает данные о ресурсах.