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. En la lista de espacios, se muestra una lista de espacios paginada y filtrable.

El recurso Space representa un lugar en el que 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.

En una lista de espacios con autenticación de app, se muestran los espacios a los que tiene acceso la app de Chat. En la lista de espacios con Autenticación del 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 la interfaz de línea de comandos:

    pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
    
  • Una app de Chat publicada. Para crear y publicar una app de Chat, consulta Cómo compilar una app de Google Chat.

  • Autorización configurada para la app de Chat. La lista de espacios admite los siguientes métodos de autenticación:

Muestra una lista de espacios con la 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 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:

    import os.path
    
    from google.auth.transport.requests import Request
    from google.oauth2.credentials import Credentials
    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.errors import HttpError
    
    # 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
    

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

Muestra una lista de espacios con la 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 httplib2 import Http
    from oauth2client.service_account import ServiceAccountCredentials
    from apiclient.discovery import build
    
    # Specify required scopes.
    SCOPES = ['https://www.googleapis.com/auth/chat.bot']
    
    # Specify service account details.
    CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name(
        'credentials.json', SCOPES)
    
    # Build the URI and authenticate with the service account.
    chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http()))
    
    # 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
    

La API de Chat muestra un array de espacios paginados.

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 a fin de personalizar la paginación o filtrar los espacios enumerados:

  • pageSize: La cantidad máxima de espacios que se mostrarán. Es posible que el servicio muestre menos que este valor. Si no se especifica, se muestran 100 espacios como máximo. El valor máximo es de 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 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. Requiere autenticación de usuarios. Para obtener detalles de consultas compatibles, consulta el método spaces.list.