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
- Firmy lub przedsiębiorstwa Konto Google Workspace z dostępem do Google Chat.
- Skonfiguruj środowisko:
- Utwórz projekt Google Cloud.
- Skonfiguruj ekran zgody OAuth
- Włącz i skonfiguruj interfejs Google Chat API pod nazwą. ikonę i opis aplikacji Google Chat.
- Zainstaluj Python Biblioteka klienta interfejsów API Google.
- Utwórz dane uwierzytelniające na podstawie sposobu uwierzytelniania w interfejsie Google Chat API
żądanie:
- Aby uwierzytelnić się jako użytkownik Google Chat:
utwórz identyfikator klienta OAuth
dane logowania i zapisz je w pliku JSON o nazwie
client_secrets.json
do katalogu lokalnego. - Aby uwierzytelnić się jako aplikacja Google Chat:
utwórz konto usługi
dane logowania i zapisz je w pliku JSON o nazwie
credentials.json
- Aby uwierzytelnić się jako użytkownik Google Chat:
utwórz identyfikator klienta OAuth
dane logowania i zapisz je w pliku JSON o nazwie
- Wybierz zakres autoryzacji w zależności od tego, czy chcesz się uwierzytelnić jako użytkownik, czy jako aplikacja Google Chat.
Pobieranie z załącznika
Aby pobrać multimedia z załącznika, przekaż w żądanie:
- Za pomocą uwierzytelniania użytkownika określ
Zakres autoryzacji
chat.messages.readonly
lubchat.messages
. Na uwierzytelnianie aplikacji, określić zakres autoryzacjichat.bot
. - Wywołaj te metody w Google Chat:
- Uzyskaj
attachmentDataRef
, wywołując jedną z tych metod: - Wywołaj metodę
download
wMedia
zasób i określ pobrane wcześniejattachmentDataRef.resourceName
jakomedia.download.resourceName
.
- Uzyskaj
Ten przykład umożliwia pobranie pliku załączonego do wiadomości:
Python
- W katalogu roboczym utwórz plik o nazwie
chat_media_and_attachment_download.py
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()
W kodzie zastąp
RESOURCE_NAME
elementemattachmentDataRef.resourceName
. Możesz pobrać jeden z w następujący sposób: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łówkiemRange
, np.Range: bytes=500-999
.
Powiązane artykuły
- Jeśli wiadomość jest plikiem na Dysku, użyj funkcji Drive API, aby uzyskać dostęp do pliku.
- Przesyłanie multimediów jako załącznika
- Pobieranie multimediów jako załącznika
- Uzyskiwanie metadanych załącznika do wiadomości