Questa guida spiega come utilizzare il metodo download
nella risorsa Media
dell'API Google Chat per scaricare un file multimediale (un file) da un messaggio in Google Chat.
Quando l'utente invia un messaggio alla tua app, Google Chat invia un evento di interazione MESSAGE
.
L'evento di interazione ricevuto dalla tua app include un corpo della richiesta, che è il payload JSON che rappresenta l'evento di interazione, inclusi gli eventuali allegati. I dati dell'allegato sono diversi a seconda che si tratti di contenuti caricati (un file locale) o di 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 (un file) allegato a un messaggio. La risorsa Attachment
include i metadati relativi all'allegato, ad esempio dove è stato salvato.
Prerequisiti
Python
- Python 3.6 o versioni successive
- Lo strumento di gestione dei pacchetti pip
Le librerie client di Google più recenti per Python. Per installarli o aggiornarli, esegui questo comando nell'interfaccia a riga di comando:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Un progetto Google Cloud in cui l'API Google Chat è abilitata e configurata. Per i passaggi da seguire, consulta Creare un'app Google Chat.
Autorizzazione configurata per l'app Chat. Il download dei contenuti multimediali supporta entrambi:
- Autenticazione utente con l'ambito di autorizzazione
chat.messages.readonly
ochat.messages
. - Autenticazione app con l'ambito di autorizzazione
chat.bot
.
- Autenticazione utente con l'ambito di autorizzazione
Scaricare da un file allegato
Per scaricare contenuti multimediali da un file allegato, trasmetti quanto segue nella richiesta:
- Con l'autenticazione utente, specifica l'ambito di autorizzazione
chat.messages.readonly
ochat.messages
. Con l'autenticazione app, puoi specificare l'ambito di autorizzazionechat.bot
. - Chiama i seguenti metodi di Google Chat:
- Per ricevere
attachmentDataRef
, chiama uno dei seguenti metodi:- Il metodo
get
nella risorsaAttachment
. - Il metodo
get
o il metodolist
nella risorsaMessage
.
- Il metodo
- Chiama il metodo
download
nella risorsaMedia
e indica il valoreattachmentDataRef.resourceName
precedentemente recuperato comemedia.download.resourceName
.
- Per ricevere
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( '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()
Nel codice, sostituisci
RESOURCE_NAME
conattachmentDataRef.resourceName
, che puoi recuperare in uno dei seguenti modi:- Il metodo
get
nella risorsaAttachment
. - Il metodo
get
nella risorsaMessage
. - Il metodo
list
nella risorsaMessage
.
- Il metodo
Nella directory di lavoro, crea ed esegui l'esempio:
python3 chat_media_and_attachment_download.py
In caso di esito positivo, questo metodo restituisce i contenuti del file sotto forma di byte.
Per scaricare i contenuti del file, scegli uno dei seguenti approcci:
Ti consigliamo di utilizzare la classe
MediaIoBaseDownload
in Python, che contiene i 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
download
e specifica la parte del file che vuoi scaricare utilizzando un intervallo di byte con l'intestazioneRange
, ad esempioRange: bytes=500-999
.
Argomenti correlati
- Se il messaggio è un file di Drive, utilizza l'API Drive per ottenere l'accesso al file.
- Caricare contenuti multimediali come file allegato
- Scaricare i contenuti multimediali come file allegato
- Recuperare i metadati relativi all'allegato di un messaggio