Ce guide explique comment utiliser la méthode download sur la ressource Media de l'API Google Chat pour télécharger des contenus multimédias (un fichier) à partir d'un message dans Google Chat.
Lorsque l'utilisateur envoie un message à votre application, Google Chat distribue un
MESSAGE événement d'interaction.
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 varient selon qu'il s'agit d'un contenu importé (un fichier local) ou d'un fichier stocké sur Drive. La ressource
Media `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) jointe à un message.
Elle inclut les métadonnées de la pièce jointe, par exemple l'emplacement où elle est enregistrée.Attachment
Prérequis
Python
- Un compte Google Workspace Business ou Enterprise avec accès à Google Chat.
- Configurez votre environnement :
- Créez un projet Google Cloud.
- Configurez l'écran d'autorisation OAuth.
- Activez et configurez l'API Google Chat avec un nom, une icône et une description pour votre application Chat.
- Installez la bibliothèque cliente des API Google pour Python .
- Créez des identifiants d'accès en fonction de la manière dont vous souhaitez vous authentifier dans votre requête d'API Google Chat
:
- Pour vous authentifier en tant qu'utilisateur Chat,
créez des identifiants d'ID client OAuth et enregistrez-les dans un fichier JSON nommé
credentials.jsondans votre répertoire local. - Pour vous authentifier en tant qu'application Chat,
créez des identifiants de compte de service et enregistrez-les dans un fichier JSON nommé
credentials.json.
- Pour vous authentifier en tant qu'utilisateur Chat,
créez des identifiants d'ID client OAuth et enregistrez-les dans un fichier JSON nommé
- Choisissez un champ d'application d'autorisation selon que vous souhaitez vous authentifier 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 de l'utilisateur, spécifiez le
chat.messages.readonlyouchat.messageschamp d'application d'autorisation. Avec l'authentification de l'application, spécifiez le champ d'application d'autorisationchat.bot. - Appelez les méthodes Google Chat suivantes :
- Obtenez
attachmentDataRefen appelant l'une des méthodes suivantes :- La
getméthode sur laAttachmentressource. - La
getméthode ou lalistméthode sur laMessageressource.
- La
- Appelez la
downloadméthode sur laMediaressource, et spécifiez leattachmentDataRef.resourceNamerécupéré précédemment commemedia.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( 'credentials.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_NAMEparattachmentDataRef.resourceName, que vous pouvez récupérer de l'une des manières suivantes :- La
getméthode sur laAttachmentressource. - La
getméthode sur laMessageressource. - La méthode
listsur la ressourceMessage.
- La
Dans votre répertoire de travail, créez et exécutez l'exemple :
python3 chat_media_and_attachment_download.py
Si la requête aboutit, 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
MediaIoBaseDownloaden 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
downloadet 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 des métadonnées sur une pièce jointe d'un message