Pobieranie multimediów z załącznika

Z tego przewodnika dowiesz się, jak używać metody download w zasobie Media interfejsu Google Chat API do pobrania multimediów (pliku) z wiadomości w Google Chat.

Gdy użytkownik wysyła wiadomość do Twojej aplikacji, Google Chat wysyła komunikat MESSAGE zdarzenia interakcji. Zdarzenie interakcji odebrane przez aplikację zawiera treść żądania, która jest Ładunek JSON reprezentujący zdarzenie interakcji, wraz ze wszystkimi załącznikami. dane w załączniku będą się różnić w zależności od tego, czy został przesłane treści (plik lokalny) lub plik zapisany na Dysku; Media zasób reprezentuje plik przesłany do Google Chat, np. obrazy, filmy i dokumenty. Attachment zasób reprezentuje instancję multimediów – pliku – dołączonego do wiadomości. Attachment zasób zawiera metadane dotyczące załącznika, takie jak gdzie są zapisywane.

Wymagania wstępne

Python

  • Python w wersji 3.6 lub nowszej
  • PIP narzędzie do zarządzania pakietami
  • Najnowsze biblioteki klienta Google dla języka Python. Aby je zainstalować lub zaktualizować: uruchom następujące polecenie w interfejsie wiersza poleceń:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Projekt Google Cloud z włączonym i skonfigurowanym interfejsem Google Chat API. Instrukcje znajdziesz w sekcji Utwórz aplikację Google Chat.
  • Skonfigurowano autoryzację dla aplikacji Google Chat. Pobieranie multimediów obsługuje:

Pobieranie z załącznika

Aby pobrać multimedia z załącznika, przekaż w żądanie:

Ten przykład umożliwia pobranie pliku załączonego do wiadomości:

Python

  1. W katalogu roboczym utwórz plik o nazwie chat_media_and_attachment_download.py
  2. Umieść w pliku chat_media_and_attachment_download.py ten kod:

    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()
    
  3. W kodzie zastąp RESOURCE_NAME elementem attachmentDataRef.resourceName. Możesz pobrać jeden z w następujący sposób:

  4. W katalogu roboczym skompiluj i uruchom przykład:

    python3 chat_media_and_attachment_download.py
    

Jeśli operacja się uda, metoda zwróci zawartość pliku w bajtach.

Aby pobrać zawartość pliku, wybierz jedną z tych opcji:

  • Zalecamy użycie metody Klasa MediaIoBaseDownload w Pythonie, która zawiera metody pobierania podziel go na sekcje, a potem zapisz jego zawartość w strumieniu wyjściowym.

  • Jeśli musisz ręcznie wysyłać żądania HTTP, wywołaj metodę download i określ część pliku, którą chcesz pobrać, przy użyciu tagu bajt zakres i nagłówkiem Range, np. Range: bytes=500-999.