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. wo er gespeichert ist.
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.jsonin 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.readonlyoderchat.messagesan. Geben Sie bei der App-Authentifizierung den Autorisierungsbereichchat.botan. - Rufen Sie die folgenden Google Chat-Methoden auf:
- Rufen Sie
attachmentDataRefmit einer der folgenden Methoden ab:- Die
get-Methode für dieAttachment-Ressource. - Die Methode
getoder die Methodelistfür die RessourceMessage.
- Die
- Rufen Sie die Methode
downloadfür dieMedia-Ressource auf und geben Sie die zuvor abgerufeneattachmentDataRef.resourceNamealsmedia.download.resourceNamean.
- 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.pyein: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_NAMEdurchattachmentDataRef.resourceName. Sie könnenattachmentDataRef.resourceNameauf eine der folgenden Arten abrufen:- Die Methode
getfür die RessourceAttachment. - Die Methode
getfür die RessourceMessage. - Die Methode
listfü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
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
MediaIoBaseDownloadin 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
downloadauf 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 auf die Datei zuzugreifen.
- Medien als Dateianhang hochladen
- Medien als Dateianhang herunterladen
- Metadaten zu einem Nachrichtenanhang abrufen