In dieser Anleitung wird gezeigt, wie Sie die Google Meet REST API zusammen mit der Google Workspace Events API und Google Cloud Pub/Sub verwenden, um Ereignisse in einem Meet-Besprechungsbereich zu beobachten und darauf zu reagieren. Die Beispielanwendung zeichnet auf, wann Konferenzen beginnen und enden, wann Teilnehmer beitreten oder sie verlassen und wann generierte Besprechungsartefakte verfügbar sind.
Anstatt einen bestimmten Besprechungsbereich zu abonnieren, können Sie einen Meet-Nutzer abonnieren, um Ereignisse für alle Besprechungsbereiche zu erhalten, die dem Nutzer gehören oder die er organisiert. Weitere Informationen finden Sie in der Dokumentation zur Google Workspace Events API unter Google Meet-Ereignisse abonnieren.
Vorbereitung
Wenn Sie eine dieser Voraussetzungen für Ihre Organisation aktivieren müssen, bitten Sie Ihren Google Workspace-Administrator, sie zu aktivieren:
- Ein Google Workspace-Konto mit Zugriff auf Google Meet.
- Sie haben Zugriff zum Erstellen eines Google Cloud-Projekts.
- Python 3 ist installiert.
- Die gcloud CLI ist installiert.
Umgebung vorbereiten
In diesem Abschnitt wird beschrieben, wie Sie Ihre lokale Umgebung und das Google Cloud-Projekt für dieses Tutorial 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
- Klicken Sie in der Google Cloud Console auf das Menü > IAM & Verwaltung > Projekt erstellen.
-
Geben Sie im Feld Projektname einen aussagekräftigen Namen für Ihr Projekt ein.
Optional: Wenn Sie die Projekt-ID bearbeiten möchten, klicken Sie auf Bearbeiten. Die Projekt-ID kann nach dem Erstellen des Projekts nicht mehr geändert werden. Wählen Sie also eine ID aus, die während der gesamten Dauer des Projekts den Anforderungen entspricht.
- Klicken Sie im Feld Speicherort auf Durchsuchen, um mögliche Speicherorte für Ihr Projekt aufzurufen. Klicken Sie danach auf Auswählen.
- Klicken Sie auf Erstellen. In der Google Cloud Console wird die Seite „Dashboard“ aufgerufen 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 Onlineterminal mit der bereits eingerichteten gcloud CLI zu verwenden.
Cloud Shell aktivieren -
Lokale Shell: Zur Verwendung einer lokalen Entwicklungsumgebung müssen Sie die gcloud CLI installieren und initialisieren.
Verwenden Sie zum Erstellen eines Cloud-Projekts den Befehlgcloud projects create
: Ersetzen Sie PROJECT_ID durch die ID des Projekts, das Sie erstellen möchten.gcloud projects create PROJECT_ID
Abrechnung für das Google Cloud-Projekt aktivieren
Google Cloud Console
- Rufen Sie in der Google Cloud Console die Seite Abrechnung auf. Klicken Sie auf das Menü > Abrechnung > Meine Projekte.
- Wählen Sie unter Organisation auswählen die Organisation aus, die mit Ihrem Google Cloud-Projekt verknüpft ist.
- Öffnen Sie in der Projektzeile das Menü Aktionen ( ), klicken Sie auf Abrechnung ändern und wählen Sie das Cloud Billing-Konto aus.
- Klicken Sie auf Konto festlegen.
gcloud-CLI
- Führen Sie folgenden Befehl aus, um verfügbare Rechnungskonten aufzulisten:
gcloud billing accounts list
- 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 für das Cloud-Projekt, 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 App auf Meet REST API-Ressourcen zugreifen. Für den Aufruf der Meet REST API ist eine Nutzerautorisierung erforderlich. In diesem Abschnitt wird beschrieben, wie Sie Nutzeranmeldedaten konfigurieren und eine Autorisierung anfordern.
OAuth-Zustimmungsbildschirm konfigurieren und Bereiche auswählen
In den folgenden Schritten werden Platzhalterinformationen zum Konfigurieren des OAuth-Zustimmungsbildschirms für Ihre App vorgeschlagen. Aktualisieren Sie diese Informationen, bevor Sie die App extern veröffentlichen.
- Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Branding auf.
- Wenn Sie die Google Auth platformbereits konfiguriert haben, können Sie die folgenden Einstellungen für den OAuth-Zustimmungsbildschirm unter Branding, Zielgruppe und Datenzugriff konfigurieren. Wenn Sie die Meldung Google Auth platform noch nicht konfiguriert sehen, klicken Sie auf Jetzt starten:
- Geben Sie unter App Information (App-Informationen) für App name (App-Name)
Meet REST API Tutorial
ein. - Wählen Sie unter E-Mail-Adresse des Nutzersupports eine Support-E-Mail-Adresse aus, über die Nutzer Sie mit Fragen zu ihrer Einwilligung kontaktieren können.
- Klicken Sie auf Weiter.
- Wählen Sie unter Zielgruppe die Option Intern aus.
- Klicken Sie auf Weiter.
- Geben Sie unter Kontaktdaten eine E-Mail-Adresse ein, unter der Sie über Änderungen an Ihrem Projekt benachrichtigt werden können.
- Klicken Sie auf Weiter.
- Sehen Sie sich unter Abschließen die Nutzerdatenrichtlinie für Google API-Dienste an. Wenn Sie damit einverstanden sind, wählen Sie Ich stimme der Nutzerdatenrichtlinie für Google API-Dienste zu aus.
- Klicken Sie auf Weiter.
- Klicken Sie auf Erstellen.
- Wenn Sie als Nutzertyp Extern ausgewählt haben, fügen Sie Testnutzer hinzu:
- Klicken Sie auf Zielgruppe.
- Klicken Sie unter Testnutzer auf Nutzer hinzufügen.
- Geben Sie Ihre E‑Mail-Adresse und die aller anderen autorisierten Testnutzer ein und klicken Sie auf Speichern.
- Klicken Sie auf Data Access > Add or Remove Scopes (Datenzugriff > Bereiche hinzufügen oder entfernen). Es wird ein Bereich mit einer Liste der Bereiche für jede API angezeigt, die Sie in Ihrem Google Cloud-Projekt aktiviert haben.
- Fügen Sie unter Bereiche manuell hinzufügen die folgenden Bereiche ein:
https://www.googleapis.com/auth/meetings.space.created
- Klicken Sie auf Zur Tabelle hinzufügen.
- Klicken Sie auf Aktualisieren.
- Nachdem Sie die für Ihre App erforderlichen Bereiche ausgewählt haben, klicken Sie auf Speichern.
Weitere Informationen zum Konfigurieren der OAuth-Zustimmung finden Sie unter Google Auth platform.
Client-ID erstellen
Die Client-ID dient als Anmeldedaten für Ihre Anwendung während der OAuth 2.0-Flows. Da die App lokal ausgeführt wird, erstellen Sie eine Desktop-Client-ID.
- Rufen Sie in der Google Cloud Console das Menü > Google Auth platform > Clients auf.
- Klicken Sie auf Create Client.
- Klicken Sie auf Anwendungstyp > Desktop-App.
- Geben Sie im Feld Name einen Namen für die Anmeldedaten ein. Dieser Name wird nur in der Google Cloud Console angezeigt.
- Klicken Sie auf Erstellen.
Die neu erstellten Anmeldedaten werden unter „OAuth 2.0-Client-IDs“ angezeigt.
Google-Auth-Bibliotheken installieren
Installieren Sie die Google-Auth-Bibliotheken:
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-Ablauf, um ein Zugriffs- und ein Aktualisierungstoken für den Nutzer anzufordern.
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()
Zum Ausführen des Codes sind sowohl die Client-ID als auch das Secret erforderlich, die zuvor erstellt wurden. Kopieren Sie die heruntergeladene Client-Secret-Datei in das Arbeitsverzeichnis des Projekts und benennen Sie sie in
client_secret.json
um.Wenn Sie testen möchten, wie die Autorisierung funktioniert, führen Sie den folgenden Befehl aus. Die App fordert eine Autorisierung an und erstellt nach der Genehmigung der Anfrage eine
token.json
-Datei im Arbeitsverzeichnis des Projekts.python3 main.py
Meet REST API hinzufügen
Nachdem der Autorisierungscode fertig ist, können Sie die Meet REST API aktivieren und aufrufen.
APIs aktivieren
In diesem Abschnitt geht es hauptsächlich um die Meet REST API. In dieser Anleitung werden aber auch die Google Cloud Pub/Sub API und die Google Workspace Events API verwendet.
Google Cloud Console
Aktivieren Sie in der Google Cloud Console die Google Meet REST API, die Google Workspace Events API und Google Cloud Pub/Sub.
Bestätigen Sie, dass Sie die APIs im richtigen Cloud-Projekt aktivieren, und klicken Sie auf Weiter.
Prüfen Sie, ob Sie die richtigen APIs aktivieren, und klicken Sie dann auf Aktivieren.
gcloud-CLI
Legen Sie gegebenenfalls das aktuelle Cloud-Projekt auf 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.
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
Meet REST API-Clientbibliothek installieren
So installieren Sie die Meet REST API-Clientbibliothek:
Führen Sie diesen Befehl aus:
pip install google-apps-meet
Bearbeiten Sie die Datei
main.py
, um den Client zu importieren:from google.apps import meet_v2 as meet
Gruppenbereich erstellen
Nachdem die Meet REST API verfügbar ist, definieren Sie eine Funktion zum Erstellen eines Besprechungsbereichs, der abonniert werden kann.
Bearbeiten Sie main.py
und fügen Sie 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 Ereignisse zu einem Videokonferenzraum erhalten möchten, erstellen Sie ein Abo mit der Google Workspace Events API. Außerdem müssen Sie ein Google Cloud Pub/Sub-Thema erstellen und abonnieren, das als Benachrichtigungsendpunkt dient, über den Ihre App die Ereignisse empfängt.
Google Cloud Pub/Sub konfigurieren
So erstellen Sie ein Pub/Sub-Thema und abonnieren es:
Google Cloud Console
- Rufen Sie in der Google Cloud Console das Menü > Pub/Sub auf.
Achten Sie darauf, dass das Cloud-Projekt für Ihre App ausgewählt ist.
- Klicken Sie auf
- Geben Sie
workspace-events
als Namen des Themas ein. - Lassen Sie Standardabo hinzufügen ausgewählt.
- Klicken Sie auf Erstellen. Der vollständige Themenname hat das Format
projects/{project}/topics/{topic}
. Notieren Sie sich diesen Namen für die Verwendung in späteren Schritten.
Thema erstellen und gehen Sie so vor:
- Geben Sie
- Gewähren Sie Zugriff zum Veröffentlichen von Pub/Sub-Nachrichten in Ihrem Thema:
- Öffnen Sie in der Seitenleiste den Tab Berechtigungen.
- Klicken Sie auf Hauptkonto hinzufügen.
- Geben Sie unter Neue Hauptkonten
meet-api-event-push@system.gserviceaccount.com
ein. - Wählen Sie unter Rollen zuweisen die Option
Pub/Sub Publisher
aus. - Klicken Sie auf Speichern.
Es kann einige Minuten dauern, bis die Berechtigungen für Ihr Thema aktualisiert werden.
gcloud-CLI
- Erstellen Sie in Ihrem Cloud-Projekt ein Thema, indem Sie Folgendes ausführen:
gcloud pubsub topics create workspace-events
Die Ausgabe enthält den vollständigen Namen des Themas im Format
projects/{project}/topics/{topic}
. Notieren Sie sich diesen Namen für die Verwendung in späteren Schritten. - Zugriff zum Veröffentlichen von Nachrichten zu Ihrem Thema gewähren:
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 werden.
- 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 App ist. Sie verwenden den Namen des Themas später, um das Google Workspace-Abo zu erstellen.
Dienstkonto erstellen
Google Cloud Console
- Rufen Sie in der Google Cloud Console das Menü > IAM & Verwaltung > Dienstkonten auf.
- Klicken Sie auf Dienstkonto erstellen.
- Geben Sie die Dienstkontodetails ein und klicken Sie dann auf Erstellen und fortfahren.
- Fügen Sie im Abschnitt Diesem Dienstkonto Zugriff auf das Projekt erteilen die folgenden Rollen hinzu:
roles/pubsub.subscriber
- Klicken Sie auf Weiter.
- Optional: Geben Sie Nutzer oder Gruppen ein, die dieses Dienstkonto verwalten und Aktionen damit ausführen können. Weitere Informationen finden Sie unter Identitätswechsel von Dienstkonten verwalten.
- Klicken Sie auf Fertig. Notieren Sie sich die E-Mail-Adresse des Dienstkontos.
gcloud-CLI
- Erstellen Sie das Dienstkonto:
gcloud iam service-accounts create meet-event-listener \ --display-name="meet-event-listener"
- Weisen Sie dem Dienstkonto die erforderlichen Rollen zu:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:meet-event-listener@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/pubsub.subscriber"
Ersetzen Sie
PROJECT_ID
durch Ihre Google Cloud-Projekt-ID.
Dienstkonto verwenden
Nachdem Sie das Dienstkonto erstellt haben, gewähren Sie sich selbst Zugriff, um die Identität des Dienstkontos zu übernehmen.
Google Cloud Console
- Klicken Sie in der Spalte Aktionen für das neu erstellte Dienstkonto auf > Berechtigungen verwalten.
- Klicken Sie auf Schlüssel hinzufügen > Zugriff gewähren.
- Geben Sie unter Hauptkonten hinzufügen Ihre E-Mail-Adresse ein.
- Wählen Sie Dienstkonten > Ersteller von Dienstkonto-Tokens als Rolle aus.
- Klicken Sie auf Speichern.
- Kehren Sie zum Terminal zurück und melden Sie sich mit
gcloud
an, um die Standardanmeldedaten für Anwendungen auf das Dienstkonto festzulegen. Melden Sie sich bei der Aufforderung zur Autorisierung mit demselben Konto an, das Sie in den vorherigen Schritten verwendet haben.gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL
gcloud-CLI
- Führen Sie
gcloud iam service-accounts add-iam-policy-binding
mit der E-Mail-Adresse des Dienstkontos und des Nutzers aus, um die Berechtigung hinzuzufügen.gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT_EMAIL \ --member="user:YOUR_EMAIL" \ --role="roles/iam.serviceAccountTokenCreator"
- Melden Sie sich an, um die Standardanmeldedaten für Anwendungen auf das Dienstkonto festzulegen. Melden Sie sich bei der Aufforderung zur Autorisierung 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
Installieren Sie die Clientbibliothek für Pub/Sub mit
pip
:pip install google-cloud-pubsub
Bearbeiten Sie dann
main.py
, um den Client zu importieren:from google.cloud import pubsub_v1
Google Workspace-Abo erstellen
Fügen Sie den folgenden Code zu main.py
hinzu, um eine Methode zum Abonnieren von Meet-Ereignissen zu definieren. Mit diesem Code werden alle Ereignisse für einen Besprechungsraum abonniert. Wenn Sie das Thema abonnieren, werden Ereignisse in das 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
Fügen Sie als Nächstes den entsprechenden Code hinzu, um die Ereignisse abzurufen und zu verarbeiten.
Auf Ereignisse warten und sie verarbeiten
Bearbeiten Sie main.py
weiter und fügen Sie den folgenden Beispielcode hinzu. Dieser Code implementiert die Empfangsseite und verwendet die Google Cloud Pub/Sub API, um Ereignisse abzurufen, sobald sie verfügbar sind. Die verschiedenen Handlermethoden 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 den folgenden Code zu main.py
hinzu, um die Methoden zum Erstellen des Bereichs, zum Abonnieren von Ereignissen und zum Zuhören aufzurufen. Aktualisieren Sie die Konstanten TOPIC_NAME
und SUBSCRIPTION_NAME
mit Ihren eigenen Themen- und Abonnementsnamen, die Sie zuvor erstellt haben.
Fügen Sie den Code zu
main.py
hinzu: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}")
Ersetzen Sie Folgendes:
PROJECT_ID
: Die eindeutige Cloud-Projekt-ID für Ihre App, 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
.
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. Zugriff auf die Anwendung gewähren, damit die Meet REST API aufgerufen werden kann. Nachdem das Programm erfolgreich ausgeführt wurde, sollte die Ausgabe in etwa so aussehen:
Join the meeting at https://meet.google.com/abc-mnop-xyz
An der Konferenz teilnehmen
Wenn Sie Ereignisse für die Anwendung generieren möchten, nehmen Sie über die von der Anwendung angezeigte URL an der Konferenz teil. Nachdem Sie die Einladung angenommen haben, können Sie diese Aktionen ausführen, um Ereignisse auszulösen:
- Verlassen Sie die Besprechung und treten Sie ihr wieder bei.
- Andere einladen oder sich per Telefon einwählen
- Aktivieren Sie Aufzeichnungen und Transkriptionen.
Jede dieser Aktivitäten generiert ein Ereignis, das die Anwendung empfängt und in der Google Cloud Console protokolliert.
Verwenden Sie ctrl-c
, um das Programm zu unterbrechen, wenn Sie fertig sind.
Optional: Weitere Schritte
Die App protokolliert grundlegende Details zu den Ereignissen. Wenn Sie sich weiter mit der Meet REST API vertraut machen möchten, können Sie die Anwendung so ändern, dass sie diese zusätzlichen Aktionen ausführt.
Mit der People API können Sie zusätzliche Informationen zu angemeldeten Teilnehmern abrufen.
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)
Achten Sie darauf, dass Sie „https://www.googleapis.com/auth/userinfo.profile“ in der authorize-Methode in den Anmeldedatenbeispielen oben hinzufügen.
Verwenden Sie die Google Drive API, um Aufzeichnungen und Transkripte herunterzuladen.
Anstatt Transkripte aus Google Drive herunterzuladen, können Sie sie mit den Methoden für strukturierte Transkripte in der Meet REST API abrufen.
Speicherplatz erhalten, anstatt einen Gruppenbereich zu erstellen
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)
Achten Sie darauf, dass Sie „https://www.googleapis.com/auth/meetings.space.readonly“ in der authorize-Methode in den oben genannten Anmeldedatenbeispielen hinzufügen.
Optional: Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, empfehlen wir, alle erstellten Ressourcen und Projekte zu bereinigen.
So löschen Sie das Abo:
Console
Rufen Sie in der Google Cloud Console das Menü > Pub/Sub > Abos auf.
Wählen Sie das Abo aus und klicken Sie auf das Menü
Weitere Aktionen.Klicken Sie auf Löschen. Das Fenster Abo löschen wird angezeigt.
Klicken Sie auf Löschen.
gcloud-CLI
Abo löschen:
gcloud pubsub subscriptions delete SUBSCRIPTION_NAME
So löschen Sie das Thema:
Console
Rufen Sie in der Google Cloud Console das Menü > Pub/Sub > Themen auf.
Wählen Sie das Thema aus und klicken Sie auf
Weitere Aktionen.Klicken Sie auf Löschen. Das Fenster Thema löschen wird angezeigt.
Geben Sie
delete
ein und klicken Sie dann auf Löschen.
gcloud-CLI
So löschen Sie das Thema:
gcloud pubsub topics delete TOPIC_NAME
So löschen Sie das Projekt:
Console
- Wechseln Sie in der Google Cloud Console zur Seite Ressourcen verwalten. Klicken Sie auf das Menü > IAM & Verwaltung > Ressourcen verwalten.
- Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen .
- Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Beenden, um das Projekt zu löschen.
gcloud-CLI
Verwenden Sie den Befehl gcloud projects delete, um ein Projekt zu löschen:
gcloud projects delete PROJECT_ID
Weitere Informationen
- Weitere Informationen zu den Meet-Ereignistypen, die Sie abonnieren können
- Weitere Informationen zur Google Meet REST API und Referenzdokumentation
- Google Workspace-Abo erstellen, um Meet-Besprechungsräume oder ‑Nutzer mit der Google Workspace Events API zu erstellen.
- Weitere Informationen zur Authentifizierung finden Sie unter OAuth-Zustimmungsbildschirm konfigurieren und Bereiche auswählen.