Medien als Dateianhang hochladen

In diesem Leitfaden wird beschrieben, 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, wird in Google Chat ein MESSAGE-Interaktionsereignis gesendet. Das von Ihrer App empfangene Interaktionsereignis enthält einen Anfragetext, der die JSON-Nutzlast des Interaktionsereignisses darstellt, einschließlich aller Anhänge. Die Daten im Anhang unterscheiden sich je nachdem, ob es sich um hochgeladene Inhalte (eine lokale Datei) oder eine in Drive gespeicherte Datei handelt. Die Media-Ressource stellt eine in Google Chat hochgeladene Datei wie Bilder, Videos und Dokumente dar. Die Attachment-Ressource stellt eine Instanz von Medien dar, also eine Datei, die an eine Nachricht angehängt ist. Die Ressource Attachment enthält die Metadaten des Anhangs, z. B. den Speicherort.

Vorbereitung

Python

Als Dateianhang hochladen

Wenn Sie Medien hochladen und an eine Nachricht anhängen möchten, übergeben Sie Folgendes in Ihrer Anfrage:

  • Geben Sie den Autorisierungsbereich chat.messages.create oder chat.messages an.
  • Rufen Sie die folgenden Google Chat-Methoden auf:
    1. Rufen Sie zum Hochladen der Datei die Methode upload für die Ressource Media auf.
      • Setzen Sie parent auf den Namen des Gruppenbereichs, in dem sich die Datei befindet.
      • Legen Sie in body (dem Anfragetext) filename auf den Namen des hochgeladenen Dateianhangs fest.
      • Legen Sie media_body als Instanz der hochzuladenden Datei fest.
    2. Rufen Sie zum Erstellen einer Nachricht mit der hochgeladenen Datei als Anhang die Methode create> für die Ressource Messages auf.

Im folgenden Beispiel wird eine PNG-Bilddatei hochgeladen und an eine Nachricht angehängt.

Python

  1. Erstellen Sie in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen chat_media_and_attachment_upload.py.
  2. Fügen Sie den folgenden Code in chat_media_and_attachment_upload.py 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(
                      'credentials.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()
    
  3. Ersetzen Sie im Code SPACE durch den Namen des Bereichs, in den Sie den Anhang hochladen möchten. Sie können den Namen über die spaces.list-Methode in der Chat API oder über die URL eines Bereichs abrufen.

  4. 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 mit attachmentDataRef zurück, der Details zur hochgeladenen Datei enthält.

Einschränkungen und Überlegungen

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.
  • Ihre Nachricht darf keine Zubehör-Widgets enthalten.