Mostrar lista de espacios

En esta guía, se explica cómo usar el recurso list en el recurso Space de la API de Google Chat para enumerar espacios. Cuando se muestran espacios, se muestra una lista paginada y filtrable de espacios.

El recurso Space representa un lugar donde las personas y las apps de Chat pueden enviar mensajes, compartir archivos y colaborar. Existen varios tipos de espacios:

  • Los mensajes directos (MD) son conversaciones entre dos usuarios, o un usuario, y una app de Chat.
  • Los chats en grupo son conversaciones entre tres o más usuarios y las apps de Chat.
  • Los espacios con nombre son lugares persistentes en los que las personas envían mensajes, comparten archivos y colaboran.

Enumerar los espacios con la autenticación de la app enumeran los espacios a los que tiene acceso la app de Chat. Para hacer una lista de los espacios con Autenticación de usuario, se enumeran los espacios a los que tiene acceso el usuario autenticado.

Requisitos previos

Python

  • Python 3.6 o superior
  • 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 google-auth
    
  • Un proyecto de Google Cloud con la API de Google Chat habilitada y configurada Para conocer los pasos, consulta Compila una app de Google Chat.
  • La autorización configurada para la app de Chat. La enumeración de espacios admite los siguientes métodos de autenticación:

Node.js

  • Node.js y npm
  • Las bibliotecas cliente de Google más recientes para Node.js. Para instalarlos, ejecuta el siguiente comando en tu interfaz de línea de comandos:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • Un proyecto de Google Cloud con la API de Google Chat habilitada y configurada Para conocer los pasos, consulta Compila una app de Google Chat.
  • La autorización configurada para la app de Chat. La enumeración de espacios admite los siguientes métodos de autenticación:

Muestra una lista de espacios con autenticación de usuario

Para enumerar espacios en Google Chat, pasa lo siguiente en tu solicitud:

En el siguiente ejemplo, se enumeran los espacios con nombre y los chats en grupo (pero no los mensajes directos que se filtran) visibles para el usuario autenticado:

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.readonly"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then lists named spaces and group chats (but not direct messages)
        visible to the authenticated user.
        '''
    
        # Authenticate with Google Workspace
        # and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file(
                          'client_secrets.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds)
    
        # Use the service endpoint to call Chat API.
        result = chat.spaces().list(
    
              # An optional filter that returns named spaces or unnamed group chats,
              # but not direct messages (DMs).
              filter='spaceType = "SPACE" OR spaceType = "GROUP_CHAT"'
    
          ).execute()
    
        # Prints the returned list of spaces.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. En el directorio de trabajo, compila y ejecuta la muestra:

    python3 chat_space_list.py
    

Node.js

  1. En el directorio de trabajo, crea un archivo llamado list-spaces.js.
  2. Incluye el siguiente código en list-spaces.js:

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * List Chat spaces.
    * @return {!Promise<!Object>}
    */
    async function listSpaces() {
      const scopes = [
        'https://www.googleapis.com/auth/chat.spaces.readonly',
      ];
    
      const authClient =
          await authenticate({scopes, keyfilePath: 'client_secrets.json'});
    
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      return await chatClient.spaces.list({
        filter: 'spaceType = "SPACE" OR spaceType = "GROUP_CHAT"'
      });
    }
    
    listSpaces().then(console.log);
    
  3. En tu directorio de trabajo, ejecuta la muestra:

    node list-spaces.js
    

La API de Chat muestra un array paginado de espacios con nombre y chats en grupo.

Muestra una lista de espacios con autenticación de app

Para enumerar espacios en Google Chat, pasa lo siguiente en tu solicitud:

En el siguiente ejemplo, se enumeran los espacios con nombre y los chats en grupo (pero no los mensajes directos) visibles para la app de Chat:

Python

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

    from google.oauth2 import service_account
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = (
        service_account.Credentials.from_service_account_file('credentials.json')
        .with_scopes(SCOPES)
    )
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', credentials=CREDENTIALS)
    
    # Use the service endpoint to call Chat API.
    result = chat.spaces().list(
    
            # An optional filter that returns named spaces or unnamed
            # group chats, but not direct messages (DMs).
            filter='spaceType = "SPACE" OR spaceType = "GROUP_CHAT"'
    
        ).execute()
    
    print(result)
    
  3. En el directorio de trabajo, compila y ejecuta la muestra:

    python3 chat_space_list_app.py
    

Node.js

  1. En el directorio de trabajo, crea un archivo llamado app-list-spaces.js.
  2. Incluye el siguiente código en app-list-spaces.js:

    const chat = require('@googleapis/chat');
    
    /**
    * List Chat spaces.
    * @return {!Promise<!Object>}
    */
    async function listSpaces() {
      const scopes = [
        'https://www.googleapis.com/auth/chat.bot',
      ];
    
      const auth = new chat.auth.GoogleAuth({
        scopes,
        keyFilename: 'credentials.json',
      });
    
      const authClient = await auth.getClient();
    
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      return await chatClient.spaces.list({
        filter: 'spaceType = "SPACE" OR spaceType = "GROUP_CHAT"'
      });
    }
    
    listSpaces().then(console.log);
    
  3. En tu directorio de trabajo, ejecuta la muestra:

    node app-list-spaces.js
    

La API de Chat muestra un array de espacios paginado.

Personaliza la paginación o filtra la lista

Para mostrar una lista de espacios en Google Chat, pasa los siguientes parámetros de consulta opcionales para personalizar la paginación o filtrar los espacios de la lista:

  • pageSize: La cantidad máxima de espacios que se mostrarán. Es posible que el servicio devuelva menos que este valor. Si no se especifica, se muestran 100 espacios como máximo. El valor máximo es 1,000; los valores superiores a 1,000 se cambian automáticamente a 1,000.
  • pageToken: Es un token de página, recibido de una llamada anterior a los espacios de la lista. Proporciona este token para recuperar la página siguiente. Cuando se pagina, el valor del filtro debe coincidir con la llamada que proporcionó el token de la página. Pasar un valor diferente puede generar resultados inesperados.
  • filter: Es un filtro de consulta. Para obtener detalles de la consulta compatible, consulta el método spaces.list.