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, löst Google Chat ein MESSAGE
-Interaktionsereignis aus.
Das von Ihrer App empfangene Interaktionsereignis enthält einen Anfragetext. Dabei handelt es sich um die JSON-Nutzlast, die das Interaktionsereignis darstellt, einschließlich etwaiger Anhänge. Die Daten im Anhang unterscheiden sich je nachdem, ob es sich um hochgeladene Inhalte (eine lokale Datei) oder um eine in Drive gespeicherte Datei handelt. Die Ressource Media
steht für eine in Google Chat hochgeladene Datei, 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 zum Anhang, z. B. den Speicherort.
Voraussetzungen
Python
- Python 3.6 oder höher
- Das Paketverwaltungstool pip
Die aktuellen 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, in dem die Google Chat API aktiviert und konfiguriert ist. Eine entsprechende Anleitung 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
Um Medien aus einem Dateianhang herunterzuladen, übergeben Sie in Ihrer Anfrage Folgendes:
- Geben Sie mit der Nutzerauthentifizierung den Autorisierungsbereich
chat.messages.readonly
oderchat.messages
an. Geben Sie für die Anwendungsauthentifizierung den Autorisierungsbereichchat.bot
an. - Rufen Sie die folgenden Google Chat-Methoden auf:
- Rufen Sie
attachmentDataRef
mit 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 können dann auf eine der folgenden Arten abrufen:- 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, die Methoden zum Herunterladen der Datei in Abschnitten und zum Speichern des Inhalts in einem Ausgabestream enthält.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 bei der Nachricht 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