В этом руководстве объясняется, как использовать метод upload на ресурсе Media API Google Chat для загрузки медиафайла (файла) в Google Chat, а затем прикрепить его к сообщению.
 Когда пользователь отправляет сообщение в ваше приложение, Google Chat отправляет событие взаимодействия MESSAGE . Событие взаимодействия, полученное вашим приложением, включает тело запроса, представляющее собой полезную нагрузку JSON, представляющую событие взаимодействия, включая любые вложения. Данные во вложении различаются в зависимости от того, является ли вложение загруженным контентом (локальным файлом) или файлом, хранящимся на Диске. Ресурс Media представляет собой файл, загруженный в Google Chat, такой как изображения, видео и документы. Ресурс Attachment представляет собой экземпляр медиафайла (файла), прикрепленного к сообщению. Ресурс Attachment содержит метаданные о вложении, например, место его сохранения.
Предпосылки
Питон
- Учетная запись Google Workspace Business или Enterprise с доступом к Google Chat .
 
-  Настройте свою среду:
- Создайте проект Google Cloud .
 - Настройте экран согласия OAuth .
 - Включите и настройте API Google Chat, указав имя, значок и описание для вашего приложения Chat.
 - Установите клиентскую библиотеку Python Google API .
 -  Создайте учётные данные OAuth-клиента для настольного приложения. Чтобы запустить пример из этого руководства, сохраните учётные данные в виде JSON-файла с именем 
credentials.jsonв локальном каталоге. 
 - Выберите область авторизации , поддерживающую аутентификацию пользователя.
 
Загрузить как прикрепленный файл
Чтобы загрузить медиафайлы и прикрепить их к сообщению, передайте в запросе следующее:
-  Укажите область авторизации 
chat.messages.createилиchat.messages. -  Вызовите следующие методы Google Chat:
-  Чтобы загрузить файл, вызовите метод 
uploadна ресурсеMedia.-  Установите в 
parentимя пространства, в котором размещен файл. -  В 
bodyзапроса (body) укажите в качестве имениfilenameимя загруженного вложения. -  Установите 
media_bodyкак экземпляр файла для загрузки. 
 -  Установите в 
 -  Чтобы создать сообщение с прикрепленным загруженным файлом, вызовите метод 
createна ресурсеMessages.-  Установите 
attachmentв качестве ответа на вызов методаuploadресурсаMedia. Полеattachmentпринимает список. 
 -  Установите 
 
 -  Чтобы загрузить файл, вызовите метод 
 
В следующем примере загружается файл изображения PNG и прикрепляется к сообщению.
Питон
-  В рабочем каталоге создайте файл с именем 
chat_media_and_attachment_upload.py. Включите следующий код в
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( 'credentials.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()В коде замените
SPACEна имя пространства, в которое нужно загрузить вложение. Его можно получить из методаspaces.listв Chat API или из URL-адреса пространства.В вашем рабочем каталоге соберите и запустите пример:
python3 chat_media_and_attachment_upload.py
API чата возвращает тело ответа, содержащее attachmentDataRef с подробностями загруженного файла.
Ограничения и соображения
Готовясь загружать файлы и прикреплять их к сообщениям, обратите внимание на следующие ограничения и соображения:
- Вы можете загрузить файл размером до 200 МБ.
 - Некоторые типы файлов не поддерживаются и не могут быть загружены. Подробнее см. в разделе Типы файлов, заблокированные в Google Chat .
 - В вашем сообщении не должно быть дополнительных виджетов .