Наблюдайте за событиями встреч с помощью Python и REST API Google Meet.

В этом руководстве показано, как использовать REST API Google Meet вместе с API событий Google Workspace и Google Cloud Pub/Sub для наблюдения за событиями в конференц-пространстве Meet и реагирования на них. Пример приложения регистрирует начало и завершение конференций, присоединение и выход участников, а также доступность любых сгенерированных артефактов встречи.

Вместо подписки на конкретное пространство для встреч вы можете подписаться на пользователя Meet, чтобы получать события для любого пространства, которым он владеет или которое организует. Подробнее см. в разделе «Подписка на события Google Meet» в документации API событий Google Workspace.

Предпосылки

Если вам необходимо включить какие-либо из этих предварительных условий для вашей организации, попросите администратора Google Workspace включить их:

Подготовьте свою среду

В этом разделе показано, как создать и настроить локальную среду и проект Google Cloud для этого руководства.

Создайте рабочий каталог и виртуальную среду Python

Чтобы создать и активировать новую виртуальную среду , выполните следующие команды в терминале.

Linux/macOS

mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
source env/bin/activate

Windows (командная строка)

mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
env/bin/activate.bat

Windows (PowerShell)

mkdir meet-tutorial
cd meet-tutorial
python3 -mvenv env
env/bin/activate.ps1

Создайте проект Google Cloud

Консоль Google Cloud

  1. В консоли Google Cloud перейдите в > IAM и администрирование > Создать проект .

    Перейти к созданию проекта

  2. В поле «Название проекта» введите описательное название вашего проекта.

    Необязательно: чтобы изменить идентификатор проекта , нажмите «Изменить» . Идентификатор проекта нельзя изменить после его создания, поэтому выберите идентификатор, который будет соответствовать вашим потребностям на протяжении всего жизненного цикла проекта.

  3. В поле «Местоположение» нажмите «Обзор» , чтобы отобразить возможные местоположения для вашего проекта. Затем нажмите « Выбрать» .
  4. Нажмите «Создать» . Консоль Google Cloud перейдет на страницу панели управления, и ваш проект будет создан в течение нескольких минут.

gcloud CLI

В одной из следующих сред разработки получите доступ к Google Cloud CLI ( gcloud ):

  • Cloud Shell : чтобы использовать онлайн-терминал с уже настроенным интерфейсом командной строки gcloud, активируйте Cloud Shell.
    Активировать Cloud Shell
  • Локальная оболочка : чтобы использовать локальную среду разработки, установите и инициализируйте gcloud CLI.
    Чтобы создать облачный проект, используйте команду gcloud projects create :
    gcloud projects create PROJECT_ID
    Замените PROJECT_ID , указав идентификатор проекта, который вы хотите создать.

Включить выставление счетов для проекта Google Cloud

Консоль Google Cloud

  1. В консоли Google Cloud перейдите в раздел «Оплата» . Нажмите «Меню» « Оплата» > «Мои проекты» .

    Перейти к выставлению счетов за мои проекты

  2. В разделе Выберите организацию выберите организацию, связанную с вашим проектом Google Cloud.
  3. В строке проекта откройте меню Действия ( ), нажмите Изменить выставление счетов и выберите учетную запись Cloud Billing.
  4. Нажмите «Настроить учетную запись» .

gcloud CLI

  1. Чтобы вывести список доступных платежных аккаунтов, выполните:
    gcloud billing accounts list
  2. Свяжите платежный аккаунт с проектом Google Cloud:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    Заменить следующее:

    • PROJECT_ID — это идентификатор облачного проекта, для которого вы хотите включить выставление счетов.
    • BILLING_ACCOUNT_IDидентификатор платежного аккаунта для связи с проектом Google Cloud.

Настройте аутентификацию и авторизацию

Аутентификация и авторизация позволяют приложению получать доступ к ресурсам REST API Meet. Для вызова REST API Meet требуется авторизация пользователя. В этом разделе описано, как настроить учётные данные пользователя и запросить авторизацию.

Настройте экран согласия OAuth и выберите области действия

Ниже приведены инструкции по заполнению информации для настройки экрана согласия OAuth для вашего приложения. Перед публикацией приложения на внешнем носителе обновите эту информацию.

  1. В консоли Google Cloud перейдите в >Google Auth platform > Брендинг .

    Перейти к брендингу

  2. Если вы уже настроили Google Auth platform, вы можете настроить следующие параметры экрана согласия OAuth в разделах «Брендинг» , «Аудитория» и «Доступ к данным» . Если вы видите сообщение: Google Auth platform пока не настроено , нажмите «Начать» :
    1. В разделе «Информация о приложении» в поле «Имя приложения» введите Meet REST API Tutorial .
    2. В поле Адрес электронной почты службы поддержки пользователей выберите адрес электронной почты службы поддержки, по которому пользователи смогут связаться с вами, если у них возникнут вопросы относительно их согласия.
    3. Нажмите «Далее» .
    4. В разделе Аудитория выберите Внутренняя .
    5. Нажмите «Далее» .
    6. В разделе «Контактная информация» введите адрес электронной почты , на который вы можете получать уведомления о любых изменениях в вашем проекте.
    7. Нажмите «Далее» .
    8. В разделе Готово ознакомьтесь с Политикой обработки данных пользователей API служб Google и, если вы согласны, выберите Я согласен с Политикой обработки данных пользователей API служб Google .
    9. Нажмите «Продолжить» .
    10. Нажмите «Создать» .
    11. Если вы выбрали тип пользователя «Внешний» , добавьте тестовых пользователей:
      1. Нажмите Аудитория .
      2. В разделе Тестовые пользователи нажмите Добавить пользователей .
      3. Введите свой адрес электронной почты и адрес других авторизованных тестовых пользователей, затем нажмите кнопку «Сохранить» .
  3. Нажмите «Доступ к данным» > «Добавить или удалить области действия» . Появится панель со списком областей действия для каждого API, которые вы включили в своем проекте Google Cloud.
  4. В разделе «Добавить области вручную» вставьте следующие области:
    • https://www.googleapis.com/auth/meetings.space.created
  5. Нажмите Добавить в таблицу .
  6. Нажмите Обновить .
  7. После выбора областей, необходимых вашему приложению, нажмите кнопку Сохранить .

Для получения дополнительной информации о настройке согласия OAuth см. раздел Начало работы с Google Auth platform .

Создать идентификатор клиента

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

  1. В консоли Google Cloud перейдите в >Google Auth platform > Клиенты .

    Перейти к клиентам

  2. Нажмите «Создать клиента» .
  3. Нажмите Тип приложения > Приложение для ПК .
  4. В поле «Имя» введите имя учётной записи. Оно отображается только в консоли Google Cloud.
  5. Нажмите «Создать» .

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

Установите библиотеки аутентификации Google

Установите библиотеки аутентификации Google:

pip install google-auth google-auth-oauthlib

Выполнить авторизацию

Для использования REST API Meet требуются учётные данные пользователя в виде токена доступа OAuth 2.0. В этом разделе мы реализуем процесс OAuth 2.0 для запроса токена доступа и токена обновления для пользователя.

  1. В рабочем каталоге создайте файл main.py и добавьте в него следующее содержимое:

    import os
    import json
    
    from google.auth.transport import requests
    from google.oauth2.credentials import Credentials
    from google_auth_oauthlib.flow import InstalledAppFlow
    
    def authorize() -> Credentials:
        """Ensure valid credentials for calling the Meet REST API."""
        CLIENT_SECRET_FILE = "./client_secret.json"
        credentials = None
    
        if os.path.exists('token.json'):
            credentials = Credentials.from_authorized_user_file('token.json')
    
        if credentials is None:
            flow = InstalledAppFlow.from_client_secrets_file(
                CLIENT_SECRET_FILE,
                scopes=[
                    'https://www.googleapis.com/auth/meetings.space.created',
                ])
            flow.run_local_server(port=0)
            credentials = flow.credentials
    
        if credentials and credentials.expired:
            credentials.refresh(requests.Request())
    
        if credentials is not None:
            with open("token.json", "w") as f:
                f.write(credentials.to_json())
    
        return credentials
    
    USER_CREDENTIALS = authorize()
    
  2. Для запуска кода требуются как идентификатор клиента, так и ранее созданный секрет. Скопируйте загруженный файл секрета клиента в рабочий каталог проекта и переименуйте его в client_secret.json .

  3. Если вы хотите протестировать работу авторизации, выполните следующую команду. Приложение запрашивает авторизацию и создаёт файл token.json в рабочем каталоге проекта после одобрения запроса.

    python3 main.py

Добавьте API Meet REST

Теперь, когда код авторизации готов, пришло время включить и вызвать API REST Meet.

Включить API

Хотя этот раздел посвящен API Meet REST, в этом руководстве также используются API Google Cloud Pub/Sub и Google Workspace Events.

Консоль Google Cloud

  1. В консоли Google Cloud включите API Google Meet REST, API Google Workspace Events и Google Cloud Pub/Sub.

    Включить API

  2. Подтвердите, что вы включаете API в правильном облачном проекте, затем нажмите Далее .

  3. Подтвердите, что вы включаете правильные API, затем нажмите Включить .

gcloud CLI

  1. При необходимости установите текущий проект Cloud на тот, который вы создали с помощью команды gcloud config set project :

    gcloud config set project PROJECT_ID

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

  2. Включите API Google Meet REST, API Google Workspace Events и Google Cloud Pub/Sub с помощью команды gcloud services enable :

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

Установите клиентскую библиотеку Meet REST API

Чтобы установить клиентскую библиотеку Meet REST API, выполните следующие действия:

  1. Выполните команду:

    pip install google-apps-meet
  2. Отредактируйте файл main.py , чтобы импортировать клиент:

    from google.apps import meet_v2 as meet
    

Создать пространство

Теперь, когда API Meet REST доступен, определите функцию для создания пространства для встреч, на которое можно подписаться.

Отредактируйте main.py и добавьте:

def create_space() -> meet.Space:
    """Create a meeting space."""
    client = meet.SpacesServiceClient(credentials=USER_CREDENTIALS)
    request = meet.CreateSpaceRequest()
    return client.create_space(request=request)

Подписаться на события

Чтобы получать события, связанные с конференц-залом, необходимо создать подписку с помощью API событий Google Workspace. Также необходимо создать тему Google Cloud Pub/Sub, которая будет служить конечной точкой уведомлений, куда ваше приложение будет получать события, и подписаться на неё.

Настройте Google Cloud Pub/Sub

Чтобы создать тему Pub/Sub и подписаться на нее:

Консоль Google Cloud

  1. В консоли Google Cloud перейдите в > Публикация/Подписка .

    Перейти в Pub/Sub

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

  2. Нажмите Создать тему и выполните следующие действия:
    1. Введите workspace-events в качестве названия темы.
    2. Оставьте выбранным опцию Добавить подписку по умолчанию .
    3. Нажмите «Создать» . Полное название темы будет выглядеть так: projects/{project}/topics/{topic} . Запишите это название для дальнейшего использования.
  3. Предоставьте доступ для публикации сообщений Pub/Sub в вашей теме:
    1. На боковой панели откройте вкладку Разрешения .
    2. Нажмите Добавить принципала .
    3. В поле Новые участники введите meet-api-event-push@system.gserviceaccount.com .
    4. В разделе Назначить роли выберите Pub/Sub Publisher .
    5. Нажмите «Сохранить» .

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

gcloud CLI

  1. В своем облачном проекте создайте тему, выполнив следующее:
    gcloud pubsub topics create workspace-events

    В выводе отображается полное название темы в формате projects/{project}/topics/{topic} . Запишите это название для использования в дальнейшем.

  2. Предоставьте доступ для публикации сообщений в вашей теме:
     gcloud pubsub topics add-iam-policy-binding workspace-events --member='serviceAccount:meet-api-event-push@system.gserviceaccount.com' --role='roles/pubsub.publisher'

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

  3. Создайте подписку Pub/Sub на тему:
    gcloud pubsub subscriptions create workspace-events-sub --topic=TOPIC_NAME

    Заменить следующее:

    • TOPIC_NAME : Название темы, созданной на предыдущем шаге.

Запишите название темы и убедитесь, что значение {project} соответствует идентификатору облачного проекта вашего приложения. Название темы понадобится вам позже для создания подписки Google Workspace.

Создать учетную запись службы

Консоль Google Cloud

  1. В консоли Google Cloud перейдите в > IAM и администрирование > Учетные записи служб .

    Перейти к учетным записям служб

  2. Нажмите Создать учетную запись службы .
  3. Заполните данные учетной записи службы, затем нажмите «Создать» и продолжите .
  4. В разделе Предоставить этой учетной записи службы доступ к проекту добавьте следующие роли:
    • roles/pubsub.subscriber
  5. Нажмите «Продолжить» .
  6. Необязательно: введите пользователей или группы, которые смогут управлять этой учётной записью службы и выполнять с ней действия. Подробнее см. в разделе Управление олицетворением учётной записи службы .
  7. Нажмите «Готово» . Запишите адрес электронной почты для учётной записи сервиса.

gcloud CLI

  1. Создайте учетную запись службы:
    gcloud iam service-accounts create meet-event-listener \
      --display-name="meet-event-listener"
  2. Предоставьте необходимые роли учетной записи службы:
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:meet-event-listener@PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/pubsub.subscriber"

    Замените PROJECT_ID на идентификатор вашего проекта Google Cloud.

Используйте учетную запись службы

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

Консоль Google Cloud

  1. В столбце Действия для вновь созданной учетной записи службы нажмите > Управление разрешениями .
  2. Нажмите Добавить ключ > Предоставить доступ .
  3. Введите свой адрес электронной почты в поле Добавить участников .
  4. В качестве роли выберите Учетные записи служб > Создатель токенов учетной записи службы .
  5. Нажмите «Сохранить» .
  6. Вернитесь к терминалу и войдите в систему, используя gcloud , чтобы установить учётную запись сервиса в качестве учётных данных приложения по умолчанию. При появлении запроса на авторизацию войдите в систему, используя ту же учётную запись, которая использовалась на предыдущих шагах.
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

gcloud CLI

  1. Чтобы добавить разрешение, запустите gcloud iam service-accounts add-iam-policy-binding используя адрес электронной почты учетной записи службы и пользователя.
    gcloud iam service-accounts add-iam-policy-binding \
      SERVICE_ACCOUNT_EMAIL \
      --member="user:YOUR_EMAIL" \
      --role="roles/iam.serviceAccountTokenCreator"
  2. Войдите в систему, чтобы установить учетную запись службы в качестве учётных данных приложения по умолчанию. При появлении запроса на авторизацию войдите в систему, используя ту же учётную запись, которая использовалась на предыдущих шагах.
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

Установить клиентскую библиотеку Pub/Sub

  1. Используйте pip для установки клиентской библиотеки для Pub/Sub:

    pip install google-cloud-pubsub
  2. Затем отредактируйте main.py , чтобы импортировать клиент:

    from google.cloud import pubsub_v1
    

Создайте подписку Google Workspace

Добавьте следующий код в main.py , чтобы определить метод подписки на события Meet. Этот код подписывается на все события в пространстве для встреч. После подписки события публикуются в теме Pub/Sub.

def subscribe_to_space(space_name: str = None, topic_name: str = None):
    """Subscribe to events for a meeting space."""
    session = requests.AuthorizedSession(USER_CREDENTIALS)
    body = {
        'targetResource': f"//meet.googleapis.com/{space_name}",
        "eventTypes": [
            "google.workspace.meet.conference.v2.started",
            "google.workspace.meet.conference.v2.ended",
            "google.workspace.meet.participant.v2.joined",
            "google.workspace.meet.participant.v2.left",
            "google.workspace.meet.recording.v2.fileGenerated",
            "google.workspace.meet.transcript.v2.fileGenerated",
        ],
        "payloadOptions": {
            "includeResource": False,
        },
        "notificationEndpoint": {
            "pubsubTopic": topic_name
        },
        "ttl": "86400s",
    }
    response = session.post("https://workspaceevents.googleapis.com/v1/subscriptions", json=body)
    return response

Затем добавьте соответствующий код для извлечения и обработки событий.

Прослушивание и обработка событий

Продолжайте редактировать main.py и добавьте следующий пример кода. Этот код реализует принимающую сторону и использует API Google Cloud Pub/Sub для извлечения событий по мере их появления. Различные методы-обработчики выводят информацию о соответствующих событиях.

def format_participant(participant: meet.Participant) -> str:
    """Formats a participant for display on the console."""
    if participant.anonymous_user:
        return f"{participant.anonymous_user.display_name} (Anonymous)"

    if participant.signedin_user:
        return f"{participant.signedin_user.display_name} (ID: {participant.signedin_user.user})"

    if participant.phone_user:
        return f"{participant.phone_user.display_name} (Phone)"

    return "Unknown participant"


def fetch_participant_from_session(session_name: str) -> meet.Participant:
    """Fetches the participant for a session."""
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    # Use the parent path of the session to fetch the participant details
    parsed_session_path = client.parse_participant_session_path(session_name)
    participant_resource_name = client.participant_path(
        parsed_session_path["conference_record"],
        parsed_session_path["participant"])
    return client.get_participant(name=participant_resource_name)


def on_conference_started(message: pubsub_v1.subscriber.message.Message):
    """Display information about a conference when started."""
    payload = json.loads(message.data)
    resource_name = payload.get("conferenceRecord").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    conference = client.get_conference_record(name=resource_name)
    print(f"Conference (ID {conference.name}) started at {conference.start_time.rfc3339()}")


def on_conference_ended(message: pubsub_v1.subscriber.message.Message):
    """Display information about a conference when ended."""
    payload = json.loads(message.data)
    resource_name = payload.get("conferenceRecord").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    conference = client.get_conference_record(name=resource_name)
    print(f"Conference (ID {conference.name}) ended at {conference.end_time.rfc3339()}")


def on_participant_joined(message: pubsub_v1.subscriber.message.Message):
    """Display information about a participant when they join a meeting."""
    payload = json.loads(message.data)
    resource_name = payload.get("participantSession").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    session = client.get_participant_session(name=resource_name)
    participant = fetch_participant_from_session(resource_name)
    display_name = format_participant(participant)
    print(f"{display_name} joined at {session.start_time.rfc3339()}")


def on_participant_left(message: pubsub_v1.subscriber.message.Message):
    """Display information about a participant when they leave a meeting."""
    payload = json.loads(message.data)
    resource_name = payload.get("participantSession").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    session = client.get_participant_session(name=resource_name)
    participant = fetch_participant_from_session(resource_name)
    display_name = format_participant(participant)
    print(f"{display_name} left at {session.end_time.rfc3339()}")


def on_recording_ready(message: pubsub_v1.subscriber.message.Message):
    """Display information about a recorded meeting when artifact is ready."""
    payload = json.loads(message.data)
    resource_name = payload.get("recording").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    recording = client.get_recording(name=resource_name)
    print(f"Recording available at {recording.drive_destination.export_uri}")


def on_transcript_ready(message: pubsub_v1.subscriber.message.Message):
    """Display information about a meeting transcript when artifact is ready."""
    payload = json.loads(message.data)
    resource_name = payload.get("transcript").get("name")
    client = meet.ConferenceRecordsServiceClient(credentials=USER_CREDENTIALS)
    transcript = client.get_transcript(name=resource_name)
    print(f"Transcript available at {transcript.docs_destination.export_uri}")


def on_message(message: pubsub_v1.subscriber.message.Message) -> None:
    """Handles an incoming event from the Google Cloud Pub/Sub API."""
    event_type = message.attributes.get("ce-type")
    handler = {
        "google.workspace.meet.conference.v2.started": on_conference_started,
        "google.workspace.meet.conference.v2.ended": on_conference_ended,
        "google.workspace.meet.participant.v2.joined": on_participant_joined,
        "google.workspace.meet.participant.v2.left": on_participant_left,
        "google.workspace.meet.recording.v2.fileGenerated": on_recording_ready,
        "google.workspace.meet.transcript.v2.fileGenerated": on_transcript_ready,
    }.get(event_type)

    try:
        if handler is not None:
            handler(message)
        message.ack()
    except Exception as error:
        print("Unable to process event")
        print(error)


def listen_for_events(subscription_name: str = None):
    """Subscribe to events on the subscription."""
    subscriber = pubsub_v1.SubscriberClient()
    with subscriber:
        future = subscriber.subscribe(subscription_name, callback=on_message)
        print("Listening for events")
        try:
            future.result()
        except KeyboardInterrupt:
            future.cancel()
    print("Done")

Доработать код

Добавьте следующий код в main.py для вызова методов создания пространства, подписки на события и прослушивания. Обновите константы TOPIC_NAME и SUBSCRIPTION_NAME , указав собственные названия тем и подписок , которые вы создали ранее.

  1. Добавьте код в main.py :

    space = create_space()
    print(f"Join the meeting at {space.meeting_uri}")
    
    TOPIC_NAME = "projects/PROJECT_ID/topics/TOPIC_ID"
    SUBSCRIPTION_NAME = "projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID"
    
    subscription = subscribe_to_space(topic_name=TOPIC_NAME, space_name=space.name)
    if (subscription.status_code) == 200:
        listen_for_events(subscription_name=SUBSCRIPTION_NAME)
    else:
        print(f"Subscription to Meet events failed, response data: {subscription.content}")
    

    Заменить следующее:

    • PROJECT_ID : уникальный идентификатор облачного проекта для вашего приложения, например my-sample-project-191923 .

    • TOPIC_ID : Имя темы Pub/Sub, созданной вами в вашем облачном проекте.

    • SUBSCRIPTION_ID : Название вашей подписки, например, workspace-events-sub .

  2. Запустите программу:

    python3 main.py

Если вы ранее не запускали программу, при первом запуске она запросит авторизацию. Предоставьте приложению доступ для вызова REST API Meet. После успешного запуска программы вы увидите примерно такой вывод:

Join the meeting at https://meet.google.com/abc-mnop-xyz

Присоединяйтесь к конференции

Чтобы создать события для приложения, присоединитесь к конференции, используя URL-адрес, отображаемый приложением. После присоединения вы можете попробовать следующие действия для запуска событий:

  • Выйдите из встречи и снова присоединитесь к ней.
  • Пригласите других или подключитесь с помощью телефона.
  • Включить записи и расшифровки.

Каждое из этих действий генерирует событие, которое приложение получает и регистрирует в консоли Google Cloud.

После завершения работы программы используйте ctrl-c чтобы прервать ее.

Необязательно: попробуйте выполнить дополнительные шаги

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

  • Используйте API People для получения дополнительной информации о вошедших в систему участниках.

    def subscribe_to_user(user_name: str = None, topic_name: str = None) -> requests_lib.Response:
        """Subscribe to events for a user."""
        session = requests.AuthorizedSession(USER_CREDENTIALS)
        body = {
            "targetResource": f"//cloudidentity.googleapis.com/users/{user_name}",
            "eventTypes": [
                "google.workspace.meet.conference.v2.started",
                "google.workspace.meet.conference.v2.ended",
                "google.workspace.meet.participant.v2.joined",
                "google.workspace.meet.participant.v2.left",
                "google.workspace.meet.recording.v2.fileGenerated",
                "google.workspace.meet.transcript.v2.fileGenerated",
            ],
            "payloadOptions": {
                "includeResource": False,
            },
            "notificationEndpoint": {"pubsubTopic": topic_name},
            "ttl": "86400s",
        }
        response = session.post(
            "https://workspaceevents.googleapis.com/v1/subscriptions", json=body
        )
        return response
    
    service = build("people", "v1", credentials=USER_CREDENTIALS)
    response = (
        service.people()
        .get(resourceName="people/me", personFields="names,emailAddresses")
        .execute()
    )
    resource_name = response.get("resourceName")
    if resource_name.startswith("people/"):
        resource_name = resource_name[len("people/") :]
    
    subscription = subscribe_to_user(topic_name=TOPIC_NAME, user_name=resource_name)
    

    Обязательно добавьте «https://www.googleapis.com/auth/userinfo.profile» в метод авторизации в примерах учетных данных выше.

  • Используйте API Google Drive для загрузки записей и расшифровок.

  • Вместо загрузки расшифровок с Google Диска извлекайте их с помощью методов структурированной расшифровки в API REST Meet.

  • получить пространство вместо того, чтобы создавать его

    def get_space(meeting_code: str) -> meet.Space:
        """Get a meeting space."""
        client = meet.SpacesServiceClient(credentials=USER_CREDENTIALS)
        return client.get_space(name="spaces/" + meeting_code)
    

    Обязательно добавьте «https://www.googleapis.com/auth/meetings.space.readonly» в метод авторизации в примерах учетных данных выше.

Необязательно: Очистка

Чтобы избежать списания средств с вашего аккаунта консоли Google Cloud за ресурсы, используемые в этом руководстве, мы рекомендуем вам очистить все созданные ресурсы и проекты.

Чтобы удалить подписку:

Консоль

  1. В консоли Google Cloud перейдите в > Публикация/Подписка > Подписки.

    Перейти к подпискам

  2. Выберите подписку и нажмите Дополнительные действия .

  3. Нажмите «Удалить» . Появится окно «Удалить подписку» .

  4. Нажмите «Удалить» .

gcloud CLI

  1. Удалить подписку:

    gcloud pubsub subscriptions delete SUBSCRIPTION_NAME

Чтобы удалить тему:

Консоль

  1. В консоли Google Cloud перейдите в > Pub/Sub > Темы.

    Перейти к темам

  2. Выберите тему и нажмите Дополнительные действия .

  3. Нажмите «Удалить» . Появится окно «Удалить тему» .

  4. Введите delete и нажмите «Удалить» .

gcloud CLI

  1. Удалить тему:

    gcloud pubsub topics delete TOPIC_NAME

Чтобы удалить проект:

Консоль

  1. В консоли Google Cloud перейдите на страницу «Управление ресурсами» . Выберите « Меню > «IAM и администрирование» > «Управление ресурсами» .

    Перейти к диспетчеру ресурсов

  2. В списке проектов выберите проект .
  3. В диалоговом окне введите идентификатор проекта, а затем нажмите кнопку «Завершить» , чтобы удалить проект.

gcloud CLI

  1. Чтобы удалить проект, используйте команду gcloud projects delete :

    gcloud projects delete PROJECT_ID