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 eventos de Google Workspace y Google Cloud Pub/Sub para observar y reaccionar a eventos en un espacio de reuniones de Meet. La aplicación de ejemplo registra cuándo comienzan y terminan las conferencias, cuándo se unen o salen los participantes y cuándo están disponibles los artefactos de reunión 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 el usuario posea o organice. Para obtener más detalles, consulta Cómo suscribirse a eventos de Google Meet en la documentación de la API de Google Workspace Events.

Requisitos previos

Si necesitas que se active alguno de estos requisitos previos para tu organización, pídele al 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 la 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 navega a la página Panel y se crea tu proyecto 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.
    Activar 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
    Para reemplazar PROJECT_ID, configura 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 obtener una lista de las cuentas de facturación disponibles, ejecuta lo siguiente:
    gcloud billing accounts list
  2. Vincula una cuenta de facturación con 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 explica 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 para tu app. Antes de publicarla de forma externa, actualiza esta información.

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Pantalla de consentimiento de OAuth.

    Ir a la pantalla de consentimiento de OAuth

  2. En Tipo de usuario, selecciona Interno y, luego, haz clic en Crear.
  3. En Nombre de la app, ingresa Meet REST API Tutorial.
  4. Completa el formulario de registro de la aplicación y, luego, haz clic en Guardar y continuar.
  5. Haz clic en Agregar o quitar alcances. Aparecerá un panel con una lista de permisos para cada API que habilitaste en tu proyecto de Google Cloud.
  6. En Agregar permisos manualmente, pega los siguientes permisos:
    • https://www.googleapis.com/auth/meetings.space.created
  7. Haz clic en Agregar a la tabla.
  8. Haz clic en Actualizar.
  9. Después de seleccionar los permisos necesarios para tu app, haz clic en Guardar y continuar.
  10. Si seleccionaste Externo como el tipo de usuario, agrega usuarios de prueba:
    1. En Usuarios de prueba, haz clic en Agregar usuarios.
    2. Ingresa tu dirección de correo electrónico y los demás usuarios de prueba autorizados, y haz clic en Guardar y continuar.
  11. Revisa el resumen del registro de tu app. Para realizar cambios, haz clic en Editar. Si el registro de la app parece correcto, haz clic en Volver al panel.

Crea un ID de cliente

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

  1. En la consola de Google Cloud, ve a Menú > APIs y servicios > Credenciales.

    Ir a Credenciales

  2. Haz clic en Crear credenciales > ID de cliente de OAuth.
  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. Aparecerá la pantalla Se creó el cliente de OAuth, que muestra tu nuevo ID de cliente y secreto de cliente.
  6. Haz clic en Aceptar. 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

Ejecuta la autorización

La API de REST de Meet requiere credenciales del 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 antes. Copia el archivo de secreto de 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 se completó el código de autorización, es hora de habilitar y llamar a la API de REST de Meet.

Habilitación de las API

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 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 eventos de Google Workspace y Google Cloud Pub/Sub.

    Habilitar las API

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

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

gcloud CLI

  1. Si es necesario, establece el proyecto de Cloud actual en 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 Eventos de Google Workspace 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 y suscribirte a un tema de Google Cloud Pub/Sub que funcione como el extremo de notificación en el que tu app recibe 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 a Menú > Pub/Sub.

    Ir a Pub/Sub

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

  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 lo siguiente:
    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. Opcional: Asigna roles a tu cuenta de servicio para otorgar acceso a los recursos de tu proyecto de Google Cloud. Para obtener más detalles, consulta Otorga, cambia y revoca el acceso a los recursos.
  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. Opcional: Asigna roles a tu cuenta de servicio para otorgar acceso a los recursos de tu proyecto de Google Cloud. Para obtener más detalles, consulta Otorga, cambia y revoca el acceso a los recursos.

Usa la cuenta de servicio

Después de crear la cuenta de servicio, ótorgate acceso para actuar en nombre 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 rol.
  5. Haz clic en Guardar.
  6. Regresa a la 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 del 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 suscribirte a los eventos de Meet. Este código se suscribe a todos los eventos de un espacio de reunión. 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

Continúa 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 diferentes 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 eventos y escuchan. Actualiza las constantes TOPIC_NAME y SUBSCRIPTION_NAME con tus propios nombres de tema y suscripción 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)
    listen_for_events(subscription_name=SUBSCRIPTION_NAME)
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID único del proyecto de Cloud de 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 anteriormente, 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

Cómo 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 el número 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.

Pasos adicionales que puedes probar (opcional)

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

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 borres los recursos y los proyectos que creaste.

Para borrar la suscripción, sigue estos pasos:

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 a 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.

    Ve al Administrador de recursos.

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar .
  3. En el cuadro de 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