Questa guida spiega come utilizzare il metodo download sulla risorsa Media dell'API Google Chat per scaricare contenuti multimediali (un file) da un messaggio in Google Chat.
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
nell'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 delle API di Google per Python.
 - Crea le credenziali di accesso in base a come vuoi autenticarti nella richiesta dell'API Google Chat:
        
- Per l'autenticazione come utente di Chat,
            crea le credenziali dell'ID client OAuth e salvale come file JSON denominato
            
credentials.jsonnella directory locale. - Per l'autenticazione come app Chat,
            crea le credenziali
            dell'account di servizio e salvale come file JSON denominato
            
credentials.json. 
 - Per l'autenticazione come utente di Chat,
            crea le credenziali dell'ID client OAuth e salvale come file JSON denominato
            
 
 - Scegli un ambito di autorizzazione in base al fatto che tu voglia eseguire l'autenticazione come utente o come app Chat.
 
Scaricare da un file allegato
Per scaricare contenuti multimediali da un allegato, passa quanto segue nella tua richiesta:
- Con l'autenticazione utente, specifica l'ambito di autorizzazione
chat.messages.readonlyochat.messages. Con l'autenticazione delle app, specifica l'ambito di autorizzazionechat.bot. - Chiama i seguenti metodi di Google Chat:
- Ottieni 
attachmentDataRefchiamando uno dei seguenti metodi:- Il metodo 
getsulla risorsaAttachment. - Il metodo 
geto il metodolistsulla risorsaMessage. 
 - Il metodo 
 - Chiama il metodo 
downloadsulla risorsaMediae specificaattachmentDataRef.resourceNamerecuperato in precedenza comemedia.download.resourceName. 
 - Ottieni 
 
L'esempio seguente scarica un file allegato a un messaggio:
Python
- Nella directory di lavoro, crea un file denominato 
chat_media_and_attachment_download.py. Includi il seguente codice in
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()Nel codice, sostituisci
RESOURCE_NAMEconattachmentDataRef.resourceName, che puoi recuperare in uno dei seguenti modi:- Il metodo 
getsulla risorsaAttachment. - Il metodo 
getsulla risorsaMessage. - Il metodo 
listsulla risorsaMessage. 
- Il metodo 
 Nella directory di lavoro, compila ed esegui l'esempio:
python3 chat_media_and_attachment_download.py
In caso di esito positivo, questo metodo restituisce i contenuti del file come byte.
Per scaricare i contenuti del file, scegli uno dei seguenti approcci:
Ti consigliamo di utilizzare la classe
MediaIoBaseDownloadin Python, che contiene metodi per scaricare il file in sezioni e salvare i contenuti in un flusso di output.Se devi effettuare la richiesta HTTP manualmente, chiama il metodo
downloade specifica la parte del file che vuoi scaricare utilizzando un intervallo di byte con l'intestazioneRange, ad esempio:Range: bytes=500-999.
Argomenti correlati
- Se il messaggio è un file di Drive, utilizza l'API Drive per accedere al file.
 - Caricare contenuti multimediali come allegato
 - Scaricare i contenuti multimediali come allegato di un file
 - Ottenere metadati su un allegato di un messaggio