Scaricare contenuti multimediali da un file allegato

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

  • Python 3.6 o versioni successive
  • Il pip strumento di gestione dei pacchetti
  • Le librerie client di Google più recenti per Python. Per installarle o aggiornarle, esegui questo comando nell'interfaccia a riga di comando:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Un progetto Google Cloud con l'API Google Chat abilitata e configurata. Per i passaggi, vedi Crea un'app Google Chat.
  • Autorizzazione configurata per l'app Chat. Il download di contenuti multimediali supporta:

Scaricare da un file allegato

Per scaricare contenuti multimediali da un file allegato, inserisci quanto segue nel richiesta:

L'esempio seguente scarica un file allegato a un messaggio:

Python

  1. Nella directory di lavoro, crea un file denominato chat_media_and_attachment_download.py.
  2. 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()
    
  3. Nel codice, sostituisci RESOURCE_NAME con attachmentDataRef.resourceName, che puoi recuperare uno degli nei seguenti modi:

  4. 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'intestazione Range, ad esempio: Range: bytes=500-999.