Questa guida spiega come utilizzare il metodo download
nella risorsa Media
di
l'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
Evento di interazione MESSAGE
.
L'evento di interazione ricevuto dalla tua app include un corpo della richiesta, ovvero
Payload JSON che rappresenta l'evento di interazione, inclusi eventuali allegati. La
dati nell'allegato sono diversi a seconda che l'allegato sia
contenuti caricati (un file locale) o è un file archiviato su Drive. La
Media
risorsa
rappresenta un file caricato su Google Chat, come immagini, video e documenti.
La
Attachment
risorsa
rappresenta un'istanza di un elemento multimediale, ovvero un file, allegato a un messaggio. Attachment
La risorsa include i metadati sull'allegato, ad esempio
dove viene salvato.
Prerequisiti
Python
- Un'azienda o un'impresa Google Workspace con accesso a Google Chat.
- Python 3.6 o versioni successive
- Lo strumento di gestione dei pacchetti pip
- Le librerie client di Google più recenti. Per installarle o aggiornarle,
esegui questo comando nell'interfaccia a riga di comando:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Configura l'ambiente:
- Creare un progetto Google Cloud.
- Configura la schermata per il consenso OAuth.
- Abilita e configura l'API Google Chat con un nome, l'icona e la descrizione dell'app Chat.
- Crea le credenziali di accesso in base a come vuoi eseguire l'autenticazione nella richiesta API Google Chat:
- Per autenticarti come utente di Chat,
crea ID client OAuth
credenziali e salvale come file JSON denominato
client_secrets.json
alla tua directory locale. - Per autenticarti come app Chat, crea account di servizio credenziali.
- Per autenticarti come utente di Chat,
crea ID client OAuth
credenziali e salvale come file JSON denominato
- Scegli un ambito di autorizzazione a seconda che tu voglia eseguire l'autenticazione come utente o come App Chat.
Scaricare da un file allegato
Per scaricare contenuti multimediali da un file allegato, inserisci quanto segue nel richiesta:
- Con l'autenticazione dell'utente, specifica
Ambito dell'autorizzazione
chat.messages.readonly
ochat.messages
. Con autenticazione delle app, specificare l'ambito dell'autorizzazionechat.bot
. - Chiama i seguenti metodi di Google Chat:
- Per ricevere
attachmentDataRef
, chiama uno dei seguenti metodi:- Il metodo
get
ilAttachment
risorsa. - Il metodo
get
o il Metodolist
ilMessage
risorsa.
- Il metodo
- Chiama il metodo
download
ilMedia
risorsa e specifica il precedenteattachmentDataRef.resourceName
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 uno degli nei seguenti modi:- Il metodo
get
sulla risorsaAttachment
. - Il metodo
get
sulla risorsaMessage
. - Il metodo
list
sulla risorsaMessage
.
- Il metodo
Nella directory di lavoro, crea ed esegui l'esempio:
python3 chat_media_and_attachment_download.py
Se l'operazione ha 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 Classe
MediaIoBaseDownload
in Python, che contiene i metodi per il download 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 desideri scaricare utilizzando un byte intervallo con l'intestazioneRange
, ad esempio:Range: bytes=500-999
.
Argomenti correlati
- Se il messaggio è un file di Drive, utilizza la classe API Drive per accedere al file.
- Caricare contenuti multimediali come file allegati
- Scaricare contenuti multimediali come file allegato
- Recuperare i metadati relativi a un allegato di un messaggio