In diesem Leitfaden wird beschrieben, wie Sie die upload
-Methode auf der Media
-Ressource der Google Chat API verwenden, um Medien (eine Datei) in Google Chat hochzuladen und dann an eine Nachricht anzuhängen.
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. Das ist die JSON-Nutzlast, die 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 um eine in Drive gespeicherte Datei handelt. Die Ressource Media
steht für eine Datei, die in Google Chat hochgeladen wurde, 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 Attachment
-Ressource enthält die Metadaten zum Anhang, z. B. den Speicherort.
Vorbereitung
Python
- Ein Google Workspace-Konto für Unternehmen oder Organisationen mit Zugriff auf Google Chat.
- Richten Sie Ihre Umgebung ein:
- Google Cloud-Projekt erstellen
- Konfigurieren Sie den OAuth-Zustimmungsbildschirm.
- 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.
-
OAuth-Client-ID-Anmeldedaten für eine Desktopanwendung erstellen Wenn Sie das Beispiel in dieser Anleitung ausführen möchten, speichern Sie die Anmeldedaten als JSON-Datei mit dem Namen
client_secrets.json
in Ihrem lokalen Verzeichnis.
- Wählen Sie einen Autorisierungsbereich aus, der die Nutzerauthentifizierung unterstützt.
Als Dateianhang hochladen
Wenn du Medien hochladen und an eine Nachricht anhängen möchtest, gib Folgendes in deiner Anfrage an:
- 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.- Legen Sie für
parent
den Namen des Gruppenbereichs fest, in dem die Datei gehostet wird. - Legen Sie in
body
(im Anfragetext) fürfilename
den Namen des hochgeladenen Dateianhangs fest. - Legen Sie
media_body
als Instanz der hochzuladenden Datei fest.
- Legen Sie für
- Wenn Sie eine Nachricht mit der hochgeladenen Datei als Anhang erstellen möchten, rufen Sie die Methode
create
für die RessourceMessages
auf.
- 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 in
chat_media_and_attachment_upload.py
den folgenden Code ein:from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build 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 dem Sie den Anhang hochladen möchten. Sie können ihn über diespaces.list
-Methode in der Chat API oder über die URL eines Gruppenbereichs abrufen.Erstellen und führen Sie das Beispiel in Ihrem Arbeitsverzeichnis aus:
python3 chat_media_and_attachment_upload.py
Die Chat API gibt einen Antworttext mit attachmentDataRef
zurück, der 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 Dateien mit einer Größe 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.
- Zubehör-Widgets dürfen nicht in der Mitteilung enthalten sein.