In diesem Leitfaden wird erläutert, wie Sie die download
-Methode für die Media
-Ressource 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 App 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 hochgeladene Inhalte (eine lokale Datei) oder um eine in Drive gespeicherte Datei handelt. Die Ressource Media
steht für eine Datei, die in Google Chat hochgeladen wurde, z. B. Bilder, Videos und Dokumente.
Die Attachment
-Ressource stellt eine Instanz von Medien dar, also eine Datei, die an eine Nachricht angehängt ist. Die Attachment
-Ressource enthält die Metadaten zum Anhang, z. B. den Speicherort.
Vorbereitung
Python
- Ein Google Workspace-Konto für Unternehmen oder Organisationen mit Zugriff auf Google Chat.
- Richten Sie Ihre Umgebung ein:
- Google Cloud-Projekt erstellen
- Konfigurieren Sie den OAuth-Zustimmungsbildschirm.
- Aktivieren und konfigurieren Sie die Google Chat API mit einem Namen, Symbol und einer Beschreibung für Ihre Chat-App.
- Installieren Sie die Google API-Clientbibliothek für Python.
- Erstellen Sie Anmeldedaten für den Zugriff, je nachdem, wie Sie sich in Ihrer Google Chat API-Anfrage authentifizieren möchten:
- Wenn Sie sich als Chat-Nutzer authentifizieren möchten, erstellen Sie Anmeldedaten für die OAuth-Client-ID und speichern Sie die Anmeldedaten als JSON-Datei mit dem Namen
client_secrets.json
in Ihrem lokalen Verzeichnis. - Wenn Sie sich als Chat-App authentifizieren möchten, erstellen Sie Anmeldedaten für das Dienstkonto und speichern Sie die Anmeldedaten als JSON-Datei mit dem Namen
credentials.json
.
- Wenn Sie sich als Chat-Nutzer authentifizieren möchten, erstellen Sie Anmeldedaten für die OAuth-Client-ID und speichern Sie die Anmeldedaten als JSON-Datei mit dem Namen
- Wählen Sie den Autorisierungsbereich aus, je nachdem, ob Sie sich als Nutzer oder als Chat-App authentifizieren möchten.
Über einen Dateianhang herunterladen
Wenn Sie Medien aus einem angehängten Dateien herunterladen möchten, geben Sie Folgendes in Ihrer Anfrage an:
- Gib bei der Nutzerauthentifizierung den Autorisierungsbereich
chat.messages.readonly
oderchat.messages
an. Geben Sie bei der App-Authentifizierung den Autorisierungsbereichchat.bot
an. - Rufen Sie die folgenden Google Chat-Methoden auf:
- Rufen Sie eine der folgenden Methoden auf, um
attachmentDataRef
abzurufen:- Die Methode
get
für die RessourceAttachment
. - Die Methode
get
oder die Methodelist
für die RessourceMessage
- Die Methode
- Rufen Sie die Methode
download
auf derMedia
-Ressource auf und geben Sie die zuvor abgerufeneattachmentDataRef.resourceName
alsmedia.download.resourceName
an.
- Rufen Sie eine der folgenden Methoden auf, um
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 in
chat_media_and_attachment_download.py
den folgenden Code 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önnenattachmentDataRef.resourceName
auf eine der folgenden Arten abrufen:Erstellen und führen Sie das Beispiel in Ihrem Arbeitsverzeichnis aus:
python3 chat_media_and_attachment_download.py
Bei Erfolg gibt diese Methode den Dateiinhalt als Bytes zurück.
Sie haben folgende Möglichkeiten, 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 des Inhalts in einem Ausgabestream.Wenn Sie die HTTP-Anfrage manuell senden 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 demRange
-Header, z. B.Range: bytes=500-999
.
Weitere Informationen
- Wenn die Nachricht eine Drive-Datei ist, verwenden Sie die Drive API, um auf die Datei zuzugreifen.
- Medien als Anhang hochladen
- Medien als Anhang herunterladen
- Metadaten zu einem Nachrichtenanhang abrufen