En esta página, se explica cómo usar la API de Google Workspace Events para crear una suscripción a un recurso de Google Workspace. Una suscripción a Google Workspace permite que tu app reciba información sobre los eventos de Google Workspace, que representan cambios en un recurso de Google Workspace. Para obtener información sobre los recursos y los tipos de eventos que admite la API de Google Workspace Events, consulta la descripción general de la API de Google Workspace Events.
En esta página, se incluyen los siguientes pasos para crear una suscripción a Google Workspace:
- Configura el entorno.
- Crea un tema de Google Cloud Pub/Sub y suscríbete a él. Usas este tema como un extremo para recibir eventos de Google Workspace.
- Llama al método
create
de la API de Google Workspace Events en el recursoSubscription
. - Prueba tu suscripción a Google Workspace para verificar que tu tema de Pub/Sub reciba los eventos a los que te suscribiste.
- De manera opcional, configura cómo enviar eventos a un extremo para tu app, de modo que esta pueda procesar el evento y, si es necesario, tomar medidas.
Requisitos previos
Apps Script
- Para usar los comandos de Google Cloud CLI en esta guía, haz lo siguiente:
- Instala Google Cloud CLI.
- Para
inicializar la CLI de
gcloud
, ejecuta el siguiente código:
gcloud init
- Un proyecto de Google Cloud con la facturación habilitada. En el caso de las suscripciones a Chat, también debes habilitar la API de Chat en tu proyecto de Cloud y configurar los campos Nombre de la app, URL del avatar y Descripción. Para obtener más información, consulta Cómo compilar una app de Google Chat.
- Requiere la autenticación del usuario con la pantalla de consentimiento de OAuth configurada para la app. Cuando configures la pantalla de consentimiento, debes especificar un alcance para admitir cada tipo de evento de la suscripción. Para configurar la pantalla de consentimiento y determinar los permisos obligatorios, consulta Cómo elegir permisos.
- Un proyecto de Apps Script:
- Usa tu proyecto de Google Cloud en lugar del proyecto predeterminado que crea Apps Script automáticamente.
- Para cualquier permiso que hayas agregado para configurar la pantalla de consentimiento de OAuth, también debes agregar los permisos al archivo
appsscript.json
en tu proyecto de Apps Script. Por ejemplo: - Habilita el servicio avanzado de
Google Workspace Events
.
"oauthScopes": [ "https://www.googleapis.com/auth/chat.messages.readonly" ]
Python
- Python 3.6 o una versión posterior
- La herramienta de administración de paquetes pip
- Las bibliotecas cliente de Google más recientes para Python. Para instalarlos o actualizarlos, ejecuta el siguiente comando en tu interfaz de línea de comandos:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Para usar los comandos de Google Cloud CLI en esta guía, haz lo siguiente:
- Instala Google Cloud CLI.
- Para
inicializar la CLI de
gcloud
, ejecuta el siguiente código:
gcloud init
- Un proyecto de Google Cloud con la facturación habilitada. En el caso de las suscripciones a Chat, también debes habilitar la API de Chat en tu proyecto de Cloud y configurar los campos Nombre de la app, URL del avatar y Descripción. Para obtener más información, consulta Cómo compilar una app de Google Chat.
- Requiere la autenticación del usuario con la pantalla de consentimiento de OAuth configurada para la app. Cuando configures la pantalla de consentimiento, debes especificar un alcance para admitir cada tipo de evento de la suscripción. Para configurar la pantalla de consentimiento y determinar los permisos obligatorios, consulta Cómo elegir permisos.
Configura tu entorno
En la siguiente sección, se explica cómo configurar tu entorno antes de crear una suscripción a Google Workspace.
Habilita la API de Google Workspace Events y la API de Google Cloud Pub/Sub
Antes de usar las APIs de Google, debes activarlas en un proyecto de Google Cloud. Puedes activar una o más APIs en un solo proyecto de Google Cloud.Consola de Google Cloud
En la consola de Google Cloud, abre el proyecto de Google Cloud de tu app y habilita la API de Google Workspace Events y la API de Pub/Sub:
gcloud
En tu directorio de trabajo, accede a tu Cuenta de Google:
gcloud auth login
Configura tu proyecto como el proyecto de Cloud de tu app:
gcloud config set project PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto del proyecto de Cloud de tu app.Habilita la API de Google Workspace Events y la API de Google Cloud Pub/Sub:
gcloud services enable pubsub.googleapis.com workspaceevents.googleapis.com
Crea credenciales de ID de cliente de OAuth
Elige el tipo de aplicación para obtener instrucciones específicas sobre cómo crear un ID de cliente de OAuth:
Aplicación web
- En la consola de Google Cloud, ve a Menú > > Clientes.
- Haz clic en Crear cliente.
- Haz clic en Tipo de aplicación > Aplicación web.
- En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
- Agrega los URIs autorizados relacionados con tu app:
- Apps del cliente (JavaScript): En Orígenes autorizados de JavaScript, haz clic en Agregar URI. Luego, ingresa un URI para usarlo en las solicitudes del navegador. Identifica los dominios desde los que tu aplicación puede enviar solicitudes a la API del servidor de OAuth 2.0.
- Apps del servidor (Java, Python y más): En URIs de redireccionamiento autorizados, haz clic en Agregar URI. Luego, ingresa un URI de extremo al que el servidor de OAuth 2.0 pueda enviar respuestas.
- Haz clic en Crear.
La credencial recién creada aparecerá en IDs de cliente de OAuth 2.0.
Toma nota del ID de cliente. Los secretos de cliente no se usan para las aplicaciones web.
Android
- En la consola de Google Cloud, ve a Menú > > Clientes.
- Haz clic en Crear cliente.
- Haz clic en Tipo de aplicación > Android.
- En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
- En el campo "Nombre del paquete", ingresa el nombre del paquete de tu archivo
AndroidManifest.xml
. - En el campo "Huella digital del certificado SHA-1", ingresa la huella digital del certificado SHA-1 que generaste.
- Haz clic en Crear.
La credencial recién creada aparecerá en "IDs de cliente de OAuth 2.0".
iOS
- En la consola de Google Cloud, ve a Menú > > Clientes.
- Haz clic en Crear cliente.
- Haz clic en Tipo de aplicación > iOS.
- En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
- En el campo "ID del paquete", ingresa el identificador de paquete que aparece en el archivo
Info.plist
de la app. - Opcional: Si tu app aparece en la App Store de Apple, ingresa el ID de la App Store.
- Opcional: En el campo "ID del equipo", ingresa la cadena única de 10 caracteres que genera Apple y se asigna a tu equipo.
- Haz clic en Crear.
La credencial recién creada aparecerá en "IDs de cliente de OAuth 2.0".
App de Chrome
- En la consola de Google Cloud, ve a Menú > > Clientes.
- Haz clic en Crear cliente.
- Haz clic en Tipo de aplicación > Extensión de Chrome.
- En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
- En el campo "ID del elemento", ingresa la cadena de ID única de 32 caracteres de tu app. Puedes encontrar este valor de ID en la URL de Chrome Web Store de tu app y en el Panel del desarrollador de Chrome Web Store.
- Haz clic en Crear.
La credencial recién creada aparecerá en "IDs de cliente de OAuth 2.0".
App de escritorio
- En la consola de Google Cloud, ve a Menú > > Clientes.
- Haz clic en Crear cliente.
- Haz clic en Tipo de aplicación > App para computadoras.
- En el campo Nombre, escribe un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
- Haz clic en Crear.
La credencial recién creada aparecerá en "IDs de cliente de OAuth 2.0".
TVs y dispositivos de entrada limitada
- En la consola de Google Cloud, ve a Menú > > Clientes.
- Haz clic en Crear cliente.
- Haz clic en Tipo de aplicación > TVs y dispositivos de entrada limitada.
- En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
- Haz clic en Crear.
La credencial recién creada aparecerá en "IDs de cliente de OAuth 2.0".
Plataforma universal de Windows (UWP)
- En la consola de Google Cloud, ve a Menú > > Clientes.
- Haz clic en Crear cliente.
- Haz clic en Tipo de aplicación > Plataforma universal de Windows (UWP).
- En el campo "Nombre", ingresa un nombre para la credencial. Este nombre solo se muestra en la consola de Google Cloud.
- En el campo "ID de la tienda", ingresa el valor único de 12 caracteres del ID de Microsoft Store de tu app. Puedes encontrar este ID en la URL de Microsoft Store de tu app y en el Centro de socios.
- Haz clic en Crear.
La credencial recién creada aparecerá en "IDs de cliente de OAuth 2.0".
Descarga el archivo JSON del secreto del cliente
El archivo de secreto del cliente es una representación JSON de las credenciales del ID de cliente de OAuth a las que tu app puede hacer referencia cuando proporciona credenciales.
En la consola de Google Cloud, ve a Menú > APIs y servicios > Credenciales.
En ID de cliente de OAuth 2.0, haz clic en el ID de cliente que creaste.
Haz clic en Descargar JSON.
Guarda el archivo como
credentials.json
.
Crea un tema de Pub/Sub y suscríbete a él
En esta sección, crearás un tema de Pub/Sub y una suscripción a ese tema. Tu tema de Pub/Sub funciona como el extremo de notificación en el que tu suscripción a Google Workspace recibe eventos.
Para obtener más información sobre cómo crear y administrar temas de Pub/Sub, consulta la documentación de Pub/Sub.
Para crear un tema de Pub/Sub y suscribirte a él, haz lo siguiente:
Consola de Google Cloud
En la consola de Google Cloud, ve a la página de Pub/Sub:
Asegúrate de que esté seleccionado el proyecto de Cloud para tu app.
Haz clic en
Crear tema y haz lo siguiente:- Ingresa un nombre para el tema, como
workspace-events-topic
. - Deja seleccionada la opción Agregar una suscripción predeterminada. Pub/Sub le asigna a esta suscripción predeterminada un nombre similar al de tu tema, como
workspace-events-topic-sub
. - Opcional: Actualiza o configura propiedades adicionales para tu tema.
- Ingresa un nombre para el tema, como
Haz clic en Crear. El nombre completo del tema tiene el formato
projects/PROJECT_ID/topics/TOPIC_ID
. Usarás este nombre completo en un paso posterior.Otorga acceso para publicar mensajes de Pub/Sub en tu tema:
- En la página de tu tema, ve al panel lateral y abre la pestaña Permisos.
- Haz clic en Agregar principal.
- En el campo Agregar principales, agrega la cuenta de servicio de la aplicación de Google Workspace que entrega eventos a tu suscripción:
- Para los eventos de Chat,
chat-api-push@system.gserviceaccount.com
. - Vista previa para desarrolladores: Para los eventos de Drive,
drive-api-event-push@system.gserviceaccount.com
. - En el caso de los eventos de Meet,
meet-api-event-push@system.gserviceaccount.com
.
- Para los eventos de Chat,
- En el menú Asignar roles, selecciona
Pub/Sub Publisher
. - Haz clic en Guardar. Es posible que los permisos de tu tema tarden unos minutos en actualizarse.
gcloud
En tu proyecto de Cloud, crea un tema ejecutando el siguiente comando:
gcloud pubsub topics create TOPIC_ID
Reemplaza
TOPIC_ID
por un ID único para tu tema, comoworkspace-events-topic
.En el resultado, se muestra el nombre completo del tema, con el formato
projects/PROJECT_ID/topics/TOPIC_ID
. Toma nota del nombre y asegúrate de que el valor de PROJECT_ID sea el ID del proyecto de Cloud de tu app. Usarás el nombre del tema en el siguiente paso y para crear la suscripción a Google Workspace más adelante.Otorga acceso para publicar mensajes en tu tema:
gcloud pubsub topics add-iam-policy-binding TOPIC_NAME --member='serviceAccount:GOOGLE_WORKSPACE_APPLICATION' --role='roles/pubsub.publisher'
Reemplaza lo siguiente:
TOPIC_NAME
: Es el nombre completo del tema, que es el resultado del paso anterior. Tiene el formatoprojects/PROJECT_ID/topics/TOPIC_ID
.GOOGLE_WORKSPACE_APPLICATION
: Es la aplicación de Google Workspace que debe entregar eventos a tu suscripción:- Para recibir eventos de Chat, usa
chat-api-push@system.gserviceaccount.com
. - Versión preliminar para desarrolladores: Para recibir eventos de Drive, usa
drive-api-event-push@system.gserviceaccount.com
. - Para recibir eventos de Meet, usa
meet-api-event-push@system.gserviceaccount.com
.
- Para recibir eventos de Chat, usa
Es posible que los permisos de tu tema tarden unos minutos en actualizarse.
Crea una suscripción a Pub/Sub para el tema.
gcloud pubsub subscriptions create SUBSCRIPTION_NAME --topic=TOPIC_NAME
Reemplaza lo siguiente:
SUBSCRIPTION_NAME
: Un nombre para tu suscripción, comoworkspace-events-subscription
.TOPIC_NAME
: Es el nombre del tema que creaste en el paso anterior.
Suscríbete a un recurso de Google Workspace
En esta sección, te suscribirás al recurso de Google Workspace que deseas supervisar para detectar eventos.
Elige e identifica el recurso objetivo
En una suscripción de Google Workspace, el recurso de destino es el recurso de Google Workspace que supervisas para detectar eventos. El recurso de destino se representa en el campo targetResource
de la suscripción, con el formato del nombre completo del recurso. Por ejemplo, para una suscripción que supervisa un espacio de Google Chat (spaces/AAAABBBBBBB
), el valor de targetResource
es //chat.googleapis.com/spaces/AAAABBBBBBB
.
Antes de crear la suscripción, usa las siguientes secciones para aprender a identificar y dar formato al recurso de destino.
Identifica un recurso de destino para Chat
Recurso objetivo | Formato | Limitaciones |
---|---|---|
Espacio |
donde SPACE es el ID en el
nombre del recurso del recurso |
El usuario de Chat que autoriza la suscripción debe ser miembro del espacio a través de su cuenta de Google Workspace o de Google. |
Todos los espacios de un usuario |
|
La suscripción solo recibe eventos de los espacios en los que el usuario es miembro a través de su cuenta de Google Workspace o de Google. |
Usuario |
donde USER es el ID en el
nombre del recurso del recurso |
La suscripción solo recibe eventos sobre el usuario que la autorizó. Un usuario no puede autorizar una suscripción en nombre de otros usuarios. |
Identifica un recurso objetivo para Drive
Recurso objetivo | Formato | Limitaciones (si corresponde) |
---|---|---|
Archivo | //googleapis.com/drive/v3/files/FILE
donde FILE es el ID en el
nombre del recurso del recurso |
El usuario que autoriza la suscripción debe tener permiso para acceder al archivo dentro de la suscripción en relación con el evento de suscripción. |
Unidad compartida | //googleapis.com/drive/v3/drives/DRIVE
donde DRIVE es el ID en el
nombre del recurso del recurso |
La suscripción solo recibe eventos de los elementos de la unidad compartida en la que el usuario es miembro a través de su Cuenta de Google o Cuenta de Google Workspace. |
Identifica un recurso de destino para Meet
Recurso objetivo | Formato | Limitaciones (si corresponde) |
---|---|---|
Sala de reuniones | //meet.googleapis.com/spaces/SPACE
donde SPACE es el ID en el
nombre del recurso del recurso |
|
Usuario | //cloudidentity.googleapis.com/users/USER
donde USER es el ID en el campo
|
La suscripción recibe eventos sobre los espacios de reuniones en los que el usuario es uno de los siguientes:
|
Crea una suscripción a Google Workspace
Para crear una suscripción, usa el método subscriptions.create
de la API de Google Workspace Events para crear un recurso Subscription
.
Debes especificar los siguientes campos:
targetResource
: Es un espacio de Google Workspace que identificaste en la sección anterior, con el formato de su nombre completo del recurso.eventTypes
: Es un array de uno o más tipos de eventos que deseas recibir sobre el recurso. Por ejemplo, si tu app solo necesita saber sobre los mensajes nuevos publicados en un espacio de Chat, puede suscribirse a los eventos sobre los mensajes creados.notificationEndpoint
: Es un extremo de notificación en el que tu suscripción a Google Workspace entrega eventos. Usarás el tema de Pub/Sub que creaste en la sección anterior.payloadOptions
: Son opciones para especificar la cantidad de datos de recursos que se incluirán en la carga útil del evento. Esta configuración afecta el tiempo de vencimiento de tu suscripción. Para obtener más información, consulta Datos de eventos.
Para crear una suscripción a Google Workspace, haz lo siguiente:
Apps Script
En tu proyecto de Apps Script, crea un archivo de secuencia de comandos nuevo llamado
createSubscription
y agrega el siguiente código:function createSubscription() { // The Google Workspace resource to monitor for events. const targetResource = 'TARGET_RESOURCE'; // The types of events to receive. const eventTypes = [EVENT_TYPES]; // The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic. const pubsubTopic = 'TOPIC_NAME'; // Whether to include resource data or not. const resourceData = RESOURCE_DATA; // Call the Workspace Events API using the advanced service. const response = WorkspaceEvents.Subscriptions.create({ targetResource: targetResource, eventTypes: eventTypes, notificationEndpoint: { pubsubTopic: pubsubTopic, }, payloadOptions: { includeResource: resourceData } }); console.log(response); }
Reemplaza lo siguiente:
TARGET_RESOURCE
: Es el recurso de Google Workspace al que te suscribes, con el formato de su nombre completo. Por ejemplo, para suscribirte a un espacio de Google Chat con el ID de espacioAAAABBBB
, usa//chat.googleapis.com/spaces/AAAABBBB
.EVENT_TYPES
: Uno o más tipos de eventos a los que deseas suscribirte en el recurso de destino. Debe tener el formato de un array de cadenas, como'google.workspace.chat.message.v1.created'
.TOPIC_NAME
: Es el nombre completo del tema de Pub/Sub que creaste en tu proyecto de Cloud. Tiene el formatoprojects/PROJECT_ID/topics/TOPIC_ID
.RESOURCE_DATA
: Es un valor booleano que especifica si la suscripción incluye datos de recursos en la carga útil:True
: Incluye todos los datos del recurso. Para limitar los campos incluidos, agrega el campofieldMask
y especifica al menos un campo para el recurso cambiado. Solo las suscripciones a recursos de Chat admiten la inclusión de datos de recursos.False
: Excluye los datos de recursos.
Para crear la suscripción a Google Workspace, ejecuta la función
createSubscription
en tu proyecto de Apps Script.
Python
En tu directorio de trabajo, crea un archivo llamado
create_subscription.py
y agrega el siguiente código:"""Create subscription.""" from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build # Specify required scopes. SCOPES = [SCOPES] # Authenticate with Google Workspace and get user authentication. flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES) CREDENTIALS = flow.run_local_server() # The Google Workspace resource to monitor for events. TARGET_RESOURCE = 'TARGET_RESOURCE' # The types of events to receive. EVENT_TYPES = [EVENT_TYPES] # The endpoint to deliver events to, such as a Google Cloud Pub/Sub topic. TOPIC = 'TOPIC_NAME' # Call the Workspace Events API using the service endpoint. service = build( 'workspaceevents', 'v1', credentials=CREDENTIALS, ) BODY = { 'target_resource': TARGET_RESOURCE, 'event_types': EVENT_TYPES, 'notification_endpoint': {'pubsub_topic': TOPIC}, 'payload_options': {'include_resource': RESOURCE_DATA}, } response = service.subscriptions().create(body=BODY).execute() print(response)
Reemplaza lo siguiente:
SCOPES
: Uno o más permisos de OAuth que admiten cada tipo de evento para la suscripción. Se da formato como un array de cadenas. Para enumerar varios permisos, sepáralos con comas. Por ejemplo,'https://www.googleapis.com/auth/chat.spaces.readonly', 'https://www.googleapis.com/auth/chat.memberships.readonly'
.TARGET_RESOURCE
: Es el recurso de Google Workspace al que te suscribes, con el formato de su nombre completo. Por ejemplo, para suscribirte a un espacio de Google Chat con el ID de espacioAAAABBBB
, usa//chat.googleapis.com/spaces/AAAABBBB
.EVENT_TYPES
: Uno o más tipos de eventos a los que deseas suscribirte en el recurso de destino. Debe tener el formato de un array de cadenas, como'google.workspace.chat.message.v1.created'
.TOPIC_NAME
: Es el nombre completo del tema de Pub/Sub que creaste en tu proyecto de Cloud. Tiene el formatoprojects/PROJECT_ID/topics/TOPIC_ID
.RESOURCE_DATA
: Es un valor booleano que especifica si la suscripción incluye datos de recursos en la carga útil:True
: Incluye todos los datos del recurso. Para limitar los campos incluidos, agrega el campofieldMask
y especifica al menos un campo para el recurso cambiado. Solo las suscripciones a recursos de Chat admiten la inclusión de datos de recursos.False
: Excluye los datos de recursos.
Para crear la suscripción a Google Workspace, ejecuta el siguiente comando en tu terminal:
python3 create_subscription.py
La API de Google Workspace Events devuelve una operación de larga duración completada que contiene la instancia del recurso Subscription
que creaste.
Prueba tu suscripción a Google Workspace
Para probar que recibes eventos de Google Workspace, puedes activar un evento y extraer mensajes a la suscripción de Pub/Sub.
Para probar tu suscripción a Google Workspace, haz lo siguiente:
Consola de Google Cloud
Activa uno o más tipos de eventos en el recurso de destino de tu suscripción a Google Workspace. Por ejemplo, si te suscribiste a mensajes nuevos en un espacio de Chat, publica un mensaje en el espacio.
En la consola de Google Cloud, ve a la página de Pub/Sub:
Asegúrate de que esté seleccionado el proyecto de Cloud para tu app.
En el menú Pub/Sub, haz clic en Suscripciones.
En la tabla, busca la suscripción de Pub/Sub para tu tema y haz clic en el nombre de la suscripción.
Haz clic en la pestaña Mensajes.
Haz clic en Extraer. Un evento puede tardar hasta unos minutos en generar un mensaje de Pub/Sub.
gcloud
Activa uno o más tipos de eventos en el recurso de destino de tu suscripción a Google Workspace. Por ejemplo, si te suscribiste a mensajes nuevos en un espacio de Chat, publica un mensaje en el espacio.
Ejecuta el siguiente comando:
gcloud pubsub subscriptions pull PUBSUB_SUBSCRIPTION_NAME --format=json --limit=MESSAGE_COUNT --auto-ack
Reemplaza lo siguiente:
PUBSUB_SUBSCRIPTION_NAME
: Es el nombre completo de tu suscripción a Pub/Sub, con el formatoprojects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID
.MESSAGE_COUNT
: Es la cantidad máxima de mensajes de Pub/Sub que deseas extraer.
Un evento puede tardar hasta unos minutos en generar un mensaje de Pub/Sub.
Para cada evento de Google Workspace que activaste, se entrega un mensaje a tu suscripción de Pub/Sub que contiene el evento. Para obtener más información, consulta Cómo recibir eventos como mensajes de Google Cloud Pub/Sub.
Configura cómo tu app recibe eventos
La suscripción a Pub/Sub que creaste se basa en la extracción. Después de probar tu suscripción a Pub/Sub, puedes actualizar el tipo de entrega para cambiar la forma en que tu app recibe eventos. Por ejemplo, puedes configurar la suscripción a Pub/Sub para que sea de tipo de entrega push, de modo que tu app pueda recibir eventos directamente en un extremo de la app.
Para obtener información sobre cómo configurar una suscripción de Pub/Sub, consulta la documentación de Pub/Sub.