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, wird in Google Chat ein MESSAGE
-Interaktionsereignis gesendet.
Das von Ihrer App empfangene Interaktionsereignis enthält einen Anfragetext, der die JSON-Nutzlast für 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 eine in Drive gespeicherte Datei handelt. Die Media
-Ressource stellt eine in Google Chat hochgeladene Datei dar, 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 Ressource Attachment
enthält die Metadaten des Anhangs, z. B. den Speicherort.
Vorbereitung
Python
- Ein Google Workspace-Konto für Unternehmen mit Zugriff auf Google Chat.
- Umgebung einrichten:
- Google Cloud-Projekt erstellen
- OAuth-Zustimmungsbildschirm konfigurieren
- Aktivieren und konfigurieren Sie die Google Chat API mit einem Namen, einem 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
credentials.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 einen Autorisierungsbereich aus, je nachdem, ob Sie sich als Nutzer oder als Chat-App authentifizieren möchten.
Aus einem Dateianhang herunterladen
Wenn Sie Medien aus einem Dateianhang herunterladen möchten, übergeben Sie Folgendes in Ihrer Anfrage:
- Geben Sie 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
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 dieMedia
-Ressource auf und geben Sie die zuvor abgerufeneattachmentDataRef.resourceName
alsmedia.download.resourceName
an.
- Rufen Sie
Im folgenden Beispiel wird eine an eine Nachricht angehängte Datei heruntergeladen:
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( 'credentials.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:- Die
get
-Methode für dieAttachment
-Ressource. - Die
get
-Methode für dieMessage
-Ressource. - Die
list
-Methode für dieMessage
-Ressource.
- Die
Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:
python3 chat_media_and_attachment_download.py
Bei Erfolg gibt diese Methode den Dateiinhalt als Byte zurück.
Wählen Sie eine der folgenden Methoden aus, um den Dateiinhalt herunterzuladen:
Wir empfehlen, die Klasse
MediaIoBaseDownload
in Python zu verwenden, 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, indem Sie mit dem HeaderRange
einen Bytebereich angeben, 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 auf die Datei zuzugreifen.
- Medien als Dateianhang hochladen
- Medien als Dateianhang herunterladen
- Metadaten zu einem Nachrichtenanhang abrufen