Ten przewodnik wyjaśnia, jak używać metody download
w zasobie Media
interfejsu Google Chat API do pobierania multimediów (pliku) z wiadomości w Google Chat.
Gdy użytkownik wyśle wiadomość do Twojej aplikacji, Google Chat wyśle MESSAGE
zdarzenie interakcji.
Zdarzenie interakcji otrzymane przez aplikację zawiera treść żądania, czyli ładunek JSON reprezentujący zdarzenie interakcji, w tym wszelkie załączniki. Dane w załączniku różnią się w zależności od tego, czy załącznik jest przesłaną treścią (plik lokalny), czy plikiem przechowywanym na Dysku. Media
Zasób
reprezentuje plik przesłany do Google Chat, np. obraz, film lub dokument.
Attachment
Zasób reprezentuje instancję multimediów, czyli plik dołączony do wiadomości. Attachment
Zasób zawiera metadane załącznika, np. miejsce jego zapisania.
Wymagania wstępne
Python
- Konto Google Workspace w wersji Business lub Enterprise 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, podając nazwę, ikonę i opis aplikacji do obsługi czatu.
- Zainstaluj bibliotekę klienta interfejsu API Google dla języka Python.
- Utwórz dane logowania, aby uwierzytelniać żądania do interfejsu Google Chat API:
- Aby uwierzytelnić się jako użytkownik Chatu, utwórz dane logowania identyfikatora klienta OAuth i zapisz je jako plik JSON o nazwie
credentials.json
w katalogu lokalnym. - Aby uwierzytelnić się jako aplikacja w Chat, utwórz dane logowania konta usługi i zapisz je w pliku JSON o nazwie
credentials.json
.
- Aby uwierzytelnić się jako użytkownik Chatu, utwórz dane logowania identyfikatora klienta OAuth i zapisz je jako plik JSON o nazwie
- Wybierz zakres autoryzacji w zależności od tego, czy chcesz uwierzytelnić się jako użytkownik, czy jako aplikacja do obsługi czatu.
Pobieranie z załącznika
Aby pobrać multimedia z załącznika, w żądaniu przekaż te informacje:
- W przypadku uwierzytelniania użytkownika określ zakres autoryzacji:
chat.messages.readonly
lubchat.messages
. W przypadku uwierzytelniania aplikacji określ zakres autoryzacjichat.bot
. - Wywołaj te metody Google Chat:
- Uzyskaj
attachmentDataRef
, wywołując jedną z tych metod:get
metoda wAttachment
zasobie.- Metoda
get
lublist
wMessage
zasobie.
- Wywołaj metodę
download
wMedia
zasobie i określ wcześniej pobrany elementattachmentDataRef.resourceName
jakomedia.download.resourceName
.
- Uzyskaj
W tym przykładzie pobierany jest plik dołączony do wiadomości:
Python
- W katalogu roboczym utwórz plik o nazwie
chat_media_and_attachment_download.py
. Dodaj do 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( 'credentials.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
ciągiem znakówattachmentDataRef.resourceName
, który możesz uzyskać na jeden z tych sposobów:W katalogu roboczym skompiluj i uruchom przykład:
python3 chat_media_and_attachment_download.py
Jeśli operacja się uda, ta metoda zwróci zawartość pliku w postaci bajtów.
Aby pobrać zawartość pliku, wykonaj jedną z tych czynności:
Zalecamy użycie klasy
MediaIoBaseDownload
w Pythonie, która zawiera metody pobierania pliku w sekcjach i zapisywania zawartości w strumieniu wyjściowym.Jeśli musisz ręcznie wysłać żądanie HTTP, wywołaj metodę
download
i określ część pliku, którą chcesz pobrać, używając zakresu bajtów z nagłówkiemRange
, np.Range: bytes=500-999
.
Powiązane artykuły
- Jeśli wiadomość jest plikiem na Dysku, użyj interfejsu Drive API, aby uzyskać dostęp do pliku.
- Przesyłanie multimediów jako załącznika
- Pobieranie multimediów jako załącznika
- Pobieranie metadanych załącznika do wiadomości