Questa guida spiega come utilizzare il metodo upload
sulla risorsa Media
dell'API Google Chat per caricare contenuti multimediali (un file) su Google Chat e poi allegarli a un messaggio.
Quando l'utente invia un messaggio alla tua app, Google Chat invia un
MESSAGE
evento di interazione.
L'evento di interazione ricevuto dalla tua app include un corpo della richiesta, ovvero il
payload JSON che rappresenta l'evento di interazione, inclusi eventuali allegati. I dati
dell'allegato variano a seconda che l'allegato sia
un contenuto caricato (un file locale) o un file archiviato su Drive. La
risorsa Media
rappresenta un file caricato su Google Chat, come immagini, video e documenti.
La risorsa
Attachment
rappresenta un'istanza di contenuti multimediali, ovvero un file, allegato a un messaggio. La risorsa Attachment
include i metadati relativi all'allegato, ad esempio
la posizione in cui è salvato.
Prerequisiti
Python
- Un account Google Workspace Business o Enterprise con accesso a Google Chat.
- Configura l'ambiente:
- Crea un progetto Google Cloud.
- Configura la schermata per il consenso OAuth.
- Attiva e configura l'API Google Chat con un nome, un'icona e una descrizione per la tua app di chat.
- Installa la libreria client API di Google per Python.
-
Crea le credenziali dell'ID client OAuth per un'applicazione desktop. Per eseguire l'esempio in questa
guida, salva le credenziali come file JSON denominato
credentials.json
nella directory locale.
- Scegli un ambito di autorizzazione che supporti l'autenticazione utente.
Caricare come allegato di un file
Per caricare contenuti multimediali e allegarli a un messaggio, passa quanto segue nella tua richiesta:
- Specifica l'ambito di autorizzazione
chat.messages.create
ochat.messages
. - Chiama i seguenti metodi di Google Chat:
- Per caricare il file, chiama il
metodo
upload
sulla risorsaMedia
.- Imposta
parent
sul nome dello spazio che ospita il file. - In
body
(il corpo della richiesta), impostafilename
sul nome dell'allegato del file caricato. - Imposta
media_body
come istanza del file da caricare.
- Imposta
- Per creare un messaggio con il file caricato allegato, chiama il
metodo
create
sulla risorsaMessages
.- Imposta
attachment
come risposta alla chiamata del metodoupload
sulla risorsaMedia
. Il campoattachment
accetta un elenco.
- Imposta
- Per caricare il file, chiama il
metodo
Il seguente esempio carica un file immagine PNG e lo allega a un messaggio.
Python
- Nella directory di lavoro, crea un file denominato
chat_media_and_attachment_upload.py
. Includi il seguente codice in
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( 'credentials.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()
Nel codice, sostituisci
SPACE
con il nome dello spazio in cui caricare l'allegato, che puoi ottenere dal metodospaces.list
nell'API Chat o dall'URL di uno spazio.Nella directory di lavoro, compila ed esegui l'esempio:
python3 chat_media_and_attachment_upload.py
L'API Chat restituisce un corpo della risposta contenente
attachmentDataRef
con i dettagli sul file caricato.
Limiti e considerazioni
Quando ti prepari a caricare file e allegarli ai messaggi, tieni presente questi limiti e considerazioni:
- Puoi caricare file con dimensioni massime di 200 MB.
- Alcuni tipi di file non sono supportati e non possono essere caricati. Per maggiori dettagli, vedi Tipi di file bloccati in Google Chat.
- Il messaggio deve omettere i widget degli accessori.
Argomenti correlati
- Scaricare i contenuti multimediali come allegato di un file
- Ottenere metadati su un allegato di un messaggio