Observa reuniones con Python y la API de REST de Google Meet

En este instructivo, se muestra cómo usar la API de REST de Google Meet junto con la API de Google Workspace Events y Google Cloud Pub/Sub para observar eventos y reaccionar a ellos en un espacio de reuniones de Meet. La aplicación de ejemplo registra cuándo comienzan y finalizan las conferencias, cuándo se unen o se van los participantes, y cuándo están disponibles los artefactos de reuniones generados.

En lugar de suscribirte a un espacio de reunión específico, puedes suscribirte a un usuario de Meet para recibir eventos de cualquier espacio de reunión que posea u organice el usuario. Para obtener más detalles, consulta Cómo suscribirse a los eventos de Google Meet en la documentación de la API de Google Workspace Events.

Requisitos previos

Si necesitas que se activen algunos de estos requisitos previos para tu organización, pídele a tu administrador de Google Workspace que los active:

Prepara el entorno

En esta sección, se muestra cómo crear y configurar tu entorno local y el proyecto de Google Cloud para este instructivo.

Crea un directorio de trabajo y un entorno virtual de Python

Para crear y activar un nuevo entorno virtual, ejecuta los siguientes comandos en tu terminal.

Linux/macOS

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

Windows (símbolo del sistema)

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

Crea un proyecto de Google Cloud

Consola de Google Cloud

  1. En la consola de Google Cloud, ve a Menú > IAM y administración > Crear un proyecto.

    Ir a Crear un proyecto

  2. En el campo Nombre del proyecto, ingresa un nombre descriptivo para tu proyecto.

    Opcional: Para editar el ID del proyecto, haz clic en Editar. El ID del proyecto no se puede cambiar después de que se crea el proyecto. Por lo tanto, elige un ID que abarque tus necesidades durante todo el ciclo de vida del proyecto.

  3. En el campo Ubicación, haz clic en Explorar para mostrar las posibles ubicaciones de tu proyecto. Luego, haga clic en Seleccionar.
  4. Haz clic en Crear. La consola de Google Cloud te redireccionará a la página Panel y tu proyecto se creará en unos minutos.

gcloud CLI

En uno de los siguientes entornos de desarrollo, accede a Google Cloud CLI (gcloud):

  • Cloud Shell: Para usar una terminal en línea con la CLI de gcloud ya configurada, activa Cloud Shell.
    Activa Cloud Shell
  • Shell local: Para usar un entorno de desarrollo local, instala e inicializa la CLI de gcloud.
    Para crear un proyecto de Cloud, usa el comando gcloud projects create:
    gcloud projects create PROJECT_ID
    Reemplaza PROJECT_ID configurando el ID del proyecto que deseas crear.

Habilita la facturación para el proyecto de Google Cloud

Consola de Google Cloud

  1. En la consola de Google Cloud, ve a Facturación. Haz clic en Menú > Facturación > Mis proyectos.

    Ir a Facturación de Mis proyectos

  2. En Selecciona una organización, elige la organización asociada con tu proyecto de Google Cloud.
  3. En la fila del proyecto, abre el menú Acciones (), haz clic en Cambiar facturación y elige la cuenta de Facturación de Cloud.
  4. Haz clic en Establecer cuenta.

gcloud CLI

  1. Para enumerar las cuentas de facturación disponibles, ejecuta el siguiente comando:
    gcloud billing accounts list
  2. Vincula una cuenta de facturación a un proyecto de Google Cloud:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    Reemplaza lo siguiente:

    • PROJECT_ID es el ID del proyecto del proyecto de Cloud para el que deseas habilitar la facturación.
    • BILLING_ACCOUNT_ID es el ID de la cuenta de facturación que se vinculará con el proyecto de Google Cloud.

Configura la autenticación y la autorización

La autenticación y la autorización permiten que la app acceda a los recursos de la API de REST de Meet. Se requiere la autorización del usuario para llamar a la API de REST de Meet. En esta sección, se muestra cómo configurar las credenciales del usuario y solicitar la autorización.

Configura la pantalla de consentimiento de OAuth y elige permisos

En los siguientes pasos, se sugiere información de marcador de posición para configurar la pantalla de consentimiento de OAuth de tu app. Antes de publicarla de forma externa, actualiza esta información.

  1. En la consola de Google Cloud, ve a Menú > Google Auth platform > Branding.

    Ir a Desarrollo de la marca

  2. Si ya configuraste Google Auth platform, puedes configurar los siguientes parámetros de configuración de la pantalla de consentimiento de OAuth en Branding, Audience y Data Access. Si ves un mensaje que dice Google Auth platform aún no se configuró, haz clic en Comenzar:
    1. En Información de la app, en Nombre de la app, ingresa Meet REST API Tutorial.
    2. En Correo electrónico de asistencia del usuario, elige una dirección de correo electrónico de asistencia a la que los usuarios puedan comunicarse contigo si tienen preguntas sobre su consentimiento.
    3. Haz clic en Siguiente.
    4. En Público, selecciona Interno.
    5. Haz clic en Siguiente.
    6. En Información de contacto, ingresa una dirección de correo electrónico en la que puedas recibir notificaciones sobre cualquier cambio en tu proyecto.
    7. Haz clic en Siguiente.
    8. En Finalizar, revisa la Política de Datos del Usuario de los Servicios de las APIs de Google y, si la aceptas, selecciona Acepto la Política de Datos del Usuario de los Servicios de las APIs de Google.
    9. Haz clic en Continuar.
    10. Haz clic en Crear.
    11. Si seleccionaste Externo como el tipo de usuario, agrega usuarios de prueba:
      1. Haz clic en Público.
      2. En Usuarios de prueba, haz clic en Agregar usuarios.
      3. Ingresa tu dirección de correo electrónico y los demás usuarios de prueba autorizados, y haz clic en Guardar.
  3. Haz clic en Acceso a los datos > Agregar o quitar permisos. Aparecerá un panel con una lista de los permisos para cada API que habilitaste en tu proyecto de Google Cloud.
  4. En Manually add scopes, pega los siguientes permisos:
    • https://www.googleapis.com/auth/meetings.space.created
  5. Haz clic en Agregar a la tabla.
  6. Haz clic en Actualizar.
  7. Después de seleccionar los permisos que requiere tu app, haz clic en Guardar.

Para obtener más información sobre cómo configurar el consentimiento de OAuth, consulta Primeros pasos con Google Auth platform.

Crea un ID de cliente

El ID de cliente actúa como credencial para tu aplicación durante los flujos de OAuth 2.0. Como la app se ejecuta de forma local, crea un ID de cliente de escritorio.

  1. En la consola de Google Cloud, ve a Menú > Google Auth platform > Clientes.

    Ir a Clientes

  2. Haz clic en Crear cliente.
  3. Haz clic en Tipo de aplicación > App para computadoras.
  4. En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
  5. Haz clic en Crear.

    La credencial recién creada aparecerá en "IDs de cliente de OAuth 2.0".

Instala las bibliotecas de Google Auth

Instala las bibliotecas de Google Auth:

pip install google-auth google-auth-oauthlib

Ejecutar autorización

La API de REST de Meet requiere credenciales de usuario en forma de un token de acceso de OAuth 2.0. En esta sección, implementarás el flujo de OAuth 2.0 para solicitar un token de acceso y un token de actualización para el usuario.

  1. En tu directorio de trabajo, crea el archivo main.py y agrega el siguiente contenido:

    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. Para ejecutar el código, se requieren el ID de cliente y el secreto que se crearon anteriormente. Copia el archivo del secreto del cliente descargado en el directorio de trabajo del proyecto y cámbiale el nombre a client_secret.json.

  3. Si deseas probar cómo funciona la autorización, ejecuta el siguiente comando. La app solicita autorización y crea un archivo token.json en el directorio de trabajo del proyecto después de que se aprueba la solicitud.

    python3 main.py

Agrega la API de REST de Meet

Ahora que el código de autorización está completo, es momento de habilitar y llamar a la API de REST de Meet.

Habilita las APIs

Si bien esta sección se enfoca en la API de REST de Meet, este instructivo también usa la API de Google Cloud Pub/Sub y la API de Google Workspace Events.

Consola de Google Cloud

  1. En la consola de Google Cloud, habilita la API de REST de Google Meet, la API de Google Workspace Events y Google Cloud Pub/Sub.

    Habilitar las API

  2. Confirma que habilitarás las APIs en el proyecto de Cloud correcto y, luego, haz clic en Siguiente.

  3. Confirma que habilitarás las APIs correctas y, luego, haz clic en Habilitar.

gcloud CLI

  1. Si es necesario, configura el proyecto actual de Cloud como el que creaste con el comando gcloud config set project:

    gcloud config set project PROJECT_ID

    Reemplaza PROJECT_ID por el ID del proyecto del proyecto de Cloud que creaste.

  2. Habilita la API de REST de Google Meet, la API de Google Workspace Events y Google Cloud Pub/Sub con el comando gcloud services enable:

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

Instala la biblioteca cliente de la API de REST de Meet

Sigue estos pasos para instalar la biblioteca cliente de la API de REST de Meet:

  1. Ejecuta el siguiente comando:

    pip install google-apps-meet
  2. Edita el archivo main.py para importar el cliente:

    from google.apps import meet_v2 as meet
    

Crea un espacio

Ahora que la API de REST de Meet está disponible, define una función para crear un espacio de reunión al que se pueda suscribir.

Edita main.py y agrega lo siguiente:

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

Suscríbete a eventos

Para recibir eventos sobre un espacio de reunión, crea una suscripción con la API de Google Workspace Events. También debes crear un tema de Google Cloud Pub/Sub y suscribirte a él, que funcionará como el extremo de notificación en el que tu app recibirá los eventos.

Configura Google Cloud Pub/Sub

Para crear un tema de Pub/Sub y suscribirte a él, haz lo siguiente:

Consola de Google Cloud

  1. En la consola de Google Cloud, ve al menú > Pub/Sub.

    Ir a Pub/Sub

    Asegúrate de que esté seleccionado el proyecto de Cloud para tu app.

  2. Haz clic en Crear tema y haz lo siguiente:
    1. Ingresa workspace-events como el nombre del tema.
    2. Deja seleccionada la opción Agregar una suscripción predeterminada.
    3. Haz clic en Crear. El nombre completo del tema tiene el formato projects/{project}/topics/{topic}. Toma nota de este nombre para usarlo en pasos posteriores.
  3. Otorga acceso para publicar mensajes de Pub/Sub en tu tema:
    1. En el panel lateral, abre la pestaña Permisos.
    2. Haz clic en Agregar principal.
    3. En Principales nuevas, ingresa meet-api-event-push@system.gserviceaccount.com.
    4. En Asignar roles, selecciona Pub/Sub Publisher.
    5. Haz clic en Guardar.

    Es posible que los permisos de tu tema tarden unos minutos en actualizarse.

gcloud CLI

  1. En tu proyecto de Cloud, crea un tema ejecutando el siguiente comando:
    gcloud pubsub topics create workspace-events

    En el resultado, se muestra el nombre completo del tema, con el formato projects/{project}/topics/{topic}. Toma nota de este nombre para usarlo en pasos posteriores.

  2. Otorga acceso para publicar mensajes en tu tema:
     gcloud pubsub topics add-iam-policy-binding workspace-events --member='serviceAccount:meet-api-event-push@system.gserviceaccount.com' --role='roles/pubsub.publisher'

    Es posible que los permisos de tu tema tarden unos minutos en actualizarse.

  3. Crea una suscripción a Pub/Sub para el tema.
    gcloud pubsub subscriptions create workspace-events-sub --topic=TOPIC_NAME

    Reemplaza lo siguiente:

    • TOPIC_NAME: Es el nombre del tema que creaste en el paso anterior.

Anota el nombre del tema y asegúrate de que el valor de {project} sea el ID del proyecto de Cloud de tu app. Usarás el nombre del tema para crear la suscripción a Google Workspace más adelante.

Crea una cuenta de servicio

Consola de Google Cloud

  1. En la consola de Google Cloud, ve a Menú > IAM y administración > Cuentas de servicio.

    Ir a Cuentas de servicio

  2. Haga clic en Crear cuenta de servicio.
  3. Completa los detalles de la cuenta de servicio y, luego, haz clic en Crear y continuar.
  4. En la sección Otorga a esta cuenta de servicio acceso al proyecto, agrega los siguientes roles:
    • roles/pubsub.subscriber
  5. Haz clic en Continuar.
  6. Opcional: Ingresa los usuarios o grupos que pueden administrar esta cuenta de servicio y realizar acciones con ella. Para obtener más detalles, consulta Administra la suplantación de identidad de cuentas de servicio.
  7. Haz clic en Listo. Toma nota de la dirección de correo electrónico de la cuenta de servicio.

gcloud CLI

  1. Crea la cuenta de servicio:
    gcloud iam service-accounts create meet-event-listener \
      --display-name="meet-event-listener"
  2. Otorga los roles necesarios a la cuenta de servicio:
    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:meet-event-listener@PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/pubsub.subscriber"

    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

Usa la cuenta de servicio

Después de crear la cuenta de servicio, otórgate acceso para suplantar la identidad de la cuenta de servicio.

Consola de Google Cloud

  1. En la columna Acciones de la cuenta de servicio recién creada, haz clic en > Administrar permisos.
  2. Haz clic en Agregar clave > Otorgar acceso.
  3. Ingresa tu dirección de correo electrónico en Agregar principales.
  4. Selecciona Cuentas de servicio > Creador de tokens de cuenta de servicio como el rol.
  5. Haz clic en Guardar.
  6. Vuelve a tu terminal y accede con gcloud para establecer las credenciales predeterminadas de la aplicación en la cuenta de servicio. Cuando se te solicite autorización, accede con la misma cuenta que usaste en los pasos anteriores.
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

gcloud CLI

  1. Para agregar el permiso, ejecuta gcloud iam service-accounts add-iam-policy-binding con la dirección de correo electrónico de la cuenta de servicio y el usuario.
    gcloud iam service-accounts add-iam-policy-binding \
      SERVICE_ACCOUNT_EMAIL \
      --member="user:YOUR_EMAIL" \
      --role="roles/iam.serviceAccountTokenCreator"
  2. Accede para establecer las credenciales predeterminadas de la aplicación en la cuenta de servicio. Cuando se te solicite autorización, accede con la misma cuenta que usaste en los pasos anteriores.
    gcloud auth application-default login --impersonate-service-account=SERVICE_ACCOUNT_EMAIL

Instala la biblioteca cliente de Pub/Sub

  1. Usa pip para instalar la biblioteca cliente de Pub/Sub:

    pip install google-cloud-pubsub
  2. Luego, edita main.py para importar el cliente:

    from google.cloud import pubsub_v1
    

Crea la suscripción a Google Workspace

Agrega el siguiente código a main.py para definir un método para suscribirse a eventos de Meet. Este código se suscribe a todos los eventos de una sala de reuniones. Cuando te suscribes, los eventos se publican en el tema de 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

A continuación, agrega el código correspondiente para extraer y procesar los eventos.

Cómo detectar y controlar eventos

Sigue editando main.py y agrega el siguiente código de muestra. Este código implementa el lado receptor y usa la API de Google Cloud Pub/Sub para extraer eventos a medida que están disponibles. Los distintos métodos de controlador imprimen información sobre los eventos correspondientes.

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

Finaliza el código

Agrega el siguiente código a main.py para llamar a los métodos que crean el espacio, se suscriben a los eventos y escuchan. Actualiza las constantes TOPIC_NAME y SUBSCRIPTION_NAME con tus propios nombres de temas y suscripciones que creaste anteriormente.

  1. Agrega el código a 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}")
    

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID único del proyecto de Cloud para tu app, como my-sample-project-191923.

    • TOPIC_ID: Es el nombre del tema de Pub/Sub que creaste en tu proyecto de Cloud.

    • SUBSCRIPTION_ID: Es el nombre de tu suscripción, como workspace-events-sub.

  2. Ejecuta el programa:

    python3 main.py

Si no ejecutaste el programa antes, se te solicitará autorización la primera vez. Otorga acceso a la aplicación para llamar a la API de REST de Meet. Después de que el programa se ejecute correctamente, deberías ver un resultado similar al siguiente:

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

Unirse a la conferencia

Para generar eventos para la aplicación, únete a la conferencia con la URL que muestra la aplicación. Después de unirte, puedes probar estas acciones para activar eventos:

  • Abandona la reunión y vuelve a unirte a ella.
  • Invita a otras personas o marca con tu teléfono.
  • Habilita las grabaciones y transcripciones.

Cada una de estas actividades genera un evento que la aplicación recibe y registra en la consola de Google Cloud.

Usa ctrl-c para interrumpir el programa cuando termines.

Opcional: Pasos adicionales que puedes probar

La app registra detalles básicos sobre los eventos. Para seguir explorando la API de REST de Meet, intenta modificar la aplicación para que realice estas acciones adicionales.

  • Usa la API de People para recuperar información adicional sobre los participantes que accedieron.

    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)
    

    Asegúrate de agregar "https://www.googleapis.com/auth/userinfo.profile" en el método de autorización en los ejemplos de credenciales anteriores.

  • Usa la API de Google Drive para descargar grabaciones y transcripciones.

  • En lugar de descargar transcripciones de Google Drive, recupéralas con los métodos de transcripción estructurada de la API de REST de Meet.

  • Obtener espacio en lugar de crear el espacio

    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)
    

    Asegúrate de agregar "https://www.googleapis.com/auth/meetings.space.readonly" en el método de autorización en los ejemplos de credenciales anteriores.

Opcional: Limpieza

Para evitar que se apliquen cargos a tu cuenta de la consola de Google Cloud por los recursos que usaste en este instructivo, te recomendamos que limpies todos los recursos y proyectos que creaste.

Para borrar la suscripción, haz lo siguiente:

Console

  1. En la consola de Google Cloud, ve a Menú > Pub/Sub > Suscripciones.

    Ir a Suscripciones

  2. Selecciona la suscripción y haz clic en Más acciones.

  3. Haz clic en Borrar. Aparecerá la ventana Borrar suscripción.

  4. Haz clic en Borrar.

gcloud CLI

  1. Borra la suscripción:

    gcloud pubsub subscriptions delete SUBSCRIPTION_NAME

Para borrar el tema, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve al menú > Pub/Sub > Temas.

    Ir a temas

  2. Selecciona el tema y haz clic en Más acciones.

  3. Haz clic en Borrar. Aparecerá la ventana Borrar tema.

  4. Ingresa delete y, luego, haz clic en Borrar.

gcloud CLI

  1. Borra el tema:

    gcloud pubsub topics delete TOPIC_NAME

Para borrar el proyecto, haz lo siguiente:

Console

  1. En la consola de Google Cloud, ve a la página Administrar recursos. Haz clic en Menú > IAM y administración > Administrar recursos.

    Ir al administrador de recursos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar .
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.

gcloud CLI

  1. Para borrar un proyecto, usa el comando gcloud projects delete:

    gcloud projects delete PROJECT_ID