Além de mensagens de texto, os apps do Google Chat podem criar mensagens de card nos espaços e para os usuários. Os cards são compatíveis com um layout definido, elementos interativos da IU, como botões, e rich media, como imagens.
Use mensagens de cartão para fazer o seguinte:
- Apresentar informações detalhadas
- Coletar informações dos usuários
- Oriente os usuários a dar o próximo passo
Neste guia, descrevemos como criar mensagens de cartão de forma síncrona (uma resposta em tempo real para um evento do Google Chat, como receber uma mensagem de um usuário ou ser adicionada a um espaço) e de forma assíncrona (enviar uma mensagem do app para um espaço ou usuário sem uma solicitação usando a API Google Chat).
Pré-requisitos
Para criar as mensagens do cartão neste guia, você precisa do seguinte:
Node.js
- Uma conta do Google Workspace com acesso ao Google Chat.
- Um app de chat. Para criar um app de chat, siga este guia de início rápido.
Observação: as amostras de código Node.js neste guia são escritas para serem executadas como uma Função do Google Cloud.
Python
- Uma conta do Google Workspace com acesso ao Google Chat.
- Um app de chat. Para criar um app de chat, siga este guia de início rápido.
Observação: as amostras de código Python neste guia foram escritas para serem executadas como uma Função do Google Cloud usando o Python 3.9.
Apps Script
- Uma conta do Google Workspace com acesso ao Google Chat.
- Um app de chat. Para criar um app de chat, siga este guia de início rápido.
Anatomia de uma mensagem de card
Cada cartão, seja uma caixa de diálogo ou uma mensagem, é um objeto JSON no
recurso spaces.messages
na API Google Chat.
O objeto JSON do cartão consiste no seguinte:
- Uma matriz chamada
cardsV2[]
, que contém um ou mais objetosCardWithId
. - Um
cardId
, usado para identificar o cartão e o escopo de uma determinada mensagem. Cartões em mensagens diferentes podem ter o mesmo ID. Um objeto
card
, que consiste no seguinte:- Um objeto
header
que especifica itens como título, subtítulo e imagem no estilo avatar. - Um ou mais objetos
section
, cada um contendo pelo menos um widget. - Um ou mais objetos
widget
. Cada widget é um objeto composto que pode representar texto, imagens, botões e outros tipos de objetos.
- Um objeto
Como exemplo, observe os objetos header
, section
e widget
na seguinte mensagem do card:
O código a seguir representa o JSON da mensagem do cartão:
JSON
{
"cardsV2": [
{
"cardId": "unique-card-id",
"card": {
"header": {
"title": "Sasha",
"subtitle": "Software Engineer",
"imageUrl":
"https://developers.google.com/chat/images/quickstart-app-avatar.png",
"imageType": "CIRCLE",
"imageAltText": "Avatar for Sasha",
},
"sections": [
{
"header": "Contact Info",
"collapsible": true,
"uncollapsibleWidgetsCount": 1,
"widgets": [
{
"decoratedText": {
"startIcon": {
"knownIcon": "EMAIL",
},
"text": "sasha@example.com",
}
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PERSON",
},
"text": "<font color=\"#80e27e\">Online</font>",
},
},
{
"decoratedText": {
"startIcon": {
"knownIcon": "PHONE",
},
"text": "+1 (555) 555-1234",
}
},
{
"buttonList": {
"buttons": [
{
"text": "Share",
"onClick": {
"openLink": {
"url": "https://example.com/share",
}
}
},
{
"text": "Edit",
"onClick": {
"action": {
"function": "goToView",
"parameters": [
{
"key": "viewType",
"value": "EDIT",
}
],
}
}
},
],
}
},
],
},
],
},
}
],
}
Criar uma mensagem de cartão síncrona
Neste exemplo, o usuário cria uma mensagem no app Chat e o app responde enviando uma mensagem de cartão simples e síncrona mostrando o nome e a imagem de avatar do remetente:
Nas amostras de código a seguir, os aplicativos Node.js e Python são hospedados no Google Cloud Functions. O exemplo do Apps Script está hospedado no Google Apps Script.
Para instruções completas que descrevem como criar e implantar um app de chat, consulte Criar um app de chat.
Node.js
Python
Apps Script
Criar uma mensagem de cartão assíncrona com a API Chat
Este exemplo cria de maneira assíncrona uma mensagem com a API Chat e a envia para um espaço a que o app Chat é adicionado:

Python
- No diretório de trabalho, crie um arquivo chamado
chat_create_card_message.py
. Inclua o seguinte código em
chat_create_card_message.py
:from httplib2 import Http from oauth2client.service_account import ServiceAccountCredentials from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ServiceAccountCredentials.from_json_keyfile_name( 'service_account.json', SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', http=CREDENTIALS.authorize(Http())) # Create a Chat message. result = chat.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. parent='spaces/SPACE', # The message to create. body= { 'cardsV2': [{ 'cardId': 'createCardMessage', 'card': { 'header': { 'title': 'A Card Message!', 'subtitle': 'Created with Chat REST API', 'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png', 'imageType': 'CIRCLE' }, 'sections': [ { 'widgets': [ { 'buttonList': { 'buttons': [ { 'text': 'Read the docs!', 'onClick': { 'openLink': { 'url': 'https://developers.google.com/chat' } } } ] } } ] } ] } }] } ).execute() print(result)
No código, substitua
SPACE
por um nome de espaço, que você pode acessar 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_create_card_message.py
Para saber mais sobre como trabalhar com mensagens na API Chat, consulte:
Abrir uma caixa de diálogo
As caixas de diálogo são interfaces em janelas que os cartões de chat abrem para interagir com os usuários. Para ajudar os usuários a concluir processos em várias etapas, os apps podem abrir caixas de diálogo sequenciais. Os apps podem abrir caixas de diálogo em resposta a um clique no botão em uma mensagem de card ou em resposta a um comando de barra.
As caixas de diálogo são úteis para muitos tipos de interações do usuário, incluindo:
- Coleta de informações dos usuários
- Como autenticar usuários com serviços da Web
- Como definir as configurações do app Chat
Neste exemplo, um app de chat abre uma caixa de diálogo para ajudar o usuário a criar um novo contato para o catálogo de endereços:
Para implementar caixas de diálogo, consulte Abrir caixas de diálogo.
Formatação de cards
Há algumas maneiras diferentes de formatar a aparência dos cartões.
Formatação de texto do card
Nos cards, a maioria dos campos de texto é compatível com a formatação básica de texto usando um pequeno subconjunto de tags HTML.
As tags compatíveis e a finalidade delas são mostradas na tabela a seguir:
Formato | Exemplo | Resultado renderizado |
---|---|---|
Negrito | "This is <b>bold</b>." |
Essa opção está em negrito. |
Itálico | "This is <i>italics</i>." |
Ela está em itálico. |
Sublinhado | "This is <u>underline</u>." |
Isso é um sublinhado. |
Tachado | "This is <s>strikethrough</s>." |
Isso é |
Cor da fonte | "This is <font color=\"#FF0000\">red font</text>." |
Esta é a fonte vermelha. |
Hiperlink | "This is a <a href=\"https://www.google.com\">hyperlink</a>." |
Este é um hiperlink. |
Tempo | "This is a time format: <time>2023-02-16 15:00</time>." |
Este é um formato de hora: . |
Nova linha | "This is the first line. <br> This is a new line. " |
Esta é a primeira linha. Esta é uma nova linha. |
O corpo do texto de uma mensagem básica é analisado com uma sintaxe de marcação diferente, otimizada para usuários humanos. Para detalhes, consulte Criar uma mensagem de texto.
Ícones integrados
Os widgets
DecoratedText
e
ButtonList
são compatíveis com o elemento icon
usado para especificar um dos ícones integrados disponíveis no Google Chat:
{ . . . "knownIcon": "TRAIN", . . . }
A tabela a seguir lista os ícones integrados que estão disponíveis para as mensagens do cartão:
AIRPLANE | MARCADORES | ||
ÔNIBUS | CAR (em inglês) | ||
RELÓGIO | CONFIRMATION_NUMBER_ICON (em inglês) | ||
DESCRIÇÃO | MOEDA | ||
EVENT_SEAT | |||
FLIGHT_ARRIVAL (em inglês) | FLIGHT_DEPARTURE (em inglês) | ||
HOTEL | HOTEL_ROOM_TYPE | ||
CONVIDAR | PIN_MAP | ||
ASSINATURA | MULTIPLE_PEOPLE | ||
PESSOA | TELEFONE | ||
RESTAURANT_ICON (em inglês) | SHOPPING_CART (em inglês) | ||
ESTRELA | LOJA | ||
INGRESSO | TREINAMENTO | ||
VIDEO_CAMERA (em inglês) | VIDEO_PLAY (em inglês) |
Ícones personalizados
Os widgets
DecoratedText
e
ButtonList
permitem usar os ícones integrados ou definir seus próprios ícones personalizados. Para
especificar um ícone personalizado, use o elemento iconUrl
, conforme mostrado aqui:
{ . . "iconUrl": "https://developers.google.com/chat/images/quickstart-app-avatar.png" . . }