Z tego przewodnika dowiesz się, jak użyć metody upload
zasobu Media
interfejsu Google Chat API, aby przesłać multimedia (plik) do Google Chat, a następnie załączyć je w wiadomości.
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 dane JSON reprezentujące zdarzenie interakcji, w tym wszelkie załączniki. Dane w załączniku są różne w zależności od tego, czy jest to przesłany zasób (plik lokalny) czy plik zapisany na Dysku.
Media
reprezentuje plik przesłany do Google Chat, np. obrazy, filmy i dokumenty.
Zasób Attachment
reprezentuje instancję multimediów (plik) dołączonych do wiadomości. Zasób Attachment
zawiera metadane dotyczące załącznika, takie jak miejsce jego zapisu.
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 swojej aplikacji do obsługi czatu.
- Zainstaluj bibliotekę klienta interfejsu API Google dla języka Python.
-
Utwórz identyfikator klienta OAuth dla aplikacji komputerowej. Aby uruchomić przykładowy skrypt w tym przewodniku, zapisz dane logowania jako plik JSON o nazwie
client_secrets.json
w katalogu lokalnym.
- Wybierz zakres autoryzacji, który obsługuje uwierzytelnianie użytkowników.
Przesyłanie jako załącznik pliku
Aby przesłać multimedia i dołączyć je do wiadomości, podaj te informacje w prośbie:
- Określ zakres autoryzacji
chat.messages.create
lubchat.messages
. - wywołać te metody Google Chat:
- Aby przesłać plik, wywołaj metodę
upload
zasobuMedia
.- Ustaw wartość
parent
na nazwę pokoju, w którym znajduje się plik. - W polu
body
(treść żądania) ustaw wartośćfilename
na nazwę przesłanego załącznika. - Ustaw
media_body
jako instancję pliku do przesłania.
- Ustaw wartość
- Aby utworzyć wiadomość z załączonym przesłanym plikiem, wywołaj metodę
create
w zasobieMessages
.- Ustaw wartość
attachment
jako odpowiedź na wywołanie metodyupload
w zasobieMedia
. Poleattachment
może zawierać listę.
- Ustaw wartość
- Aby przesłać plik, wywołaj metodę
W tym przykładzie przesyłamy plik graficzny PNG i dołączamy go do wiadomości.
Python
- W katalogu roboczym utwórz plik o nazwie
chat_media_and_attachment_upload.py
. Dodaj do pliku
chat_media_and_attachment_upload.py
ten kod: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()
W kodzie zastąp
SPACE
nazwą pokoju, aby przesłać załącznik. Możesz ją uzyskać za pomocą metodyspaces.list
w interfejsie API czatu lub z adresu URL pokoju.W katalogu roboczym skompiluj i uruchom przykład:
python3 chat_media_and_attachment_upload.py
Interfejs Chat API zwraca treść odpowiedzi zawierającą attachmentDataRef
z informacjami o przesłanym pliku.
Ograniczenia i uwagi
Przygotowując się do przesyłania plików i dołączania ich do wiadomości, weź pod uwagę te limity i ograniczenia:
- Możesz przesyłać pliki o rozmiarze do 200 MB.
- Niektóre typy plików nie są obsługiwane i nie można ich przesyłać. Szczegółowe informacje znajdziesz w artykule Typy plików blokowane w Google Chat.
- Wiadomość nie może zawierać widżetów akcesoriów.