Ce guide explique comment utiliser la méthode download
sur la ressource Media
de l'API Google Chat pour télécharger du 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 correspond à 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 diffèrent selon que la pièce jointe est du contenu importé (fichier local) ou un fichier stocké dans 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) associé à un message. La ressource Attachment
inclut les métadonnées sur le rattachement, comme l'emplacement d'enregistrement.
Conditions préalables
Python
- Python 3.6 ou version ultérieure
- L'outil de gestion de packages pip
Les dernières bibliothèques clientes Google pour Python. Pour les installer ou les mettre à jour, exécutez la commande suivante dans votre interface de ligne de commande:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Un projet Google Cloud dans lequel l'API Google Chat est activée et configurée Pour connaître la procédure à suivre, consultez Créer une application Google Chat.
Autorisation configurée pour l'application Chat. Le téléchargement de fichiers multimédias est compatible avec:
- L'authentification des utilisateurs avec le champ d'application d'autorisation
chat.messages.readonly
ouchat.messages
. - L'authentification des applications avec le champ d'application d'autorisation
chat.bot
.
- L'authentification des utilisateurs avec le champ d'application d'autorisation
Télécharger à partir d'une pièce jointe
Pour télécharger du contenu multimédia à partir d'une pièce jointe, transmettez les éléments suivants dans votre requête:
- Avec l'authentification de l'utilisateur, spécifiez le champ d'application d'autorisation
chat.messages.readonly
ouchat.messages
. Avec l'authentification des applications, spécifiez le champ d'application de l'autorisationchat.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
et spécifiez l'élémentattachmentDataRef.resourceName
précédemment récupéré en tant quemedia.download.resourceName
.
- Obtenez
L'exemple suivant permet de télécharger un fichier joint à un message:
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_media_and_attachment_download.py
. Ajoutez 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:- La méthode
get
sur la ressourceAttachment
. - La méthode
get
sur la ressourceMessage
. - La méthode
list
sur la ressourceMessage
.
- La méthode
Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_media_and_attachment_download.py
Lorsque cette méthode fonctionne, elle renvoie le contenu du fichier en 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 en 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 en utilisant 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 accéder au fichier.
- Importer un fichier multimédia en pièce jointe
- Télécharger du contenu multimédia en pièce jointe
- Obtenir les métadonnées d'une pièce jointe