En esta guía, se explica cómo usar el método download
en el recurso Media
de
la API de Google Chat para descargar contenido multimedia (un archivo) de un mensaje en Google Chat.
Cuando el usuario envía un mensaje a tu app, Google Chat envía un
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
- Una empresa o empresa de Google Workspace con acceso a Google Chat.
- 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. y la descripción de tu app de Chat.
- Instala el Python Biblioteca cliente de las APIs de Google
- Crea credenciales de acceso según cómo quieras autenticarte en tu API de Google Chat
solicitud:
- Sigue estos pasos para autenticarte como usuario de Chat:
crear un ID de cliente de OAuth
credenciales y las guarda como un archivo JSON llamado
client_secrets.json
a tu directorio local. - Para autenticarte como la app de Chat, sigue estos pasos:
crear cuenta de servicio
credenciales y las guarda como un archivo JSON llamado
credentials.json
- Sigue estos pasos para autenticarte como usuario de Chat:
crear un ID de cliente de OAuth
credenciales y las guarda como un archivo JSON llamado
- Elige un alcance de autorización en función de si deseas autenticarte como usuario o App de Chat
Descargar desde un archivo adjunto
Para descargar contenido multimedia desde un archivo adjunto, pasa lo siguiente en tu solicitud:
- Con la autenticación de usuarios, especifica la
Permiso de autorización
chat.messages.readonly
ochat.messages
. Con autenticación de apps, especifica el permiso de autorizaciónchat.bot
. - Llama a los siguientes métodos de Google Chat:
- Para obtener
attachmentDataRef
, llama a uno de los siguientes métodos:- Método
get
en la RecursoAttachment
. - Método
get
o el Métodolist
en la RecursoMessage
.
- Método
- Realiza una llamada al método
download
. en la recursoMedia
y especifica elattachmentDataRef.resourceName
previamente recuperado comomedia.download.resourceName
- Para obtener
En el siguiente ejemplo, se descarga un archivo adjunto a un mensaje:
Python
- En tu directorio de trabajo, crea un archivo llamado
chat_media_and_attachment_download.py
Incluye el siguiente código en
chat_media_and_attachment_download.py
:import io from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaIoBaseDownload # 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"] def main(): ''' Authenticates with Chat API via user credentials, then downloads a file attached to a 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. chat = build('chat', 'v1', credentials=creds) # Download media resource. request = chat.media().download_media( resourceName=RESOURCE_NAME, ) file = io.BytesIO() downloader = MediaIoBaseDownload(file, request) done = False while done is False: status, done = downloader.next_chunk() if status.total_size: print(f'Total size: {status.total_size}') print(f'Download {int(status.progress() * 100)}') if __name__ == '__main__': main()
En el código, reemplaza
RESOURCE_NAME
porattachmentDataRef.resourceName
, que puedes recuperar de la siguiente manera:- Método
get
en el recursoAttachment
. - Método
get
en el recursoMessage
. - Método
list
en el recursoMessage
.
- Método
En tu directorio de trabajo, compila y ejecuta la muestra:
python3 chat_media_and_attachment_download.py
Si se aplica correctamente, este método muestra el contenido del archivo como bytes.
Para descargar el contenido del archivo, elige uno de los siguientes enfoques:
Te recomendamos que utilices Clase
MediaIoBaseDownload
en Python, que contiene métodos para descargar el archivo en secciones y guardar el contenido en un flujo de salida.Si debes realizar la solicitud HTTP de forma manual, llama al método
download
y especificar la parte del archivo que quieres descargar con un byte rango con el encabezadoRange
, por ejemplo:Range: bytes=500-999
Temas relacionados
- Si el mensaje es un archivo de Drive, usa el API de Drive para obtener acceso al archivo.
- Cómo subir contenido multimedia como archivo adjunto
- Cómo descargar contenido multimedia como un archivo adjunto
- Cómo obtener metadatos sobre el archivo adjunto de un mensaje