As respostas avançadas adicionam elementos visuais para melhorar as interações do usuário com sua ação. É possível usar os seguintes tipos de resposta avançada como parte de um prompt:
- Cartão básico
- Card de imagem
- Cartão de tabela
Ao definir uma resposta avançada, use um candidato com o recurso de superfície
RICH_RESPONSE
para que o Google Assistente retorne apenas a resposta aprimorada nos
dispositivos compatíveis. Só é possível usar uma resposta avançada por objeto content
em uma
solicitação.
Cartão básico
Os cartões básicos são projetados para ser concisos, apresentar informações importantes (ou resumidas) aos usuários e permitir que eles saibam mais, se você quiser (usando um link da Web).
Use cards básicos principalmente para fins de exibição, já que eles não têm recursos de interação
sem um botão. Para vincular um botão à Web, uma superfície também
precisa ter o recurso WEB_LINK
.

Propriedades
O tipo básico de resposta do cartão tem as seguintes propriedades:
Propriedade | Tipo | Requisito | Descrição |
---|---|---|---|
title |
string | Opcional | Título do texto sem formatação do cartão. Os títulos são de fontes e tamanhos fixos, e os caracteres após a primeira linha são truncados. A altura do card será recolhida se nenhum título for especificado. |
subtitle |
string | Opcional | Subtítulo de texto simples do cartão. Os títulos são de fontes e tamanhos fixos, e os caracteres depois da primeira linha são truncados. A altura do card será recolhida se nenhuma legenda for especificada. |
text |
string | Condicional |
Conteúdo de texto simples do cartão. Textos muito longos aparecem truncados na última quebra de palavra com reticências. Essa propriedade é obrigatória, a menos que
Essa propriedade tem as seguintes restrições:
Um subconjunto limitado de Markdown é compatível:
|
image |
Image |
Opcional | Imagem exibida no card. As imagens podem ser JPG, PNG e GIF (animadas e não animadas). |
image_fill |
ImageFill |
Opcional | Borda entre o card e o contêiner de imagem a ser usado quando a proporção não corresponder à do contêiner de imagem. |
button |
Link |
Opcional | Botão que vincula o usuário a um URL ao ser tocado. O botão precisa ter uma propriedade name que contenha o texto do botão e uma propriedade url que contenha o URL do link. O texto do botão pode não ser enganoso e é verificado durante o processo de revisão. |
Exemplo de código
YAML
candidates: - first_simple: variants: - speech: This is a card. text: This is a card. content: card: title: Card Title subtitle: Card Subtitle text: Card Content image: url: 'https://developers.google.com/assistant/assistant_96.png' alt: Google Assistant logo
JSON
{ "candidates": [ { "first_simple": { "variants": [ { "speech": "This is a card.", "text": "This is a card." } ] }, "content": { "card": { "title": "Card Title", "subtitle": "Card Subtitle", "text": "Card Content", "image": { "url": "https://developers.google.com/assistant/assistant_96.png", "alt": "Google Assistant logo" } } } } ] }
Node.js (link em inglês)
app.handle('Card', conv => { conv.add('This is a card.'); conv.add(new Card({ "title": "Card Title", "subtitle": "Card Subtitle", "text": "Card Content", "image": new Image({ url: 'https://developers.google.com/assistant/assistant_96.png', alt: 'Google Assistant logo' }) })); });
JSON
{ "responseJson": { "session": { "id": "session_id", "params": {} }, "prompt": { "override": false, "content": { "card": { "title": "Card Title", "subtitle": "Card Subtitle", "text": "Card Content", "image": { "alt": "Google Assistant logo", "height": 0, "url": "https://developers.google.com/assistant/assistant_96.png", "width": 0 } } }, "firstSimple": { "speech": "This is a card.", "text": "This is a card." } } } }
Cards de imagem
Os cartões de imagem foram criados para ser uma alternativa mais simples a um cartão básico que também contém uma imagem. Use um cartão de imagem quando quiser apresentar uma imagem e não precisar oferecer compatibilidade com texto ou componentes interativos.
Propriedades
O tipo de resposta do cartão de imagem tem as seguintes propriedades:
Propriedade | Tipo | Requisito | Descrição |
---|---|---|---|
url |
string | Obrigatório | URL de origem da imagem. As imagens podem estar nos formatos JPG, PNG ou GIF (animado e não animado). |
alt |
string | Obrigatório | Descrição do texto da imagem a ser usada para acessibilidade. |
height |
int32 | Opcional | Altura da imagem em pixels. |
width |
int32 | Opcional | Largura da imagem, em pixels. |
Exemplo de código
YAML
candidates: - first_simple: variants: - speech: This is an image prompt. text: This is an image prompt. content: image: alt: Google Assistant logo url: 'https://developers.google.com/assistant/assistant_96.png'
JSON
{ "candidates": [ { "first_simple": { "variants": [ { "speech": "This is an image prompt.", "text": "This is an image prompt." } ] }, "content": { "image": { "alt": "Google Assistant logo", "url": "https://developers.google.com/assistant/assistant_96.png" } } } ] }
Node.js (link em inglês)
app.handle('Image', conv => { conv.add("This is an image prompt!"); conv.add(new Image({ url: 'https://developers.google.com/assistant/assistant_96.png', alt: 'Google Assistant logo' })); });
JSON
{ "responseJson": { "session": { "id": "session_id", "params": {} }, "prompt": { "override": false, "content": { "image": { "alt": "Google Assistant logo", "height": 0, "url": "https://developers.google.com/assistant/assistant_96.png", "width": 0 } }, "firstSimple": { "speech": "This is an image prompt.", "text": "This is an image prompt." } } } }
Cards de tabela
Com eles, é possível exibir dados tabulares na resposta, como classificações esportivas, resultados eleitorais e voos. Você pode definir colunas e linhas (até três cada) que o Google Assistente mostra no card da tabela. Também é possível definir colunas e linhas adicionais, além da priorização.

As tabelas exibem dados estáticos e não são interativas. Para respostas interativas de seleção, use uma resposta visual de seleção.
Propriedades
O tipo de resposta do cartão de tabela tem as seguintes propriedades:
Propriedade | Tipo | Requisito | Descrição |
---|---|---|---|
title |
string | Condicional | Título do texto simples da tabela. Essa propriedade será obrigatória se subtitle for definido. |
subtitle |
string | Opcional | Subtítulo de texto simples da tabela. As legendas nos cards de tabela não são afetadas pela personalização do tema. |
columns |
matriz de TableColumn |
Obrigatório | Cabeçalhos e alinhamento de colunas. Cada objeto TableColumn descreve o cabeçalho e o alinhamento de uma coluna diferente na mesma tabela. |
rows |
matriz de TableRow |
Obrigatório |
Dados de linha da tabela. As três primeiras linhas são garantidas, mas outras podem não aparecer em determinadas plataformas. Você pode testar com o simulador para ver quais linhas são mostradas para uma determinada superfície. Cada objeto |
image |
Image |
Opcional | Imagem associada à tabela. |
button |
Link |
Opcional | Botão que vincula o usuário a um URL ao ser tocado. O botão precisa ter uma propriedade name que contenha o texto do botão e uma propriedade url que contenha o URL do link. O texto do botão pode não ser enganoso e é verificado durante o processo de revisão.
|
Exemplo de código
Os snippets a seguir mostram como implementar um cartão de tabela:
YAML
candidates: - first_simple: variants: - speech: This is a table. text: This is a table. content: table: title: Table Title subtitle: Table Subtitle columns: - header: Column A - header: Column B - header: Column C rows: - cells: - text: A1 - text: B1 - text: C1 - cells: - text: A2 - text: B2 - text: C2 - cells: - text: A3 - text: B3 - text: C3 image: alt: Google Assistant logo url: 'https://developers.google.com/assistant/assistant_96.png'
JSON
{ "candidates": [ { "first_simple": { "variants": [ { "speech": "This is a table.", "text": "This is a table." } ] }, "content": { "table": { "title": "Table Title", "subtitle": "Table Subtitle", "columns": [ { "header": "Column A" }, { "header": "Column B" }, { "header": "Column C" } ], "rows": [ { "cells": [ { "text": "A1" }, { "text": "B1" }, { "text": "C1" } ] }, { "cells": [ { "text": "A2" }, { "text": "B2" }, { "text": "C2" } ] }, { "cells": [ { "text": "A3" }, { "text": "B3" }, { "text": "C3" } ] } ], "image": { "alt": "Google Assistant logo", "url": "https://developers.google.com/assistant/assistant_96.png" } } } } ] }
Node.js (link em inglês)
app.handle('Table', conv => { conv.add('This is a table.'); conv.add(new Table({ "title": "Table Title", "subtitle": "Table Subtitle", "image": new Image({ url: 'https://developers.google.com/assistant/assistant_96.png', alt: 'Google Assistant logo' }), "columns": [{ "header": "Column A" }, { "header": "Column B" }, { "header": "Column C" }], "rows": [{ "cells": [{ "text": "A1" }, { "text": "B1" }, { "text": "C1" }] }, { "cells": [{ "text": "A2" }, { "text": "B2" }, { "text": "C2" }] }, { "cells": [{ "text": "A3" }, { "text": "B3" }, { "text": "C3" }] }] })); });
JSON
{ "responseJson": { "session": { "id": "session_id", "params": {} }, "prompt": { "override": false, "content": { "table": { "button": {}, "columns": [ { "header": "Column A" }, { "header": "Column B" }, { "header": "Column C" } ], "image": { "alt": "Google Assistant logo", "height": 0, "url": "https://developers.google.com/assistant/assistant_96.png", "width": 0 }, "rows": [ { "cells": [ { "text": "A1" }, { "text": "B1" }, { "text": "C1" } ] }, { "cells": [ { "text": "A2" }, { "text": "B2" }, { "text": "C2" } ] }, { "cells": [ { "text": "A3" }, { "text": "B3" }, { "text": "C3" } ] } ], "subtitle": "Table Subtitle", "title": "Table Title" } }, "firstSimple": { "speech": "This is a table.", "text": "This is a table." } } } }
Como personalizar suas respostas
É possível alterar a aparência das suas respostas avançadas criando um tema personalizado para o projeto do Actions. Essa personalização pode ser útil para definir uma aparência exclusiva para a conversa quando os usuários invocam suas ações em uma superfície com uma tela.
Para definir um tema de resposta personalizado, faça o seguinte:
- No Console do Actions, acesse Desenvolver > Personalização do tema.
- Defina uma ou todas as opções a seguir:
- Cor do plano de fundo: usada como o plano de fundo dos seus cartões. Em geral, use uma cor clara para o plano de fundo para facilitar a leitura do conteúdo do cartão.
- Cor principal: é a cor principal do texto do cabeçalho e dos elementos da interface dos cartões. Em geral, use uma cor principal mais escura para contrastar melhor com a cor do plano de fundo.
- Família de fontes: descreve o tipo de fonte usado para títulos e outros elementos de texto em destaque.
- Estilo do canto da imagem: altera a aparência dos cantos dos seus cartões.
- Imagem de plano de fundo: imagem personalizada a ser usada no lugar da cor de fundo. Forneça duas imagens diferentes para quando o dispositivo de superfície estiver no modo paisagem ou retrato. Se você usar uma imagem de plano de fundo, a cor principal será definida como branco.
- Clique em Salvar.
