Ce guide explique comment utiliser la méthode upload
sur la ressource Media
de l'API Google Chat pour importer du contenu multimédia (un fichier) dans Google Chat, puis l'associer à un message.
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'ID client OAuth pour une application de bureau. Pour exécuter l'exemple de ce guide, enregistrez les identifiants sous forme de fichier JSON nommé
client_secrets.json
dans votre répertoire local.
- Choisissez une portée d'autorisation compatible avec l'authentification des utilisateurs.
Importer en tant que pièce jointe
Pour importer un élément multimédia et l'associer à un message, transmettez les éléments suivants dans votre requête :
- Spécifiez le champ d'application d'autorisation
chat.messages.create
ouchat.messages
. - Appelez les méthodes Google Chat suivantes :
- Pour importer le fichier, appelez la méthode
upload
sur la ressourceMedia
.- Définissez
parent
sur le nom de l'espace qui héberge le fichier. - Dans
body
(le corps de la requête), définissezfilename
sur le nom de la pièce jointe de fichier importée. - Définissez
media_body
comme instance du fichier à importer.
- Définissez
- Pour créer un message avec le fichier importé en pièce jointe, appelez la méthode
create
sur la ressourceMessages
.- Définissez
attachment
comme réponse à l'appel de la méthodeupload
sur la ressourceMedia
. Le champattachment
accepte une liste.
- Définissez
- Pour importer le fichier, appelez la méthode
L'exemple suivant importe un fichier image PNG et l'associe à un message.
Python
- Dans votre répertoire de travail, créez un fichier nommé
chat_media_and_attachment_upload.py
. Incluez le code suivant dans
chat_media_and_attachment_upload.py
:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.http import MediaFileUpload # 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.create"] def main(): ''' Authenticates with Chat API via user credentials, then uploads a file as media, creates a message, and attaches the file to the 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. service = build('chat', 'v1', credentials=creds) # Upload a file to Google Chat. media = MediaFileUpload('test_image.png', mimetype='image/png') # Create a message and attach the uploaded file to it. attachment_uploaded = service.media().upload( # The space to upload the attachment in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The filename of the attachment, including the file extension. body={'filename': 'test_image.png'}, # Media resource of the attachment. media_body=media ).execute() print(attachment_uploaded) # Create a Chat message with attachment. result = service.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Must match the space name that the attachment is uploaded to. parent='spaces/SPACE', # The message to create. body={ 'text': 'Hello, world!', 'attachment': [attachment_uploaded] } ).execute() print(result) if __name__ == '__main__': main()
Dans le code, remplacez
SPACE
par le nom de l'espace dans lequel vous souhaitez importer la pièce jointe. Vous pouvez l'obtenir à partir de la méthodespaces.list
dans l'API Chat ou à partir de l'URL d'un espace.Dans votre répertoire de travail, créez et exécutez l'exemple:
python3 chat_media_and_attachment_upload.py
L'API Chat renvoie un corps de réponse contenant attachmentDataRef
avec des informations sur le fichier importé.
Limites et considérations
Lorsque vous vous préparez à importer des fichiers et à les joindre à des messages, tenez compte des limites et des considérations suivantes:
- Vous pouvez importer des fichiers de 200 Mo maximum.
- Certains types de fichiers ne sont pas acceptés et ne peuvent pas être importés. Pour en savoir plus, consultez Types de fichiers bloqués dans Google Chat.
- Votre message ne doit pas inclure de widgets d'accessoires.
Articles associés
- 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