Subir contenido multimedia como archivo adjunto

En esta guía, se explica cómo usar el método upload en el recurso Media de la API de Google Chat para subir contenido multimedia (un archivo) a Google Chat y, luego, adjuntarlo un mensaje.

Cuando el usuario envía un mensaje a tu app, Google Chat envía Evento de interacción MESSAGE. El evento de interacción que recibe tu app incluye el cuerpo de la solicitud, que es el Carga útil de JSON que representa el evento de interacción, incluidos los adjuntos. El datos en el adjunto varían según si el adjunto está contenido subido (un archivo local) o es un archivo almacenado en Drive. El Recurso Media representa un archivo subido a Google Chat, como imágenes, videos y documentos. El Recurso Attachment representa una instancia de contenido multimedia (un archivo) adjunto a un mensaje. El Attachment incluye los metadatos sobre el adjunto, como donde se guardan.

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 instalarlas o actualizarlas, Ejecuta el siguiente comando en tu interfaz de línea de comandos:
    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    

Subir como archivo adjunto

Para subir contenido multimedia y adjuntarlo a un mensaje, pasa lo siguiente en tu solicitud::

  • Especifica el permiso de autorización chat.messages.create o chat.messages.
  • Llama a los siguientes métodos de Google Chat:
    1. Para subir el archivo, llama al Método upload en el recurso Media.
      • Configura parent como el nombre del espacio en el que se aloja el archivo.
      • En body (el cuerpo de la solicitud), configura filename como el nombre del archivo que se subió. de un archivo adjunto.
      • Configura media_body como una instancia del archivo que se subirá.
    2. Para crear un mensaje con el archivo cargado adjunto, llama al Método create en la Recurso Messages.

En el siguiente ejemplo, se sube un archivo de imagen PNG y se adjunta a un mensaje.

Python

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

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    from googleapiclient.http import MediaFileUpload
    
    # 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.messages.create"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then uploads a file as media, creates a message, and
        attaches the file to the message.
        '''
    
        # 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.
        service = build('chat', 'v1', credentials=creds)
    
        # Upload a file to Google Chat.
        media = MediaFileUpload('test_image.png', mimetype='image/png')
    
        # Create a message and attach the uploaded file to it.
        attachment_uploaded = service.media().upload(
    
            # The space to upload the attachment in.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            parent='spaces/SPACE',
    
            # The filename of the attachment, including the file extension.
            body={'filename': 'test_image.png'},
    
            # Media resource of the attachment.
            media_body=media
    
        ).execute()
    
        print(attachment_uploaded)
    
        # Create a Chat message with attachment.
        result = service.spaces().messages().create(
    
            # The space to create the message in.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            #
            # Must match the space name that the attachment is uploaded to.
            parent='spaces/SPACE',
    
            # The message to create.
            body={
                'text': 'Hello, world!',
                'attachment': [attachment_uploaded]
            }
    
        ).execute()
    
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. En el código, reemplaza SPACE por el nombre del espacio que sube el archivo adjunto, que puedes obtener de la Método spaces.list 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_media_and_attachment_upload.py
    

La API de Chat muestra un cuerpo de respuesta que contiene attachmentDataRef con detalles sobre el archivo subido

Límites y consideraciones

Mientras te preparas para subir archivos y adjuntarlos a los mensajes, toma nota de estas y consideraciones clave: