Cenas

Em combinação com intents, as cenas são o outro elemento importante do seu modelo de conversa. As cenas representam estados individuais da conversa, e o principal objetivo delas é organizar a conversa em blocos lógicos, executar tarefas e retornar solicitações aos usuários.

Alguns recursos das cenas incluem:

  • Execução em loop: as cenas são executadas dentro de uma repetição até atender aos critérios de transição definidos. Isso permite criar fluxos de lógica de controle com muito mais eficiência em um único cenário.
  • Separação de caixas de diálogo: em combinação com intents, as cenas permitem agrupar caixas de diálogo em blocos lógicos, oferecendo maneiras fáceis de criar pares de solicitação de usuário e respostas de ação.
  • Escopo da correspondência de intent: como apenas um cenário pode estar ativo por vez, é possível definir o escopo da correspondência de intent para as cenas que você escolher e fazer com que elas correspondam apenas quando essas cenas estiverem ativas.
  • Preenchimento de slot: você pode usar o preenchimento de slots em uma cena para coletar várias partes da entrada digitada do usuário, sem precisar criar diversas intents
  • Condições de local: é possível verificar slots, sessão, usuário e armazenamento em casa para realizar uma lógica condicional simples sem acionar um webhook.

É possível definir cenas como parte do seu modelo conversacional como uma cena personalizada. A lógica de conversa do Google Assistente também inclui cenas do sistema, que oferecem a funcionalidade padrão para sua conversa.

Cenas personalizadas

Uma cena personalizada é um elemento básico da lógica conversacional que faz parte do modelo de conversa da sua Ação. As cenas personalizadas têm estágios que definem como e quando ela começa, o que é chamado de Ativação, o processamento de conversação executado, chamado de ciclo de vida de execução, e como a cena termina, chamada de Transição:

  • Ativação: antes que uma cena possa ser executada, você precisa ativá-la com uma correspondência de intent global ou transição de cena.
  • Execução: quando uma cena está ativa, ela é executada em um ciclo de vida bem definido que permite realizar várias tarefas, como preenchimento de slots, verificação condicional, geração de comandos e acionamento de eventos de webhook.
  • Transição: quando uma cena atende aos critérios que você define, como corresponder a uma intent ou concluir o preenchimento de slots, é possível fazer a transição para outra cena para executar ainda mais lógica. Como alternativa, você pode fazer a transição para a cena do sistema Encerrar conversa, que encerra a conversa com o usuário.
Figura 1. Uma transição de cena comum. Uma intent global ativa uma cena durante a invocação. Ela consome a entrada do usuário e corresponde a uma intent, que faz a transição e ativa outra cena.

Na prática

Antes que uma cena possa ser executada, ela precisa estar ativa. Somente um cenário pode estar ativo a qualquer momento. Você pode ativar cenas das seguintes maneiras:

  • Invocação: quando a entrada do usuário corresponde ao modelo de idioma de uma intent global, é possível ativar uma cena para processar a invocação.
  • Transição de cena estática: quando uma cena atende aos critérios de transição, é possível definir uma transição para outra.
  • Transição de cena dinâmica: em um gerenciador de webhook, é possível fazer a transição programática para outro cenário.

Ciclo de vida da execução

Quando uma cena está ativa, ela é executada dentro de um ciclo de vida bem definido que se repete até que a cena atenda aos critérios de transição definidos. O ciclo de vida de execução de uma cena é separado em estágios opcionais que são executados na seguinte ordem:

  1. Ao entrar: esta etapa é executada apenas uma vez, quando um cenário é ativado. Você pode acionar um webhook ou solicitar que o usuário configure sua cena uma única vez.

  2. Condições: as condições permitem avaliar determinados critérios antes de avançar os estágios do ciclo de vida, acionar um webhook ou enviar solicitações. Esse estágio pode definir critérios de transição para sair do loop de execução.

  3. Preenchimento de slot: um cenário pode solicitar automaticamente os usuários até coletar todos os slots necessários (dados digitados). Um cenário solicita um único slot cada vez no loop de execução. Se houver algum slot faltando, o ciclo de vida da cena voltará para o estágio de preenchimento de slot e solicitará o próximo slot necessário. Esse estágio pode definir critérios de transição para sair do loop de execução.

  4. Prompts: o Google Assistente entrega a fila de solicitações ao usuário e limpa a fila. Ela é a coleção mesclada de solicitações que foram agregadas desde a última vez em que este estágio limpou a fila.

  5. Entrada: o Google Assistente consome e retorna a entrada do usuário na cena para que você possa processá-la, o que pode incluir correspondência de intents (intents globais ou intents do usuário em uma cena), continuar o preenchimento de slots (se não estiver completo) ou processar erros de ausência ou correspondência. Esse estágio pode definir critérios de transição para sair do loop de execução. Se a transição não ocorre, o loop de execução retorna ao estágio de condições.

Figura 2. Ciclo de vida da execução da cena

As seções a seguir descrevem cada etapa do ciclo de vida em mais detalhes.

Ao inserir

Ao entrar, é o único estágio que não pode ser executado no loop de execução de uma cena. Ele faz uma inicialização única do seu cenário na seguinte ordem:

  • Se o ambiente de execução do Google Assistente puder preencher qualquer slot de uma intent correspondente anteriormente, ele vai fazer isso agora para preparar a cena para o estágio de preenchimento de slots. Por exemplo, algumas entradas do usuário podem corresponder a uma intent e fornecer um slot. Essa correspondência de intent ativa uma cena e pode preencher um slot em uma cena se os nomes de slot forem correspondentes.
  • Quando um webhook está ativado, ele aciona um evento de forma síncrona e aguarda uma resposta do serviço da Web.
  • Quando o ambiente de execução recebe uma resposta de webhook, ele resolve todas as referências de parâmetro nos comandos, seleciona um candidato a prompt com base na superfície do usuário e seleciona uma variante a ser enviada ao usuário posteriormente.
  • Se a resposta do webhook tiver um comando, ele o adicionará à fila. Se um prompt estático também existir, ele será mesclado com a fila de prompts primeiro, seguido pelo prompt estático.
  • Se a resposta do webhook tiver uma transição, ela fará isso agora. Caso contrário, a cena continua para o estágio de preenchimento do slot.

Condições

Com as condições, você verifica os dados de sessão, usuário ou slot para confirmar que uma condição é verdadeira. Por exemplo, você pode verificar se todos os slots estão preenchidos e definir isso como um critério de transição para outra cena e processar os slots.

  • O ambiente de execução do Google Assistente avalia cada condição na ordem em que elas são especificadas. A primeira condição avaliada como true executa o gerenciador associado e interrompe a avaliação das condições.
  • Uma condição else if scene.slots.status = "FINAL" será adicionada automaticamente à lista de condições se você fizer o preenchimento de slots. Essa condição opcional verifica se o preenchimento de slots foi concluído e pode acionar um webhook ou adicionar solicitações à fila de solicitações.

Após a avaliação da condição, se a cena não definir uma transição, ela vai continuar para o preenchimento de slots.

Preenchimento de slots

Este estágio adiciona um prompt de slot para um único espaço não preenchido e obrigatório. Se você não definir nenhum slot na cena, esta etapa não fará nada.

  • O ambiente de execução do Google Assistente seleciona o primeiro slot não preenchido e adiciona a solicitação correspondente à fila. Como os loops de execução da cena se repetem, outros slots não preenchidos são processados mais tarde, quando o loop de execução retorna a este estágio.
  • O slot ativo atual pode ter solicitações de tratamento de erros que substituem as definidas no estágio de entrada do cenário.
  • Quando o usuário preenche um slot, você pode validá-lo em um serviço da Web acionando um webhook.

Solicitações

O ambiente de execução do Google Assistente envia a fila de solicitações ao usuário, limpa a fila e consome a entrada do usuário.

Entrada

O ambiente de execução do Google Assistente tenta associar a entrada a uma intent ou slot:

  • No caso de uma correspondência de intent do usuário, a cena executa o gerenciador de intent associado (intent de usuário ou do sistema). O gerenciador de intents de um cenário tem prioridade sobre qualquer intent global. Se você não definiu uma transição, a execução da cena retorna ao estágio de condições.
  • No caso de uma correspondência no slot, a cena retorna ao estágio de preenchimento do slot.
  • No caso de uma correspondência de intent do sistema (por exemplo, sem entrada ou sem correspondência), é possível adicionar solicitações à fila de solicitações, acionar um webhook ou fazer a transição. No caso de várias solicitações sem correspondência definidas, o ambiente de execução do Google Assistente vai escolher as mais relevantes, na seguinte ordem: preenchimento de slot, cena e, em seguida, solicitações sem correspondência globais. Sem correspondências consecutivas geram um evento correspondente:

    • no_match_1
    • no_match_2
    • no_match_final

    Cada nível sem correspondência (preenchimento de slot, cena e global) pode acionar eventos de webhook. Por padrão, a terceira e última correspondência encerram a conversa.

Transição

As transições podem acontecer nos seguintes estágios:

  • Condições: você pode fazer a transição para outro cenário com base nas condições que definir. Uma condição comum que precisa ser verificada é a conclusão do preenchimento de slots.
  • Entrada (correspondência de intent do usuário): se uma intent corresponder, ela poderá acionar uma transição para outro cenário.
  • Entrada (correspondência de intent do sistema): é possível acionar webhooks durante qualquer evento de correspondência de intent do sistema. Se não houver correspondência ou eventos de entrada, a cena, por padrão, fará a transição para a cena Encerrar conversa após três ocorrências.

Cenas do sistema

As cenas do sistema permitem usar a lógica de conversação integrada fornecida pelo Google Assistente, que permite adicionar fluxos de conversa padrão à experiência do usuário. Por exemplo, a cena do sistema de vinculação de contas permite que o Google Assistente assuma momentaneamente o fluxo de vinculação da conta, retornando as informações necessárias para vincular as contas do usuário. As cenas do sistema não seguem o ciclo de vida padrão da cena.

A lista a seguir descreve cenários do sistema compatíveis e como usá-los:

  • Encerrar conversa: fecha o microfone e encerra a conversa com o usuário. O Google Assistente volta a controlar a experiência do usuário após a execução dessa cena.
  • Vinculação de contas: orienta o usuário por um fluxo de vinculação de conta e fornece às suas Ações as informações necessárias para vincular a conta do usuário nos seus servidores de back-end com a Conta do Google do usuário. Consulte a documentação sobre vinculação de conta para mais informações sobre como usar esse cenário.
  • Atualizações diárias: orienta o usuário em um fluxo de confirmação para adicionar suas ações às atualizações diárias dele. Consulte a documentação de atualizações diárias para mais informações sobre como usar esse cenário.
  • Notifications: orienta o usuário por um fluxo de confirmação para receber notificações das suas ações. Consulte a documentação de notificações push para mais informações sobre como usar esse cenário.