Solicitações

As solicitações definem como a Ação renderiza as respostas aos usuários e como ela faz com que eles continuem. Ao criar a ação, você pode adicionar comandos a invocações e a vários locais nas cenas. As solicitações podem ser simples, como uma resposta de texto ou fala, ou podem ser mais complexas e ter conteúdo avançado, como cards, imagens e tabelas.

Tipos de resposta

Para cada solicitação, você pode selecionar entre uma variedade de tipos de resposta envolventes para o Google Assistente apresentar aos usuários:

  • Respostas simples: as respostas simples assumem a forma de um balão de chat visualmente e usam a conversão de texto em voz (TTS, na sigla em inglês) ou a Linguagem de marcação de síntese de fala (SSML, na sigla em inglês) para som. As respostas simples são as únicas com suporte em todos os tipos de dispositivos.
  • Respostas avançadas: as respostas avançadas contêm elementos visuais ou funcionais que melhoram as interações do usuário com suas ações. Com respostas avançadas, também é possível exibir dados tabulares ou reproduzir conteúdo de áudio mais longo.
  • Respostas de seleção visual: as respostas de seleção visual oferecem uma interface visual para os usuários escolherem entre várias opções que são mais facilmente diferenciadas pelo título ou por uma imagem.
  • Respostas de mídia: as respostas de mídia permitem que suas ações reproduzam conteúdo de áudio de formato mais longo que SSML e forneçam um componente visual com controles de mídia.
  • Tela interativa: a tela interativa renderiza as respostas como visualizações da Web em tela cheia e funciona como um app da Web interativo que o Google Assistente envia como uma resposta ao usuário na conversa. O Canvas usa um formato de comando um pouco diferente para acomodar a flexibilidade adicional dos padrões da Web, como HTML, CSS e JavaScript.

Cada um desses tipos de resposta usa o mesmo formato de comando base e tem acesso aos mesmos recursos gerais descritos abaixo.

Formato de um comando

No seu projeto do Actions, você define comandos no formato YAML ou JSON. Cada prompt pode conter até duas respostas simples e, opcionalmente, definir uma resposta avançada. As respostas são definidas das seguintes maneiras:

  • first_simple: resposta inicial de texto ou fala (simples) a ser enviada ao usuário.
  • content: conteúdo complementar de resposta avançada para enviar depois de respostas simples.
  • last_simple Resposta de texto ou fala final (simples) a ser enviada ao usuário.
  • canvas: referencia um app da Web que se integra à tela interativa.

Por padrão, os comandos são anexados uns aos outros na ordem acima em uma fila de solicitações. Antes que o usuário possa responder, o Google Assistente apresenta todas as solicitações na fila.

Além disso, você oferece flexibilidade ao comando usando os seguintes recursos:

  • Candidatos: permitem que você defina respostas com base nos recursos do dispositivo de um usuário. Por exemplo, você pode fazer com que o Google Assistente mostre respostas avançadas somente quando um usuário interagir com a ação em um dispositivo compatível com telas.
  • Variantes: são variações alternativas de uma única mensagem. Por exemplo, você pode pedir ao Google Assistente para escolher entre cinco variantes de mensagens de boas-vindas sempre que um usuário invocar sua ação.
  • Sugestões: quando o Google Assistente mostra a solicitação, os usuários recebem chips de sugestões em dispositivos compatíveis com telas.

Um comando padrão usa um candidato, uma variante e uma resposta first_simple.

Candidatos

Em uma solicitação, o objeto candidates permite definir respostas com base nos recursos do dispositivo do usuário. Por exemplo, você pode fazer com que o Google Assistente mostre respostas avançadas somente quando um usuário interagir com a ação em um dispositivo compatível com telas. Para definir os tipos de dispositivos em que o Google Assistente pode retornar um candidato, use a propriedade selector do objeto candidates.

No exemplo abaixo, a propriedade selector contém as informações de capacidade do dispositivo. As solicitações definidas no primeiro candidato são enviadas aos usuários em um dispositivo que pode renderizar respostas avançadas. O segundo candidato contém solicitações para usuários que só podem receber respostas de texto e fala.

YAML

candidates:
  - selector:
      surface_capabilities:
        capabilities:
          - RICH_RESPONSE
    first_simple:
      variants:
        - speech: Here's a simple message.
    content:
      card:
        title: Image card title
        text: Some details about the image
        image:
          url: 'https://www.example.com/image/'
  - first_simple:
      variants:
        - speech: Text explains what the image might have shown in more detail.
    

JSON

{
  "candidates": [{
    "selector": {
      "surface_capabilities": {
        "capabilities": ["RICH_RESPONSE"]
      }
    },
    "first_simple": {
      "variants": [{
        "speech": "Here's a simple message."
      }]
    },
    "content": {
      "card": {
        "title": "Image card title",
        "text": "Some details about the image",
        "image": {
          "url": "https://www.example.com/image/"
        }
      }
    }
  }, {
    "first_simple": {
      "variants": [{
        "speech": "Text explains what the image might have shown in more detail."
      }]
    }
  }]
}
    

É possível fornecer um ou mais requisitos de habilidade para um determinado candidato. A lista a seguir descreve cada um dos requisitos de recurso disponíveis:

  • SPEECH: o dispositivo pode falar com o usuário por conversão de texto em voz ou SSML.
  • RICH_RESPONSE: o dispositivo pode mostrar respostas avançadas, como cards, listas e tabelas.
  • LONG_FORM_AUDIO: o dispositivo pode tocar mídias de áudio mais longas, como músicas e podcasts.
  • INTERACTIVE_CANVAS: o dispositivo pode mostrar uma resposta de tela interativa.
  • WEB_LINK: o dispositivo pode usar links da Web em respostas avançadas para abrir um navegador da Web.
  • HOME_STORAGE: o dispositivo pode armazenar e acessar dados do armazenamento doméstico.

Variantes

As variantes oferecem uma maneira de definir várias versões de uma resposta. Quando o Google Assistente envia a solicitação a um usuário, uma das variantes é escolhida aleatoriamente. Como prática recomendada no design de conversas, forneça respostas alternativas aos usuários quando eles conversarem com a ação.

Por exemplo, forneça variantes de mensagem de boas-vindas diferentes para que os usuários não ouçam a mesma resposta sempre que invocarem a ação:

YAML

candidates:
  - first_simple:
      variants:
        - speech: Hello.
        - speech: Hi there.
        - speech: Welcome.
    

JSON

{
  "candidates": [{
    "first_simple": {
      "variants": [{
        "speech": "Hello."
      },{
        "speech": "Hi there."
      },{
        "speech": "Welcome."
      }]
    }
  }]
}
    

Sugestões

Exemplo de ícones de sugestão em um smart display

As Sugestões oferecem aos usuários em dispositivos compatíveis com a tela ícones de sugestão quando o Google Assistente mostra a solicitação. Use ícones de sugestão para sugerir respostas do usuário para continuar ou mudar a conversa. Quando tocado, um ícone de sugestão retorna o texto mostrado para a conversa na íntegra, como se o usuário tivesse digitado o texto.

Você pode ter no máximo 8 sugestões em um único prompt, cada uma com um comprimento máximo de 25 caracteres de texto simples.

Para adicionar uma sugestão, forneça um objeto Suggestion que contenha cada sugestão em um campo title separado. Cada título precisa ser único entre o conjunto de ícones de sugestão. No Actions Builder, esse objeto é representado em YAML e JSON como suggestions.

Por exemplo, você pode dar sugestões de "Sim" e "Não" junto com uma pergunta:

YAML

candidates:
  - first_simple:
      variants:
        - speech: 'Welcome, do you want to play a game?'
    suggestions:
      - title: 'Yes'
      - title: 'No'
    

JSON

{
  "candidates": [{
    "first_simple": {
      "variants": [{
        "speech": "Welcome, do you want to play a game?"
      }]
    },
    "suggestions": [{
      "title": "Yes"
    }, {
      "title": "No"
    }]
  }]
}