In diesem Leitfaden wird erläutert, wie Sie die Methode download
für die Ressource Media
der Google Chat API verwenden, um Medien (eine Datei) aus einer Nachricht in Google Chat herunterzuladen.
Wenn der Nutzer eine Nachricht an Ihre App sendet, sendet Google Chat ein MESSAGE
-Interaktionsereignis.
Das von Ihrer Anwendung empfangene Interaktionsereignis enthält einen Anfragetext. Das ist die JSON-Nutzlast, die das Interaktionsereignis darstellt, einschließlich aller Anhänge. Die Daten im Anhang unterscheiden sich je nachdem, ob es sich um einen hochgeladenen Inhalt (eine lokale Datei) oder eine in Google Drive gespeicherte Datei handelt. Die Ressource Media
stellt eine in Google Chat hochgeladene Datei dar, z. B. Bilder, Videos und Dokumente.
Die Ressource Attachment
stellt eine Medieninstanz – eine Datei – dar, die an eine Nachricht angehängt ist. Die Ressource Attachment
enthält die Metadaten des Anhangs, z. B. den Speicherort.
Voraussetzungen
Python
- Python 3.6 oder höher
- Das Paketverwaltungstool pip
Die neuesten Google-Clientbibliotheken für Python. Führen Sie den folgenden Befehl in der Befehlszeile aus, um sie zu installieren oder zu aktualisieren:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Ein Google Cloud-Projekt mit aktivierter und konfigurierter Google Chat API. Eine Anleitung dazu finden Sie unter Google Chat-App erstellen.
Für die Chat-App konfigurierte Autorisierung. Das Herunterladen von Medien unterstützt Folgendes:
- Nutzerauthentifizierung mit dem Autorisierungsbereich
chat.messages.readonly
oderchat.messages
. - App-Authentifizierung mit dem Autorisierungsbereich
chat.bot
.
- Nutzerauthentifizierung mit dem Autorisierungsbereich
Aus einem Dateianhang herunterladen
Wenn Sie Medien aus einem Dateianhang herunterladen möchten, übergeben Sie in Ihrer Anfrage Folgendes:
- Geben Sie für die Nutzerauthentifizierung den Autorisierungsbereich
chat.messages.readonly
oderchat.messages
an. Geben Sie für die App-Authentifizierung den Autorisierungsbereichchat.bot
an. - Rufen Sie die folgenden Google Chat-Methoden auf:
- Rufen Sie
attachmentDataRef
durch Aufrufen einer der folgenden Methoden ab:- Die Methode
get
für die RessourceAttachment
. - Die Methode
get
oder die Methodelist
für die RessourceMessage
.
- Die Methode
- Rufen Sie die Methode
download
für die RessourceMedia
auf und geben Sie den zuvor abgerufenenattachmentDataRef.resourceName
alsmedia.download.resourceName
an.
- Rufen Sie
Im folgenden Beispiel wird eine Datei heruntergeladen, die an eine Nachricht angehängt ist:
Python
- Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
chat_media_and_attachment_download.py
. Fügen Sie den folgenden Code in
chat_media_and_attachment_download.py
ein: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()
Ersetzen Sie im Code
RESOURCE_NAME
durchattachmentDataRef.resourceName
. Sie haben folgende Möglichkeiten:- Die Methode
get
für die RessourceAttachment
. - Die Methode
get
für die RessourceMessage
. - Die Methode
list
für die RessourceMessage
.
- Die Methode
Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:
python3 chat_media_and_attachment_download.py
Wenn der Vorgang erfolgreich ist, gibt diese Methode den Dateiinhalt in Byte zurück.
Wählen Sie eine der folgenden Methoden aus, um den Dateiinhalt herunterzuladen:
Wir empfehlen die Verwendung der Klasse
MediaIoBaseDownload
in Python. Sie enthält Methoden zum Herunterladen der Datei in Abschnitten und zum Speichern der Inhalte in einem Ausgabestream.Wenn Sie die HTTP-Anfrage manuell stellen müssen, rufen Sie die Methode
download
auf und geben Sie den Teil der Datei an, den Sie herunterladen möchten. Verwenden Sie dazu einen Bytebereich mit dem HeaderRange
, z. B.Range: bytes=500-999
.
Weitere Informationen
- Wenn es sich um eine Drive-Datei handelt, verwenden Sie die Drive API, um Zugriff auf die Datei zu erhalten.
- Medien als Dateianhang hochladen
- Medien als Dateianhang herunterladen
- Metadaten zu einem Nachrichtenanhang abrufen