Carica contenuti multimediali come file allegato

Questa guida spiega come utilizzare il metodo upload nella risorsa Media di l'API Google Chat per caricare elementi multimediali (un file) in Google Chat e quindi allegarli a un messaggio.

Quando l'utente invia un messaggio alla tua app, Google Chat invia un Evento di interazione MESSAGE. L'evento di interazione ricevuto dalla tua app include un corpo della richiesta, ovvero Payload JSON che rappresenta l'evento di interazione, inclusi eventuali allegati. La dati nell'allegato sono diversi a seconda che l'allegato sia contenuti caricati (un file locale) o è un file archiviato su Drive. La Media risorsa rappresenta un file caricato su Google Chat, come immagini, video e documenti. La Attachment risorsa rappresenta un'istanza di un elemento multimediale, ovvero un file, allegato a un messaggio. Attachment La risorsa include i metadati sull'allegato, ad esempio dove viene salvato.

Prerequisiti

Python

  • Python 3.6 o versioni successive
  • Lo strumento di gestione dei pacchetti pip
  • Le librerie client di Google più recenti. Per installarle o aggiornarle, esegui questo comando nell'interfaccia a riga di comando:
    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    

Carica come file allegato

Per caricare contenuti multimediali e allegarli a un messaggio, trasmetti quanto segue nel tuo richiesta:

  • Specifica l'ambito dell'autorizzazione chat.messages.create o chat.messages.
  • Chiama i seguenti metodi di Google Chat:
    1. Per caricare il file, richiama il metodo Metodo upload sulla risorsa Media.
      • Imposta parent sul nome dello spazio che ospita il file.
      • In body (il corpo della richiesta), imposta filename sul nome dell'elemento caricato allegato.
      • Imposta media_body come istanza del file da caricare.
    2. Per creare un messaggio con il file caricato allegato, richiama il metodo Metodo create il Messages risorsa.

L'esempio seguente carica un file immagine PNG e lo allega a un messaggio.

Python

  1. Nella directory di lavoro, crea un file denominato chat_media_and_attachment_upload.py.
  2. Includi il seguente codice in chat_media_and_attachment_upload.py:

    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()
    
  3. Nel codice, sostituisci SPACE con il nome dello spazio per caricare l'allegato, che puoi ottenere Metodo spaces.list nell'API Chat o dall'URL di uno spazio.

  4. Nella directory di lavoro, crea ed esegui l'esempio:

    python3 chat_media_and_attachment_upload.py
    

L'API Chat restituisce un corpo della risposta contenente attachmentDataRef con i dettagli sul file caricato.

Limiti e considerazioni

Quando ti prepari a caricare i file e a allegarli ai messaggi, prendi nota di questi limiti e considerazioni:

  • Puoi caricare file di dimensioni fino a 200 MB.
  • Alcuni tipi di file non sono supportati e non possono essere caricati. Per maggiori dettagli, vedi Tipi di file bloccati in Google Chat