In diesem Leitfaden wird erläutert, wie Sie mit der Methode upload
für die Ressource Media
der Google Chat API Medien (eine Datei) in Google Chat hochladen und dann an eine Nachricht anhängen.
Wenn der Nutzer eine Nachricht an Ihre App sendet, löst Google Chat ein MESSAGE
-Interaktionsereignis aus.
Das von Ihrer Anwendung empfangene Interaktionsereignis enthält einen Anfragetext. Dies ist die JSON-Nutzlast, die das Interaktionsereignis einschließlich aller Anhänge darstellt. Welche Daten darin enthalten sind, hängt davon ab, ob es sich bei dem Anhang um hochgeladene Inhalte (eine lokale Datei) oder um eine in Drive gespeicherte Datei handelt. Die Ressource Media
steht für eine in Google Chat hochgeladene Datei, z. B. Bilder, Videos und Dokumente.
Die Ressource Attachment
stellt eine Medieninstanz – eine Datei – dar, die an eine Nachricht angehängt ist. Die Ressource Attachment
enthält die Metadaten zum Anhang, z. B. den Speicherort.
Voraussetzungen
Python
- Python 3.6 oder höher
- Das Paketverwaltungstool pip
Die neuesten Google-Clientbibliotheken für Python Führen Sie den folgenden Befehl in der Befehlszeile aus, um sie zu installieren oder zu aktualisieren:
pip3 install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib oauth2client
Eine veröffentlichte Chat-App. Informationen zum Erstellen und Veröffentlichen einer Chat-App finden Sie unter Google Chat-App erstellen.
Für die Chat-App konfigurierte Autorisierung. Zum Hochladen von Medien als Dateianhang ist eine Nutzerauthentifizierung mit dem Autorisierungsbereich
chat.messages.create
oderchat.messages
erforderlich.
Als Dateianhang hochladen
Wenn Sie Medien hochladen und an eine Nachricht anhängen möchten, übergeben Sie in Ihrer Anfrage Folgendes:
- Geben Sie den Autorisierungsbereich
chat.messages.create
oderchat.messages
an. - Rufen Sie die folgenden Google Chat-Methoden auf:
- Rufen Sie zum Hochladen der Datei die Methode
upload
für die RessourceMedia
auf.- Geben Sie für
parent
den Namen des Gruppenbereichs an, in dem die Datei gehostet wird. - Legen Sie in
body
(Anfragetext)filename
auf den Namen des hochgeladenen Dateianhangs fest. - Legen Sie
media_body
als Instanz der hochzuladenden Datei fest.
- Geben Sie für
- Rufen Sie die Methode
create
für die RessourceMessages
auf, um eine Nachricht mit der hochgeladenen Datei zu erstellen.- Legen Sie
attachment
als Antwort auf den Aufruf der Methodeupload
für die RessourceMedia
fest. Im Feldattachment
kann eine Liste angegeben werden.
- Legen Sie
- Rufen Sie zum Hochladen der Datei die Methode
Im folgenden Beispiel wird eine PNG-Bilddatei hochgeladen und an eine Nachricht angehängt.
Python
- Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen
chat_media_and_attachment_upload.py
. Fügen Sie den folgenden Code in
chat_media_and_attachment_upload.py
ein:import os.path from google.auth.transport.requests import Request from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build from googleapiclient.errors import HttpError from googleapiclient.http import MediaFileUpload # 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.create"] def main(): ''' Authenticates with Chat API via user credentials, then uploads a file as media, creates a message, and attaches the file to the 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. service = build('chat', 'v1', credentials=creds) # Upload a file to Google Chat. media = MediaFileUpload('test_image.png', mimetype='image/png') # Create a message and attach the uploaded file to it. attachment_uploaded = service.media().upload( # The space to upload the attachment in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE', # The filename of the attachment, including the file extension. body={'filename': 'test_image.png'}, # Media resource of the attachment. media_body=media ).execute() print(attachment_uploaded) # Create a Chat message with attachment. result = service.spaces().messages().create( # The space to create the message in. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Must match the space name that the attachment is uploaded to. parent='spaces/SPACE', # The message to create. body={ 'text': 'Hello, world!', 'attachment': [attachment_uploaded] } ).execute() print(result) if __name__ == '__main__': main()
Ersetzen Sie im Code
SPACE
durch den Namen des Gruppenbereichs, in den der Anhang hochgeladen werden soll. Diesen Namen können Sie in der Chat API über die Methodespaces.list
oder aus der URL eines Gruppenbereichs abrufen.Erstellen Sie das Beispiel in Ihrem Arbeitsverzeichnis und führen Sie es aus:
python3 chat_media_and_attachment_upload.py
Die Chat API gibt einen Antworttext zurück, der attachmentDataRef
und Details zur hochgeladenen Datei enthält.
Einschränkungen und Hinweise
Beachten Sie beim Hochladen von Dateien und Anhängen an Nachrichten die folgenden Einschränkungen und Hinweise:
- Sie können Dateigrößen von bis zu 200 MB hochladen.
- Einige Dateitypen werden nicht unterstützt und können nicht hochgeladen werden. Weitere Informationen finden Sie unter In Google Chat blockierte Dateitypen.