Em combinação com as intents, as cenas são o outro grande elemento do seu modelo de conversa. As cenas representam estados individuais da conversa e o objetivo principal é organizá-las 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 em um loop até que ele atenda aos critérios de transição definidos por você. Isso permite criar fluxos de lógica de controle com muito mais eficiência em uma única cena.
- 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 solicitações de usuários e pares de resposta de ação.
- Escopo de correspondência de intent: como somente uma cena pode estar ativa por vez, é possível definir o escopo de correspondência de intent para cenas de sua escolha e fazer com que elas correspondam apenas quando essas cenas estiverem ativas.
- Preenchimento de slot: você pode usar o preenchimento de slot em uma cena para coletar várias partes da entrada do usuário digitada, sem precisar criar várias intents.
- Condições no cenário: é possível verificar os slots, a sessão, o usuário e o armazenamento em casa para executar uma lógica simples e condicional sem acionar um webhook.
Você pode definir cenas como parte do seu modelo de conversa como uma cena personalizada. A lógica de conversa do Google Assistente também inclui cenas do sistema que oferecem funcionalidade padrão para sua conversa.
Cenas personalizadas
Uma cena personalizada é um elemento básico da lógica de conversa que faz parte do modelo de conversa da ação. As cenas personalizadas têm etapas que definem como e quando ela começa, chamada de Ativação, o processamento de conversas que ela realiza, chamado de Ciclo de vida da execução, e como a cena termina, chamada de Transição:
- Ativação: antes que uma cena possa ser executada, ela precisa ser ativada por 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 slot, verificação condicional, geração de solicitações e acionamento de eventos do webhook.
- Transição: quando uma cena atende a critérios definidos por você, como a correspondência de uma intent ou a conclusão do preenchimento de slot, é possível fazer a transição para outra cena para realizar ainda mais lógica. Como alternativa, você pode fazer a transição para a cena do sistema de Encerrar conversa, que encerra a conversa com o usuário.
Na prática
Para que uma cena possa ser executada, ela precisa estar ativa. Apenas uma cena pode estar ativa por vez. É possível 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, você pode definir uma transição para outra cena.
- Transição de cena dinâmica: em um gerenciador de webhook, é possível fazer a transição de forma programática para outra cena.
Ciclo de vida da execução
Quando uma cena está ativa, ela é executada em 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 da execução de uma cena é separado em etapas opcionais que são executadas na seguinte ordem:
Enter: esse estágio é executado apenas uma vez, quando uma cena é ativada. Você pode acionar um webhook ou solicitar que o usuário faça a configuração única da sua cena.
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. Este estágio pode definir critérios de transição para sair do loop de execução.
Preenchimento de slot: uma cena pode solicitar automaticamente os usuários até coletar todos os slots necessários (dados digitados). Uma cena solicita um único slot cada vez que passa pelo loop de execução. Se faltar algum slot, o ciclo de vida da cena retornará ao estágio de preenchimento de slot e solicitará o próximo slot necessário. Este estágio pode definir critérios de transição para sair do loop de execução.
Solicitações: o Google Assistente fornece a fila de solicitações ao usuário e a limpa. A fila de solicitações é a coleção mesclada de solicitações agregadas desde a última vez que esse estágio limpou a fila.
Entrada: o Google Assistente consome e retorna a entrada do usuário à sua cena para que você possa processá-la, o que pode incluir correspondência de intents (intents globais ou de usuário em uma cena), preenchimento contínuo do slot (se não estiver concluído) ou processamento de nenhuma correspondência ou nenhum erro de entrada. Esse estágio pode definir critérios de transição para sair do loop de execução. Se não for feito a transição, o loop de execução retornará ao estágio de condições.
As seções a seguir descrevem cada estágio do ciclo de vida em mais detalhes.
Ao entrar
O "Enter" é o único estágio que não é executado no loop de execução de uma cena. Ela faz a inicialização única da sua cena na seguinte ordem:
- Se o ambiente de execução do Google Assistente puder preencher slots de uma intent correspondida anteriormente, ele vai preparar a cena para o estágio de preenchimento. 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 dos slots forem correspondentes.
- Se um webhook estiver ativado, ele acionará um evento de maneira síncrona e aguardará o serviço da Web para retornar uma resposta.
- Quando o ambiente de execução recebe uma resposta do webhook, ele resolve todas as referências de parâmetros em prompts e seleciona um candidato de prompt com base na plataforma do usuário e, em seguida, seleciona uma variante para o candidato enviar ao usuário mais tarde.
- Se a resposta do webhook tiver um prompt, ele o adicionará à fila. Se já houver um prompt estático, ele será mesclado à fila de solicitações, seguido pelo prompt estático.
- Se a resposta do webhook tiver uma transição, ela vai fazer isso agora. Caso contrário, a cena continua para o estágio de preenchimento de slot.
Condições
As condições permitem que você verifique os dados da sessão, do usuário ou do slot para uma condição verdadeira. Por exemplo, é possível verificar se todos os slots estão preenchidos e defini-los como um critério para fazer a transição para outra cena a fim de processar os slots.
- O ambiente de execução do Google Assistente avalia cada condição na ordem
especificada. 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ê preencher o slot. Essa condição opcional verifica se o preenchimento de slot foi concluído e pode acionar um webhook ou adicionar solicitações à fila.
Após a avaliação da condição, se a cena não definir uma transição, ela continuará preenchendo o preenchimento de slot.
Preenchimento de slot
Este estágio adiciona um prompt para um único slot não preenchido e obrigatório. Se você não definir nenhum slot na cena, esse estágio não terá efeito.
- 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 deixam de funcionar, outros slots não preenchidos são processados posteriormente quando o loop de execução retorna a esse estágio.
- O slot ativo atual pode ter solicitações de tratamento de erros que substituem as definidas no estágio de entrada da cena.
- Quando o usuário preenche um slot, é possível validá-lo em um serviço da Web acionando um webhook.
Instruções
O ambiente de execução do Google Assistente entrega a fila de solicitação ao usuário, limpa a fila e consome a entrada do usuário.
Input
O ambiente de execução do Google Assistente tenta corresponder a entrada a uma intent ou um slot:
- No caso de uma correspondência de intent do usuário, a cena executa o gerenciador de intent associado (intent do usuário ou do sistema). O gerenciador de intent de uma cena tem precedência sobre qualquer intent global. Se você não definiu uma transição, a execução da cena retornará o estágio "Conditions".
- No caso de uma correspondência de 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. Caso várias solicitações sem correspondência sejam definidas, o ambiente de execução do Google Assistente escolhe a mais relevante, na seguinte ordem: preenchimento de slot, cena e global sem solicitações de correspondência. Consecutiva sem correspondências 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 do webhook. Por padrão, a terceira e última correspondência não termina a conversa.
Transição
As transições podem acontecer nos seguintes estágios:
- Condições: é possível fazer a transição para outra cena com base nas condições definidas. Uma condição comum a ser verificada é o preenchimento de slots para ser concluído.
- Entrada (correspondência de intent do usuário): se uma intent corresponder, ela pode acionar uma transição para outra cena.
- Entrada (correspondência de intent do sistema): é possível acionar webhooks durante qualquer evento de correspondência de intent do sistema. Por padrão, sem correspondência e sem eventos de entrada, a cena faz a transição para a cena Encerrar conversa por padrão após três ocorrências.
Cenas do sistema
As cenas do sistema permitem que você use a lógica de conversa integrada do Google Assistente, que permite adicionar fluxos de conversa padrão à experiência do usuário. Por exemplo, o cenário do sistema de vinculação de contas permite que o Google Assistente assuma um momento para realizar o fluxo de vinculação de contas, 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.
A lista a seguir descreve as cenas do sistema com suporte e como usá-las:
- Encerrar conversa: fecha o microfone e encerra a conversa com o usuário. O Google Assistente assume o controle da experiência do usuário após a execução da cena.
- Vinculação de contas: orienta o usuário em um fluxo de vinculação de contas e fornece às ações as informações necessárias para vincular a conta do usuário nos servidores de back-end à Conta do Google. Consulte a documentação sobre vinculação de contas 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.
- Notificações: orienta o usuário em 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.