Videokonferenzen mit Python und der Google Meet REST API beobachten

In dieser Anleitung erfahren Sie, wie Sie die Google Meet REST API zusammen mit der Google Workspace Events API und Google Cloud Pub/Sub verwenden, um Besprechungsereignisse zu beobachten und darauf zu reagieren. Die Beispielanwendung zeichnet auf, wann Konferenzen beginnen und enden, wann Teilnehmer beitreten oder verlassen und wann generierte Besprechungsartefakte verfügbar sind.

Weitere Informationen zur Verwendung von Ereignissen finden Sie in der Dokumentation zur Google Workspace Events API unter Google Meet-Ereignisse abonnieren.

Voraussetzungen

Wenn eine dieser Voraussetzungen für Ihre Organisation aktiviert sein muss, bitten Sie Ihren Google Workspace-Administrator, sie zu aktivieren:

Umgebung vorbereiten

In diesem Abschnitt wird beschrieben, wie Sie Ihre lokale Umgebung und das Google Cloud-Projekt für diese Anleitung erstellen und konfigurieren.

Arbeitsverzeichnis und virtuelle Python-Umgebung erstellen

Führen Sie die folgenden Befehle in Ihrem Terminal aus, um eine neue virtuelle Umgebung zu erstellen und zu aktivieren.

Linux/macOS

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

Windows (Eingabeaufforderung)

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-Projekt erstellen

Google Cloud Console

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > IAM und Verwaltung > Projekt erstellen.

    Zur Seite „Projekt erstellen“

  2. Geben Sie im Feld Projektname einen aussagekräftigen Namen für das Projekt ein.

    Optional: Klicken Sie auf Bearbeiten, um die Projekt-ID zu bearbeiten. Die Projekt-ID kann nach dem Erstellen des Projekts nicht mehr geändert werden. Wählen Sie daher eine ID aus, die Ihren Anforderungen für die gesamte Lebensdauer des Projekts entspricht.

  3. Klicken Sie im Feld Standort auf Durchsuchen, um potenzielle Standorte für Ihr Projekt aufzurufen. Klicken Sie danach auf Auswählen.
  4. Klicken Sie auf Erstellen. Die Google Cloud Console ruft die Dashboard-Seite auf und Ihr Projekt wird innerhalb weniger Minuten erstellt.

gcloud-CLI

Greifen Sie in einer der folgenden Entwicklungsumgebungen auf die Google Cloud CLI (gcloud) zu:

  • Cloud Shell: Aktivieren Sie Cloud Shell, um ein Online-Terminal zu verwenden, bei dem die gcloud CLI bereits eingerichtet ist.
    Cloud Shell aktivieren
  • Lokale Shell: Um eine lokale Entwicklungsumgebung zu verwenden, müssen Sie die gcloud CLI installieren und initialize.
    Verwenden Sie den Befehl „gcloud projects create“, um ein Cloud-Projekt zu erstellen:
    gcloud projects create PROJECT_ID
    Ersetzen Sie PROJECT_ID, indem Sie die ID des Projekts festlegen, das Sie erstellen möchten.

Abrechnung für das Google Cloud-Projekt aktivieren

Google Cloud Console

  1. Rufen Sie in der Google Cloud Console Abrechnung auf. Klicken Sie auf das Dreipunkt-Menü > Abrechnung > Meine Projekte.

    Zur Abrechnung für meine Projekte

  2. Wählen Sie unter Organisation auswählen die Organisation aus, die mit Ihrem Google Cloud-Projekt verknüpft ist.
  3. Öffnen Sie in der Projektzeile das Menü Aktionen (), klicken Sie auf Abrechnung ändern und wählen Sie das Cloud-Rechnungskonto aus.
  4. Klicken Sie auf Konto festlegen.

gcloud-CLI

  1. Führen Sie folgenden Befehl aus, um verfügbare Rechnungskonten aufzulisten:
    gcloud billing accounts list
  2. Rechnungskonto mit einem Google Cloud-Projekt verknüpfen:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    Ersetzen Sie Folgendes:

    • PROJECT_ID ist die Projekt-ID des Cloud-Projekts, für das Sie die Abrechnung aktivieren möchten.
    • BILLING_ACCOUNT_ID ist die Rechnungskonto-ID, die mit dem Google Cloud-Projekt verknüpft werden soll.

Authentifizierung und Autorisierung einrichten

Durch die Authentifizierung und Autorisierung kann die Anwendung auf Meet REST API-Ressourcen zugreifen. Zum Aufrufen der Meet REST API ist eine Nutzerautorisierung erforderlich. In diesem Abschnitt erfahren Sie, wie Sie Nutzeranmeldedaten konfigurieren und eine Autorisierung anfordern.

OAuth-Zustimmungsbildschirm konfigurieren und Bereiche auswählen

In den folgenden Schritten werden Platzhalterinformationen für die Konfiguration des OAuth-Zustimmungsbildschirms für Ihre App vorgeschlagen. Aktualisieren Sie diese Informationen, bevor Sie die App extern veröffentlichen.

  1. Rufen Sie in der Google Cloud Console das Menü auf > APIs und Dienste > OAuth-Zustimmungsbildschirm.

    Zum OAuth-Zustimmungsbildschirm

  2. Wählen Sie unter Nutzertyp die Option Intern aus und klicken Sie dann auf Erstellen.
  3. Geben Sie unter App-Name Meet REST API Tutorial ein.
  4. Füllen Sie das App-Registrierungsformular aus und klicken Sie dann auf Speichern und fortfahren.
  5. Klicken Sie auf Bereiche hinzufügen oder entfernen. Für jede API, die Sie in Ihrem Google Cloud-Projekt aktiviert haben, wird ein Bereich mit einer Liste der Bereiche angezeigt.
  6. Fügen Sie unter Bereiche manuell hinzufügen die folgenden Bereiche ein:
    • https://www.googleapis.com/auth/meetings.space.created
  7. Klicken Sie auf Zu Tabelle hinzufügen.
  8. Klicken Sie auf Aktualisieren.
  9. Nachdem Sie die für Ihre Anwendung erforderlichen Bereiche ausgewählt haben, klicken Sie auf Speichern und fortfahren.
  10. Wenn Sie als Nutzertyp Extern ausgewählt haben, fügen Sie Testnutzer hinzu:
    1. Klicken Sie unter Testnutzer auf Nutzer hinzufügen.
    2. Geben Sie Ihre E-Mail-Adresse und alle weiteren autorisierten Testnutzer ein und klicken Sie dann auf Speichern und fortfahren.
  11. Prüfen Sie die Zusammenfassung der App-Registrierung. Wenn Sie Änderungen vornehmen möchten, klicken Sie auf Bearbeiten. Wenn die Anwendungsregistrierung in Ordnung ist, klicken Sie auf Zurück zum Dashboard.

Client-ID erstellen

Die Client-ID dient während der OAuth 2.0-Abläufe als Anmeldedaten für Ihre Anwendung. Da die Anwendung lokal ausgeführt wird, sollten Sie eine Desktop-Client-ID erstellen.

  1. Klicken Sie in der Google Cloud Console auf das Dreistrich-Menü > APIs und Dienste > Anmeldedaten.

    Zu den Anmeldedaten

  2. Klicken Sie auf Anmeldedaten erstellen > OAuth-Client-ID.
  3. Klicken Sie auf Anwendungstyp > Desktop-App.
  4. Geben Sie im Feld Name einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
  5. Klicken Sie auf Erstellen. Der Bildschirm "OAuth-Client erstellt" wird mit Ihrer neuen Client-ID und Ihrem Clientschlüssel angezeigt.
  6. Klicken Sie auf OK. Die neu erstellten Anmeldedaten werden unter OAuth 2.0-Client-IDs angezeigt.

Google-Authentifizierungsbibliotheken installieren

Installieren Sie die Google-Authentifizierungsbibliotheken:

pip install google-auth google-auth-oauthlib

Autorisierung ausführen

Für die Meet REST API sind Nutzeranmeldedaten in Form eines OAuth 2.0-Zugriffstokens erforderlich. In diesem Abschnitt implementieren Sie den OAuth 2.0-Vorgang, um ein Zugriffstoken und ein Aktualisierungstoken für den Nutzer anzufordern.

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis die Datei main.py und fügen Sie den folgenden Inhalt hinzu:

    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. Zum Ausführen des Codes werden sowohl die Client-ID als auch das zuvor erstellte Secret benötigt. Kopieren Sie die heruntergeladene Clientschlüsseldatei in das Arbeitsverzeichnis des Projekts und benennen Sie sie in client_secret.json um.

  3. Wenn Sie testen möchten, wie die Autorisierung funktioniert, führen Sie den folgenden Befehl aus. Die Anwendung fordert zur Autorisierung auf und erstellt eine token.json-Datei im Arbeitsverzeichnis des Projekts, nachdem die Anfrage genehmigt wurde.

    python3 main.py
    

Meet REST API hinzufügen

Nachdem der Autorisierungscode vollständig ist, müssen Sie die Meet REST API aktivieren und aufrufen.

APIs aktivieren

Während sich dieser Abschnitt auf die Meet REST API konzentriert, werden in dieser Anleitung auch Google Cloud Pub/Sub und die Google Workspace Events API verwendet.

Google Cloud Console

  1. Aktivieren Sie in der Google Cloud Console die Google Meet REST API, die Google Workspace Events API und Google Cloud Pub/Sub.

    APIs aktivieren

  2. Prüfen Sie, ob die APIs im richtigen Cloud-Projekt aktiviert sind. Klicken Sie dann auf Weiter.

  3. Prüfen Sie, ob die richtigen APIs aktiviert sind, und klicken Sie dann auf Aktivieren.

gcloud-CLI

  1. Legen Sie gegebenenfalls für das aktuelle Cloud-Projekt das Projekt fest, das Sie mit dem Befehl gcloud config set project erstellt haben:

    gcloud config set project PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch die Projekt-ID des von Ihnen erstellten Cloud-Projekts.

  2. Aktivieren Sie die Google Meet REST API, die Google Workspace Events API und Google Cloud Pub/Sub mit dem Befehl gcloud services enable:

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

REST API-Clientbibliothek für Meet installieren

So installieren Sie die Clientbibliothek für die Meet REST API:

  1. Führen Sie diesen Befehl aus:

    pip install google-apps-meet
    
  2. Bearbeiten Sie die Datei main.py, um den Client zu importieren:

    from google.apps import meet_v2 as meet
    

Gruppenbereich erstellen

Die Meet REST API ist jetzt verfügbar. Definieren Sie nun eine Funktion zum Erstellen eines Konferenzraums, der abonniert werden kann.

Bearbeite main.py und füge Folgendes hinzu:

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

Ereignisse abonnieren

Wenn Sie Termine zu einem Konferenzraum erhalten möchten, erstellen Sie mit der Google Workspace Events API ein Abo. Außerdem müssen Sie ein Google Cloud Pub/Sub-Thema erstellen und abonnieren, das als Benachrichtigungsendpunkt dient, an dem Ihre Anwendung die Ereignisse empfängt.

Google Cloud Pub/Sub konfigurieren

So erstellen und abonnieren Sie ein Pub/Sub-Thema:

Google Cloud Console

  1. Klicken Sie in der Google Cloud Console auf das Dreistrich-Menü > Pub/Sub.

    Zu Pub/Sub

    Achten Sie darauf, dass das Cloud-Projekt für Ihre Anwendung ausgewählt ist.

  2. Klicken Sie auf Thema erstellen und gehen Sie so vor:
    1. Geben Sie workspace-events als Themennamen ein.
    2. Lassen Sie Standardabo hinzufügen ausgewählt.
    3. Klicken Sie auf Erstellen. Ihr vollständiger Themenname hat das Format projects/{project}/topics/{topic}. Notieren Sie sich diesen Namen zur späteren Verwendung.
  3. Gewähren Sie Zugriff, um Pub/Sub-Nachrichten zu Ihrem Thema zu veröffentlichen:
    1. Öffnen Sie in der Seitenleiste den Tab Berechtigungen.
    2. Klicken Sie auf Hauptkonto hinzufügen.
    3. Geben Sie unter Neue Hauptkonten meet-api-event-push@system.gserviceaccount.com ein.
    4. Wählen Sie unter Rollen zuweisen die Option Pub/Sub Publisher aus.
    5. Klicken Sie auf Speichern.

    Es kann einige Minuten dauern, bis die Berechtigungen für Ihr Thema aktualisiert sind.

gcloud-CLI

  1. Erstellen Sie in Ihrem Cloud-Projekt ein Thema. Führen Sie dazu den folgenden Befehl aus:
    gcloud pubsub topics create workspace-events

    Die Ausgabe zeigt den vollständigen Themennamen im Format projects/{project}/topics/{topic} an. Notieren Sie sich diesen Namen zur späteren Verwendung.

  2. Gewähren Sie Zugriff, um Nachrichten zu diesem Thema zu veröffentlichen:
     gcloud pubsub topics add-iam-policy-binding workspace-events --member='serviceAccount:meet-api-event-push@system.gserviceaccount.com' --role='roles/pubsub.publisher'

    Es kann einige Minuten dauern, bis die Berechtigungen für Ihr Thema aktualisiert sind.

  3. Erstellen Sie ein Pub/Sub-Abo für das Thema:
    gcloud pubsub subscriptions create workspace-events-sub --topic=TOPIC_NAME

    Ersetzen Sie Folgendes:

    • TOPIC_NAME: Der Name des Themas, das Sie im vorherigen Schritt erstellt haben.

Notieren Sie sich den Namen des Themas und achten Sie darauf, dass der Wert für {project} die Cloud-Projekt-ID für Ihre Anwendung ist. Sie verwenden den Namen des Themas, um das Google Workspace-Abo später zu erstellen.

Dienstkonto erstellen

Google Cloud Console

  1. Öffnen Sie in der Google Cloud Console das Dreistrich-Menü > IAM und Verwaltung > Dienstkonten.

    Zur Seite „Dienstkonten“

  2. Klicken Sie auf Dienstkonto erstellen.
  3. Geben Sie die Dienstkontodetails ein und klicken Sie dann auf Erstellen und fortfahren.
  4. Optional: Weisen Sie Ihrem Dienstkonto Rollen zu, um Zugriff auf die Ressourcen Ihres Google Cloud-Projekts zu gewähren. Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.
  5. Klicken Sie auf Weiter.
  6. Optional: Geben Sie Nutzer oder Gruppen ein, die Aktionen mit diesem Dienstkonto verwalten und ausführen können. Weitere Informationen finden Sie unter Identitätswechsel für Dienstkonten verwalten.
  7. Klicken Sie auf Fertig. Notieren Sie sich die E-Mail-Adresse für das Dienstkonto.

gcloud-CLI

  1. Erstellen Sie das Dienstkonto:
    gcloud iam service-accounts create meet-event-listener \
      --display-name="meet-event-listener"
  2. Optional: Weisen Sie Ihrem Dienstkonto Rollen zu, um Zugriff auf die Ressourcen Ihres Google Cloud-Projekts zu gewähren. Weitere Informationen finden Sie unter Zugriff auf Ressourcen erteilen, ändern und entziehen.

Dienstkonto verwenden

Gewähren Sie sich nach dem Erstellen des Dienstkontos Zugriff, um die Identität des Dienstkontos zu übernehmen.

Google Cloud Console

  1. Klicken Sie in der Spalte Aktionen für das neu erstellte Dienstkonto auf > Berechtigungen verwalten.
  2. Klicken Sie auf Schlüssel hinzufügen > Zugriff gewähren.
  3. Geben Sie unter Hauptkonten hinzufügen Ihre E-Mail-Adresse ein.
  4. Wählen Sie Dienstkonten > Ersteller von Dienstkonto-Tokens als Rolle aus.
  5. Klicken Sie auf Speichern.

gcloud-CLI

  1. Zum Hinzufügen der Berechtigung führen Sie gcloud iam service-accounts add-iam-policy-binding mit der E-Mail-Adresse des Dienstkontos und des Nutzers aus.
    gcloud iam service-accounts add-iam-policy-binding \
      SERVICE_ACCOUNT_EMAIL \
      --member="user:YOUR_EMAIL \
      --role="roles/iam.serviceAccountTokenCreator"
  2. Melden Sie sich mit gcloud an, um die Standardanmeldedaten für Anwendungen für das Dienstkonto festzulegen. Wenn Sie zur Autorisierung aufgefordert werden, melden Sie sich mit demselben Konto an, das Sie in den vorherigen Schritten verwendet haben.
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

Pub/Sub-Clientbibliothek installieren

  1. Installieren Sie mit pip die Clientbibliothek für Pub/Sub:

    pip install google-cloud-pubsub
    
  2. Bearbeiten Sie dann main.py, um den Client zu importieren:

    from google.cloud import pubsub_v1
    

Google Workspace-Abo erstellen

Fügen Sie main.py den folgenden Code hinzu, um eine Methode zum Abonnieren von Meet-Ereignissen zu definieren. Mit diesem Code werden alle Termine für einen Konferenzraum abonniert. Wenn ein Abo abgeschlossen wird, werden Ereignisse im Pub/Sub-Thema gepostet.

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

Als Nächstes fügen Sie den entsprechenden Code hinzu, um die Ereignisse abzurufen und zu verarbeiten.

Auf Ereignisse warten und diese verarbeiten

Fahren Sie mit dem Bearbeiten von main.py fort und fügen Sie den folgenden Beispielcode hinzu. Dieser Code implementiert die Empfängerseite und verwendet die Google Cloud Pub/Sub API, um Ereignisse abzurufen, sobald sie verfügbar sind. Die verschiedenen Handler-Methoden geben Informationen zu den entsprechenden Ereignissen aus.

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")

Code fertigstellen

Fügen Sie main.py den folgenden Code hinzu, um die Methoden zum Erstellen des Gruppenbereichs, zum Abonnieren von Ereignissen und zum Überwachen aufzurufen. Aktualisieren Sie die Konstanten TOPIC_NAME und SUBSCRIPTION_NAME mit den zuvor erstellten Themen- und Abonamen.

  1. Fügen Sie den Code in main.py ein:

    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)
    listen_for_events(subscription_name=SUBSCRIPTION_NAME)
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Die eindeutige Cloud-Projekt-ID für Ihre Anwendung, z. B. my-sample-project-191923.

    • TOPIC_ID: Der Name des Pub/Sub-Themas, das Sie in Ihrem Cloud-Projekt erstellt haben.

    • SUBSCRIPTION_ID: Der Name Ihres Abos, z. B. workspace-events-sub.

  2. Führen Sie das Programm aus:

    python3 main.py
    

Wenn Sie das Programm noch nicht ausgeführt haben, werden Sie beim ersten Mal zur Autorisierung aufgefordert. Gewähren Sie der Anwendung Zugriff, um die Meet REST API aufzurufen. Nachdem das Programm erfolgreich ausgeführt wurde, sollten Sie in etwa folgende Ausgabe sehen:

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

An Konferenz teilnehmen

Wenn Sie Ereignisse für die Anwendung generieren möchten, treten Sie der Konferenz über die von der Anwendung angezeigte URL bei. Nach dem Beitritt können Sie die folgenden Aktionen ausprobieren, um Ereignisse auszulösen:

  • Verlassen Sie die Videokonferenz und treten Sie ihr wieder bei.
  • Laden Sie andere ein oder wählen Sie sich über Ihr Telefon ein.
  • Aufzeichnungen und Transkripte aktivieren.

Durch jede dieser Aktivitäten wird ein Ereignis generiert, das die Anwendung empfängt und in der Google Cloud Console protokolliert.

Verwende ctrl-c, um das Programm zu unterbrechen, wenn du fertig bist.

Optional: Weitere Schritte

Die Anwendung protokolliert grundlegende Details zu den Ereignissen. Wenn Sie die Meet REST API weiter erkunden möchten, ändern Sie die Anwendung, um diese zusätzlichen Aktionen auszuführen.

  • Mit der People API können Sie zusätzliche Informationen zu angemeldeten Teilnehmern abrufen.
  • Mit der Google Drive API können Sie Aufzeichnungen und Transkripte herunterladen.
  • Anstatt Transkripte aus Google Drive herunterzuladen, können Sie sie mithilfe der strukturierten Transkriptmethoden in der Meet REST API abrufen.

Optional: Bereinigen

Damit Ihrem Google Cloud Console-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, sollten Sie alle erstellten Ressourcen und Projekte bereinigen.

So löschen Sie das Abo:

Console

  1. Öffnen Sie in der Google Cloud Console das Menü > Pub/Sub > Abos

    Zu den Abos

  2. Wähle das Abo aus und klicke auf Weitere Aktionen.

  3. Klicken Sie auf Löschen. Das Fenster Abo löschen wird angezeigt.

  4. Klicken Sie auf Löschen.

gcloud-CLI

  1. Abo löschen:

    gcloud pubsub subscriptions delete SUBSCRIPTION_NAME
    

So löschen Sie das Thema:

Console

  1. Öffnen Sie in der Google Cloud Console das Menü > Pub/Sub > Themen

    Themen aufrufen

  2. Wählen Sie das Thema aus und klicken Sie auf Weitere Aktionen.

  3. Klicken Sie auf Löschen. Das Fenster Thema löschen wird angezeigt.

  4. Geben Sie delete ein und klicken Sie dann auf Löschen.

gcloud-CLI

  1. Löschen Sie das Thema:

    gcloud pubsub topics delete TOPIC_NAME
    

So löschen Sie das Projekt:

Console

  1. Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten. Klicken Sie auf Menü > IAM und Verwaltung > Ressourcen verwalten.

    Zu Resource Manager

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen .
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Beenden, um das Projekt zu löschen.

gcloud-CLI

  1. Verwenden Sie den Befehl gcloud projects delete, um ein Projekt zu löschen:

    gcloud projects delete PROJECT_ID