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 App empfangene Interaktionsereignis enthält einen Anfragetext, die JSON-Nutzlast, die das Interaktionsereignis darstellt, einschließlich aller Anhänge. Die Daten im Anhang unterscheiden sich je nachdem, ob der Anhang hochgeladene Inhalte (eine lokale Datei) oder eine in Drive gespeicherte Datei ist. Die Ressource
Media stellt eine in Google Chat hochgeladene Datei dar, z. B. Bilder, Videos und Dokumente.
Die
Attachment Ressource
stellt eine Instanz von Medien dar, eine Datei, die an eine Nachricht angehängt ist. Die Ressource Attachment enthält die Metadaten zum Anhang, z. B. wo er gespeichert ist.
Vorbereitung
Python
- Ein Google Workspace-Konto für Unternehmen oder Enterprise 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, 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 sie 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 sie 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 sie als JSON-Datei mit dem Namen
- Wählen Sie einen Autorisierungsbereich aus, je nachdem, ob Sie sich als Nutzer oder als die 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
chat.messages.readonlyoderchat.messagesAutorisierungsbereich an. Geben Sie bei der App-Authentifizierung, denchat.botAutorisierungsbereich an. - Rufen Sie die folgenden Google Chat-Methoden auf:
- Rufen Sie
attachmentDataRefab, indem Sie eine der folgenden Methoden aufrufen:- Die
getMethode für dieAttachmentRessource. - Die
getMethode oder dielistMethode für dieMessageRessource.
- Die
- Rufen Sie die
downloadMethode für dieMediaRessource 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önnen sie auf eine der folgenden Arten abrufen:- Die
getMethode für dieAttachmentRessource. - Die
getMethode für dieMessageRessource. - Die
listMethode für dieMessageRessource.
- 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 die Dateiinhalte herunterzuladen:
Wir empfehlen die Verwendung der Klasse
MediaIoBaseDownloadin Python, die Methoden zum Herunterladen der Datei in Abschnitten und zum Speichern der Inhalte in einem Ausgabestream enthält.Wenn Sie die HTTP-Anfrage manuell senden müssen, rufen Sie die
downloadMethode auf und geben Sie den Teil der Datei an, den Sie herunterladen möchten. Verwenden Sie dazu einen Byte bereich mit demRangeHeader, 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 Dateianhang hochladen
- Medien als Dateianhang herunterladen
- Metadaten zu einem Nachrichtenanhang abrufen