Cómo fijar o no fijar mensajes en espacios de Google Chat

Con el recurso MessagePin en la API de Chat, tu app puede fijar y dejar de fijar mensajes, y obtener una lista de todos los mensajes fijados en los espacios de Google Chat. Los mensajes fijados son visibles en la interfaz de Chat para todos los miembros del espacio. Esta API ayuda a tu app a administrar los mensajes fijados en nombre de un usuario.

Para obtener información sobre cómo los usuarios fijan mensajes en espacios, consulta Cómo fijar mensajes, archivos y vínculos en espacios y mensajes.

Requisitos previos

Node.js

Consideraciones

  • Solo puedes fijar mensajes que ya existen en un espacio. No puedes crear un mensaje nuevo y fijarlo en la misma solicitud.
  • No puedes fijar mensajes que solo sean visibles para ti. Por ejemplo, no puedes fijar mensajes privados que recibes de una app.
  • Cada espacio de Chat puede tener hasta 100 mensajes fijados. Si tu app intenta fijar un mensaje 101, la API muestra un error.

Fija un mensaje

Para fijar un mensaje con la autenticación de usuarios, pasa lo siguiente en tu solicitud:

  • Especifica el alcance de autorización chat.spaces.pins o chat.spaces.
  • Llama a messagePins.create.
  • Especifica el parent (el nombre del espacio) y proporciona un body con el nombre del recurso message del mensaje original.

En el siguiente ejemplo, se fija un mensaje en un espacio:

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.pins"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then pins a message in a space.
        '''
    
        # Authenticate with Google Workspace and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        service = build('chat', 'v1', credentials=creds)
    
        # Pin a message.
        result = service.spaces().messagePins().create(
            # The space to pin the message in.
            #
            # Replace SPACE with a space ID or name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            parent='spaces/SPACE',
    
            # The message to pin.
            body={
                'message': 'spaces/SPACE/messages/MESSAGE'
            }
        ).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: Es el ID del name del espacio.
    • MESSAGE: Es el ID del name del mensaje.
  4. En tu directorio de trabajo, compila y ejecuta la muestra:

    python3 chat_pin_message.py

Deja de fijar mensaje

Para dejar de fijar un mensaje con la autenticación de usuarios, pasa lo siguiente en tu solicitud:

  • Especifica el alcance de autorización chat.spaces.pins o chat.spaces.
  • Llama a messagePins.delete.
  • Establece name en el nombre del recurso MessagePin que se borrará.

Sigue estos pasos para dejar de fijar un mensaje:

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.pins"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then unpins a message from a space.
        '''
    
        # Authenticate with Google Workspace and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        service = build('chat', 'v1', credentials=creds)
    
        # Unpin a message.
        result = service.spaces().messagePins().delete(
            # The resource name of the message pin to delete.
            #
            # Replace SPACE with a space ID or name, and MESSAGE with the message ID.
            name='spaces/SPACE/messagePins/MESSAGE'
        ).execute()
    
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. En el código, reemplaza lo siguiente:

    • SPACE: Es el ID del name del espacio.
    • MESSAGE: Es el ID del name del mensaje.
  4. En tu directorio de trabajo, compila y ejecuta la muestra:

    python3 chat_unpin_message.py

Obtén una lista de mensajes fijados

Para obtener una lista de mensajes fijados en los espacios a los que tienes acceso, usa la autenticación de usuarios y pasa lo siguiente en tu solicitud:

  • Especifica uno de los alcances de lectura: chat.spaces.pins.readonly, chat.spaces.readonly, chat.spaces.pins o chat.spaces.
  • Llama a messagePins.list.
  • Especifica parent como el nombre del espacio desde el que se recuperarán los mensajes fijados.

Sigue estos pasos para enumerar los mensajes fijados:

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    SCOPES = ["https://www.googleapis.com/auth/chat.spaces.pins.readonly"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then lists pinned messages in a space.
        '''
    
        # Authenticate with Google Workspace and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file('credentials.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        service = build('chat', 'v1', credentials=creds)
    
        # List pinned messages.
        result = service.spaces().messagePins().list(
            # The space to list pinned messages from.
            #
            # Replace SPACE with a space ID or name.
            parent='spaces/SPACE'
        ).execute()
    
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. En el código, reemplaza SPACE por el ID del espacio del name.

  4. En tu directorio de trabajo, compila y ejecuta la muestra:

    python3 chat_list_pinned_messages.py