Ce guide explique comment utiliser la méthode download
sur la ressource Media
de
l'API Google Chat pour télécharger le contenu multimédia (un fichier) à partir d'un message dans Google Chat ;
Lorsque l'utilisateur envoie un message à votre application, Google Chat envoie une
Événement d'interaction MESSAGE
.
L'événement d'interaction reçu par votre application inclut un corps de requête, qui correspond au
Charge utile JSON représentant l'événement d'interaction, y compris les pièces jointes. La
les données de la pièce jointe varient selon que la pièce jointe est
contenu importé (fichier local) ou s'il s'agit 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. Attachment
ressource inclut les métadonnées sur le rattachement, telles que
où elles sont enregistrées.
Prérequis
Python
- Une entreprise Un compte Google Workspace ayant accès à Google Chat :
- Configurez votre environnement:
<ph type="x-smartling-placeholder">
- </ph>
- Créez un projet Google Cloud.
- Configurer l'écran de consentement OAuth
- activer et configurer l'API Google Chat à l'aide d'un nom ; et la description de votre application Chat.
- Installez la Python Bibliothèque cliente des API Google.
- Créez des identifiants d'accès en fonction de la manière dont vous souhaitez vous authentifier dans votre API Google Chat.
requête:
<ph type="x-smartling-placeholder">
- </ph>
- Pour vous authentifier en tant
qu'utilisateur de Chat,
créer un ID client OAuth
identifiants et enregistrez-les dans un fichier JSON nommé
client_secrets.json
dans votre répertoire local. - Pour vous authentifier en tant qu'application Chat,
créer un compte de service
identifiants et enregistrez-les dans un fichier JSON nommé
credentials.json
- Pour vous authentifier en tant
qu'utilisateur de Chat,
créer un ID client OAuth
identifiants et enregistrez-les dans un fichier JSON nommé
- <ph type="x-smartling-placeholder"></ph> Choisissez un champ d'application d'autorisation selon que vous souhaitez vous authentifier en tant qu'utilisateur Application Chat
Télécharger à partir d'une pièce jointe
Pour télécharger un contenu multimédia à partir d'une pièce jointe, transmettez ce qui suit dans votre requête:
- Avec l'authentification utilisateur, spécifiez
Champ d'application de l'autorisation
chat.messages.readonly
ouchat.messages
. Avec authentification des applications, spécifiez le champ d'application de l'autorisationchat.bot
. - Appelez les méthodes Google Chat suivantes:
<ph type="x-smartling-placeholder">
- </ph>
- Obtenez
attachmentDataRef
en appelant l'une des méthodes suivantes: <ph type="x-smartling-placeholder">- </ph>
- La méthode
get
le RessourceAttachment
. - La méthode
get
ou Méthodelist
le RessourceMessage
.
- La méthode
- Appelez la méthode
download
. leMedia
ressource, puis spécifiez la valeurattachmentDataRef.resourceName
précédemment récupérée 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 différentes manières:- 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 à télécharger ; le fichier en sections et 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 à télécharger à l'aide d'un octet plage avec l'en-têteRange
, par exemple:Range: bytes=500-999
.
Articles associés
- Si le message est un fichier Drive, utilisez le 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