Este guia explica como usar o método upload
no recurso Media
da
API Google Chat para fazer upload de mídia (um arquivo) no Google Chat e anexá-la a
uma mensagem.
Quando o usuário envia uma mensagem para seu app, o Google Chat envia um
evento de interação MESSAGE
.
O evento de interação recebido pelo app inclui um corpo de solicitação, que é o
payload JSON que representa o evento de interação, incluindo os anexos. Os
dados no anexo serão diferentes se o anexo for um
conteúdo enviado por upload (um arquivo local) ou se for um arquivo armazenado no Drive. O
recurso Media
representa um arquivo enviado por upload para o Google Chat, como imagens, vídeos e documentos.
O recurso Attachment
representa uma instância de mídia (um arquivo) anexada a uma mensagem. O recurso Attachment
inclui os metadados sobre o anexo, como
o local em que ele é salvo.
Pré-requisitos
Python
- Uma conta do Google Workspace para empresas ou empresas com acesso ao Google Chat.
- Configure o ambiente:
- Crie um projeto do Google Cloud.
- Configure a tela de consentimento OAuth.
- Ative e configure a API Google Chat com um nome, um ícone e uma descrição para seu app do Chat.
- Instale a biblioteca de cliente da API do Google para Python (link em inglês).
-
Crie credenciais do ID do cliente do OAuth para um aplicativo de computador. Para executar o exemplo neste
guia, salve as credenciais como um arquivo JSON chamado
client_secrets.json
no seu diretório local.
- Escolha um escopo de autorização que ofereça suporte à autenticação do usuário.
Fazer upload como um anexo de arquivo
Para fazer upload de mídia e anexá-la a uma mensagem, transmita o seguinte na solicitação:
- Especifique o escopo de autorização
chat.messages.create
ouchat.messages
. - Chame os seguintes métodos do Google Chat:
- Para fazer upload do arquivo, chame o
método
upload
no recursoMedia
.- Defina
parent
como o nome do espaço que hospeda o arquivo. - Em
body
(o corpo da solicitação), definafilename
como o nome do anexo do arquivo enviado. - Defina
media_body
como uma instância do arquivo a ser enviado.
- Defina
- Para criar uma mensagem com o arquivo enviado em anexo, chame o
método
create
no recursoMessages
.- Defina
attachment
como a resposta da chamada do métodoupload
no recursoMedia
. O campoattachment
aceita uma lista.
- Defina
- Para fazer upload do arquivo, chame o
método
O exemplo a seguir faz upload de um arquivo de imagem PNG e o anexa a uma mensagem.
Python
- No diretório de trabalho, crie um arquivo chamado
chat_media_and_attachment_upload.py
. Inclua o seguinte código em
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( '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()
No código, substitua
SPACE
pelo nome do espaço para fazer o upload do anexo, que pode ser encontrado no métodospaces.list
na API Chat ou no URL de um espaço.No diretório de trabalho, crie e execute o exemplo:
python3 chat_media_and_attachment_upload.py
A API Chat retorna um corpo de resposta contendo
attachmentDataRef
com detalhes sobre o arquivo enviado.
Limites e considerações
Ao se preparar para fazer upload de arquivos e anexá-los a mensagens, observe estes limites e considerações:
- É possível fazer o upload de arquivos de até 200 MB.
- Alguns tipos de arquivo não são aceitos e não podem ser enviados. Confira mais detalhes em Tipos de arquivo bloqueados no Google Chat.
- Sua mensagem precisa omitir widgets acessórios.