Ce guide explique comment utiliser la méthode download
sur la ressource Media
de l'API Google Chat pour télécharger un contenu multimédia (un fichier) à partir d'un message dans Google Chat.
Lorsque l'utilisateur envoie un message à votre application, Google Chat envoie un événement d'interaction MESSAGE
.
L'événement d'interaction reçu par votre application inclut un corps de requête, qui est la charge utile JSON représentant l'événement d'interaction, y compris les pièces jointes. Les données de la pièce jointe sont différentes selon qu'il s'agit d'un contenu importé (fichier local) ou d'un fichier stocké sur Drive. La ressource Media
représente un fichier importé dans Google Chat, comme des images, des vidéos et des documents.
La ressource Attachment
représente une instance de contenu multimédia (un fichier) joint à un message. La ressource Attachment
inclut les métadonnées sur la pièce jointe, telles que l'emplacement où elle est enregistrée.
Prérequis
Python
- Compte Google Workspace Business ou Enterprise ayant accès à Google Chat.
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurez l'écran de consentement OAuth.
- Activez et configurez l'API Google Chat en attribuant un nom, une icône et une description à votre application Chat.
- Installez la bibliothèque cliente des API Google pour Python.
- Créez des identifiants d'accès en fonction de la méthode d'authentification que vous souhaitez utiliser dans votre requête API Google Chat :
- Pour vous authentifier en tant qu'utilisateur Chat, créez des identifiants d'ID client OAuth et enregistrez-les en tant que fichier JSON nommé
client_secrets.json
dans votre répertoire local. - Pour vous authentifier en tant qu'application Chat, créez des identifiants de compte de service et enregistrez-les en tant que fichier JSON nommé
credentials.json
.
- Pour vous authentifier en tant qu'utilisateur Chat, créez des identifiants d'ID client OAuth et enregistrez-les en tant que fichier JSON nommé
- Choisissez un champ d'application de l'autorisation en fonction de votre choix d'authentification en tant qu'utilisateur ou en tant qu'application Chat.
Télécharger à partir d'une pièce jointe
Pour télécharger des contenus multimédias à partir d'une pièce jointe, transmettez les éléments suivants dans votre requête:
- Avec l'authentification des utilisateurs, spécifiez le champ d'application d'autorisation
chat.messages.readonly
ouchat.messages
. Avec l'authentification de l'application, spécifiez le champ d'applicationchat.bot
. - Appelez les méthodes Google Chat suivantes :
- Obtenez
attachmentDataRef
en appelant l'une des méthodes suivantes :- La méthode
get
sur la ressourceAttachment
. - La méthode
get
ou la méthodelist
sur la ressourceMessage
.
- La méthode
- Appelez la méthode
download
sur la ressourceMedia
, puis spécifiez leattachmentDataRef.resourceName
précédemment récupéré en tant quemedia.download.resourceName
.
- Obtenez
L'exemple suivant télécharge un fichier joint à un message:
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_media_and_attachment_download.py
. Incluez le code suivant dans
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()
Dans le code, remplacez
RESOURCE_NAME
parattachmentDataRef.resourceName
, que vous pouvez récupérer de l'une des manières suivantes:Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_media_and_attachment_download.py
Si l'opération réussit, cette méthode renvoie le contenu du fichier sous forme d'octets.
Pour télécharger le contenu du fichier, choisissez l'une des approches suivantes:
Nous vous recommandons d'utiliser la classe
MediaIoBaseDownload
en Python, qui contient des méthodes permettant de télécharger le fichier par sections et d'enregistrer le contenu dans un flux de sortie.Si vous devez effectuer la requête HTTP manuellement, appelez la méthode
download
et spécifiez la partie du fichier que vous souhaitez télécharger à l'aide d'une plage d'octets avec l'en-têteRange
(par exemple,Range: bytes=500-999
).
Articles associés
- Si le message est un fichier Drive, utilisez l'API Drive pour y accéder.
- Importer des contenus multimédias en tant que pièce jointe
- Télécharger des contenus multimédias en tant que pièce jointe
- Obtenir les métadonnées d'une pièce jointe de message