In diesem Leitfaden wird erläutert, wie Sie die Methode download
für die Ressource Media
von
Über die Google Chat API können Sie Medien (eine Datei) aus einer Nachricht in Google Chat herunterladen.
Wenn der Nutzer eine Nachricht an Ihre App sendet, sendet Google Chat eine
MESSAGE
-Interaktionsereignis.
Das von Ihrer App empfangene Interaktionsereignis enthält einen Anfragetext, also den
JSON-Nutzlast, die das Interaktionsereignis darstellt, einschließlich etwaiger Anhänge. Die
Daten im Anhang unterschiedlich sind, je nachdem, ob der Anhang
hochgeladene Inhalte (eine lokale Datei) oder eine in Google Drive gespeicherte Datei. Die
Media
-Ressource
steht für eine in Google Chat hochgeladene Datei, z. B. Bilder, Videos und Dokumente.
Die
Attachment
-Ressource
steht für eine Medieninstanz – eine Datei –, die an eine Nachricht angehängt ist. Das Attachment
Ressource die Metadaten zum Anhang enthält, z. B.
wo sie gespeichert wird.
Vorbereitung
Python
- Unternehmen Google Workspace-Konto mit Zugriff auf Google Chat:
- Richten Sie Ihre Umgebung ein:
<ph type="x-smartling-placeholder">
- </ph>
- Google Cloud-Projekt erstellen
- Konfigurieren Sie den OAuth-Zustimmungsbildschirm.
- Aktivieren und konfigurieren Sie die Google Chat API mit einem Namen, und eine Beschreibung der Chat App.
- Installieren Sie die Python Google API-Clientbibliothek
- Anmeldedaten für den Zugriff basierend auf der Authentifizierung in der Google Chat API erstellen
Anfrage:
<ph type="x-smartling-placeholder">
- </ph>
- So authentifizieren Sie sich als Chat-Nutzer:
OAuth-Client-ID erstellen
Anmeldedaten und speichern Sie die Anmeldedaten als JSON-Datei mit dem Namen
client_secrets.json
in Ihr lokales Verzeichnis. - So authentifizieren Sie sich als Chat-App:
Dienstkonto erstellen
Anmeldedaten und speichern Sie die Anmeldedaten als JSON-Datei mit dem Namen
credentials.json
- So authentifizieren Sie sich als Chat-Nutzer:
OAuth-Client-ID erstellen
Anmeldedaten und speichern Sie die Anmeldedaten als JSON-Datei mit dem Namen
- <ph type="x-smartling-placeholder"></ph> Wählen Sie einen Autorisierungsbereich aus, je nachdem, ob Sie sich als Nutzer oder als Chat-App.
Aus einem Dateianhang herunterladen
Um Medien aus einem Dateianhang herunterzuladen, übergeben Sie Anfrage:
- Geben Sie bei der Nutzerauthentifizierung die
Autorisierungsbereich
chat.messages.readonly
oderchat.messages
. Mit App-Authentifizierung Geben Sie den Autorisierungsbereichchat.bot
an. - Rufen Sie die folgenden Google Chat-Methoden auf:
<ph type="x-smartling-placeholder">
- </ph>
- Rufen Sie
attachmentDataRef
ab, indem Sie eine der folgenden Methoden aufrufen: <ph type="x-smartling-placeholder">- </ph>
get
-Methode amAttachment
-Ressource.get
-Methode oder dielist
-Methode amMessage
-Ressource.
- Rufen Sie die Methode
download
auf. amMedia
-Ressource und geben Sie an, die zuvor abgerufenenattachmentDataRef.resourceName
alsmedia.download.resourceName
- 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
, mit dem Sie eines der auf folgende Arten:get
-Methode für die RessourceAttachment
get
-Methode für die RessourceMessage
list
-Methode für die RessourceMessage
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 des Klasse
MediaIoBaseDownload
in Python, die Methoden zum Herunterladen enthält und speichern Sie den Inhalt 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, indem Sie einen Byte Bereich mit demRange
-Header, z. B.Range: bytes=500-999
.
Weitere Informationen
- Handelt es sich bei der Nachricht um eine Drive-Datei, verwenden Sie den Drive API, um Zugriff auf die Datei zu erhalten.
- Medien als Dateianhang hochladen
- Medien als Dateianhang herunterladen
- Metadaten zu einem Nachrichtenanhang abrufen