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 a un mensaje.
Cuando el usuario envía un mensaje a tu app, Google Chat envía un
MESSAGE evento de interacción.
El evento de interacción que recibe tu app incluye un cuerpo de la solicitud, que es la carga útil de JSON que representa el evento de interacción, incluidos los archivos adjuntos. Los datos del archivo adjunto varían según si el archivo adjunto es contenido subido (un archivo local) o un archivo almacenado en Drive. El
Media recurso
representa un archivo subido a Google Chat, como imágenes, videos y documentos.
El recurso
Attachment
representa una instancia de contenido multimedia (un archivo) adjunta a un mensaje. El recurso Attachment incluye los metadatos sobre el archivo adjunto, como dónde se guarda.
Requisitos previos
Python
- Configura tu entorno:
- Crea un proyecto de Google Cloud.
- Configura la pantalla de consentimiento de OAuth.
- Habilita y configura la API de Google Chat con un nombre, ícono y descripción para tu app de Chat.
- Instala la biblioteca cliente de la API de Google para Python .
-
Crea credenciales de ID de cliente de OAuth para una aplicación de escritorio. Para ejecutar la muestra de esta
guía, guarda las credenciales como un archivo JSON llamado
credentials.jsonen tu directorio local.
- Elige un alcance de autorización que admita la autenticación del usuario.
Cómo subir un archivo adjunto
Para subir contenido multimedia y adjuntarlo a un mensaje, pasa lo siguiente en tu solicitud:
- Especifica el alcance de autorización
chat.messages.createochat.messages. - Llama a los siguientes métodos de Google Chat:
- Para subir el archivo, llama al
uploadmétodo en elMediarecurso.- Establece
parenten el nombre del espacio que aloja el archivo. - En
body(el cuerpo de la solicitud), establecefilenameen el nombre del archivo adjunto subido. - Establece
media_bodycomo una instancia del archivo que se subirá.
- Establece
- Para crear un mensaje con el archivo subido adjunto, llama al
createmétodo en elMessagesrecurso.- Establece
attachmentcomo la respuesta de la llamada aluploadmétodo en elMediarecurso. El campoattachmentacepta una lista.
- Establece
- Para subir el archivo, llama al
En el siguiente ejemplo, se sube un archivo de imagen PNG y se adjunta a un mensaje.
Python
- En tu directorio de trabajo, crea un archivo llamado
chat_media_and_attachment_upload.py. 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( 'credentials.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()En el código, reemplaza
SPACEpor el nombre del espacio en el que se subirá el archivo adjunto, que puedes obtener delspaces.listmétodo en la API de Chat o de la URL de un espacio.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
Cuando te prepares para subir archivos y adjuntarlos a mensajes, ten en cuenta estos límites y consideraciones:
- Puedes subir archivos de hasta 200 MB.
- Algunos tipos de archivos no son compatibles y no se pueden subir. Para obtener más detalles, consulta Tipos de archivo bloqueados en Google Chat.
- Tu mensaje debe omitir los widgets de accesorios.
Temas relacionados
- Descarga contenido multimedia como un archivo adjunto
- Obtén metadatos sobre un archivo adjunto de mensaje