Muestra una lista de eventos de un espacio de Google Chat

En esta guía, se explica cómo usar el list() método en el recurso SpaceEvent de la API de Google Chat para enumerar los cambios en los recursos de un espacio.

El SpaceEvent recurso representa un cambio en el espacio de destino, incluidos los recursos secundarios del espacio como mensajes, reacciones y membresías. Para obtener más información sobre la lista de tipos de eventos y cargas útiles de eventos compatibles, consulta los campos eventType y payload de la documentación de referencia del recurso SpaceEvent.

Puedes enumerar eventos hasta 28 días antes de la hora de la solicitud. El servidor muestra eventos que contienen la versión más reciente del recurso afectado. Por ejemplo, si enumeras eventos sobre miembros nuevos del espacio, el servidor muestra recursos Membership que contienen los detalles de membresía más recientes. Si se quitaron miembros nuevos durante el período solicitado, la carga útil del evento contiene un recurso Membership vacío.

Para enumerar eventos de un espacio, el usuario autenticado o la app de Chat deben ser miembros del espacio.

Requisitos previos

Node.js

Python

Enumera eventos del espacio (autenticación de usuario)

Para enumerar eventos del espacio desde un espacio de Chat, pasa lo siguiente en tu solicitud:

  • Especifica uno o más alcances de autorización para admitir cada tipo de evento en tu solicitud. Como práctica recomendada, elige el alcance más restrictivo que permita que tu app funcione. Para elegir un alcance, consulta la Descripción general de la autenticación y la autorización.

  • Llama al ListSpaceEvents() método, y pasa el filter de los tipos de eventos que se enumerarán. Debes especificar al menos un tipo de evento y también puedes filtrar por fecha. Para obtener una lista de los tipos de eventos admitidos, consulta el eventType campo de la SpaceEvent resource documentación de referencia.

En el siguiente ejemplo, se enumeran eventos sobre membresías y mensajes nuevos en un espacio:

Node.js

chat/client-libraries/cloud/list-space-events-user-cred.js
import {createClientWithUserCredentials} from './authentication-utils.js';

// Authorization scopes based on the event types
const USER_AUTH_OAUTH_SCOPES = [
  'https://www.googleapis.com/auth/chat.memberships.readonly',
  'https://www.googleapis.com/auth/chat.messages.readonly',
];

// This sample shows how to list space events with user credential
async function main() {
  // Create a client
  const chatClient = await createClientWithUserCredentials(
    USER_AUTH_OAUTH_SCOPES,
  );

  // Initialize request argument(s)
  const request = {
    // Replace SPACE_NAME here
    parent: 'spaces/SPACE_NAME',
    // A required filter. Filters events about new memberships and messages.
    filter:
      'eventTypes:"google.workspace.chat.membership.v1.created" OR eventTypes:"google.workspace.chat.message.v1.created"',
  };

  // Make the request
  const pageResult = chatClient.listSpaceEventsAsync(request);

  // Handle the response. Iterating over pageResult will yield results and
  // resolve additional pages automatically.
  for await (const response of pageResult) {
    console.log(response);
  }
}

await main();

Para ejecutar esta muestra, reemplaza SPACE_NAME por el ID de el namedel espacio. Puedes obtener el ID llamando al ListSpaces() método o desde la URL del espacio.

La API de Chat muestra una lista de lista paginada de eventos del espacio sobre membresías y mensajes nuevos.

Enumera eventos del espacio (autenticación de la app de Chat)

La autenticación de la app requiere la aprobación única del administrador.

Para enumerar eventos del espacio desde un espacio con autenticación de la app y la API de REST de Chat, pasa lo siguiente en tu solicitud:

  • Especifica uno o más alcances de autorización para admitir cada tipo de evento en tu solicitud. Como práctica recomendada, elige el alcance más restrictivo que permita que tu app funcione. Para obtener más información sobre cómo elegir un alcance, consulta la Descripción general de la autenticación y la autorización.
    • https://www.googleapis.com/auth/chat.app.memberships
    • https://www.googleapis.com/auth/chat.app.memberships.readonly
    • https://www.googleapis.com/auth/chat.app.messages.readonly
    • https://www.googleapis.com/auth/chat.app.spaces
    • https://www.googleapis.com/auth/chat.app.spaces.readonly
  • Llama al list método en el spaceEvents recurso.
  • Pasa el name del espacio desde el que se enumerarán los mensajes.
  • Pasa un filter para consultar tipos de eventos específicos.

Escribe una secuencia de comandos que llame a la API de Chat

A continuación, se muestra cómo enumerar eventos del espacio con la autenticación de la app y la API de REST de Chat:

Python

  1. En tu directorio de trabajo, crea un archivo llamado chat_spaceevents_list_app.py.
  2. Incluye el siguiente código en chat_spaceevents_list_app.py:

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Define your app's authorization scopes.
    # Set authorization scopes based on the
    # event type. For example, if you are getting a space event
    # about a new membership, use the `chat.app.memberships` scope.
    #
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.app.memberships",
              "https://www.googleapis.com/auth/chat.app.memberships.readonly",
              "https://www.googleapis.com/auth/chat.app.messages.readonly",
              "https://www.googleapis.com/auth/chat.app.spaces",
              "https://www.googleapis.com/auth/chat.app.spaces.readonly"]
    
    def main():
        '''
        Authenticates with Chat API using app authentication,
        then lists space events from a specified space.
        '''
    
        # Specify service account details.
        creds = (
            service_account.Credentials.from_service_account_file('credentials.json')
            .with_scopes(SCOPES)
        )
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds)
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().spaceEvents().list(
    
            # The space to list events from.
            #
            # Replace SPACE_NAME with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            parent='spaces/SPACE_NAME',
    
            # A required filter. Filters events by event type.
            #
            # Update this filter to match your requirements.
            filter='eventTypes:"google.workspace.chat.message.v1.created"'
    
        ).execute()
    
        # Print Chat API's response in your command line interface.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. En el código, reemplaza lo siguiente:

    • SPACE_NAME: Un nombre de espacio que puedes obtener del spaces.list método en la API de Chat o desde la URL de un espacio.
  4. En tu directorio de trabajo, compila y ejecuta la muestra:

    python3 chat_spaceevents_list_app.py

La API de Chat muestra una lista de lista paginada de eventos del espacio sobre membresías y mensajes nuevos.