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 Instanz von Medien – 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
- Python 3.6 oder höher
- Das pip-Element Paketverwaltungstool
Die neuesten Google-Clientbibliotheken für Python. So installieren oder aktualisieren Sie sie: Führen Sie in der Befehlszeile den folgenden Befehl aus:
pip3 install --upgrade google-api-python-client google-auth-oauthlib
- Ein Google Cloud-Projekt mit aktivierter und konfigurierter Google Chat API. Eine Anleitung dazu finden Sie unter Erstellen Sie eine Google Chat App.
Für die Chat App konfigurierte Autorisierung Das Herunterladen von Medien unterstützt beides:
- Nutzerauthentifizierung
mit der Autorisierung
chat.messages.readonly
oderchat.messages
Umfang. - App-Authentifizierung
mit dem Autorisierungsbereich
chat.bot
.
- Nutzerauthentifizierung
mit der Autorisierung
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: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