Um modelo de conversa define o que os usuários podem dizer sobre suas ações e como elas respondem aos usuários. Os principais elementos básicos do seu modelo de conversa são intents, tipos, cenas e solicitações. Depois que uma das ações é invocada, o Google Assistente encaminha o usuário a essa ação, que inicia uma conversa com o usuário, com base no seu modelo de conversa, que consiste em:
Solicitações de usuários válidas: para definir o que os usuários podem dizer para suas ações, crie uma coleção de intents que aumentem o PLN do Google Assistente, para que ele possa entender as solicitações específicas das suas ações. Cada intent define frases de treinamento que descrevem o que os usuários podem dizer para corresponder a essa intent. A PLN do Google Assistente expande essas frases de treinamento para incluir frases semelhantes, e a agregação dessas frases resulta no modelo de linguagem da intent.
Lógica de ação e respostas: as cenas processam intents, executam a lógica necessária e geram solicitações para retornar ao usuário.
Definir solicitações de usuário válidas
Para definir o que os usuários podem dizer para suas ações, use uma combinação de intents e tipos. As intents e tipos de usuários permitem aumentar o PLN do Google Assistente com seus próprios modelos de linguagem. As intents e tipos do sistema permitem que você aproveite os modelos de linguagem e a detecção de eventos integrados, como usuários que querem sair da ação ou do Google Assistente que não detectam nenhuma entrada.
Criar intents de usuário
As intents de usuário permitem definir suas próprias frases de treinamento que definem o que os usuários podem dizer para suas ações. O PLN do Google Assistente usa essas frases para treinar a si mesmo e entender o que os usuários dizem. Quando os usuários dizem algo que corresponde ao modelo de idioma de uma intent do usuário, o Google Assistente faz a correspondência com a intent e notifica a ação. Assim, você pode realizar a lógica e responder aos usuários.
![](https://developers.google.cn/static/assistant/console/images/builder/new-intent.png?authuser=5&hl=pt)
Para criar uma intent de usuário:
- Na guia Desenvolver, clique em Intents de usuário > ⊕ (Nova intent), especifique um nome e pressione Enter para criar a intent.
- Clique na intent recém-criada no menu à esquerda. O Editor de intent será exibido.
- Adicione frases de treinamento à intent. Adicione o maior número possível de frases de treinamento para treinar o PLN do Google Assistente.
- Opcional: anote frases de treinamento para instruir o PLN do Google Assistente a analisar
e extrair parâmetros digitados da entrada do usuário que corresponda a um tipo especificado:
- Digite um nome para o parâmetro no campo Adicionar novo parâmetro.
- Selecione um tipo de sistema no menu suspenso ou crie um tipo personalizado.
- Especifique se o parâmetro é uma lista. Isso permite que o parâmetro colete vários valores do mesmo tipo.
- Na seção Adicionar frases de treinamento, destaque o texto em que você quer aplicar o tipo. Isso instrui o PLN do Google Assistente a tratar o texto destacado como um parâmetro. Se os usuários disserem algo que corresponda ao tipo, o PLN extrairá esse valor como parâmetro.
Criar intents do sistema
As intents do sistema permitem aproveitar intents com modelos de linguagem predefinidos para eventos comuns, como usuários que querem sair da ação ou quando a entrada do usuário expira. Para criar intents do sistema:
- Na guia Desenvolver, clique em Intents do sistema. Um conjunto de intents do sistema está disponível, como NO_MATCH, NO_INPUT e CANCEL.
- Cada intent do sistema contém os próprios gerenciadores, que podem ser personalizados para cada tipo de intent do sistema. Por exemplo, intents do sistema permitem acionar eventos de webhook e enviar solicitações estáticas quando o evento ocorrer.
Criar tipos personalizados
Com os tipos personalizados, é possível criar a própria especificação de tipo para treinar o PLN e entender um conjunto de valores que precisam ser mapeados para uma única chave.
![](https://developers.google.cn/static/assistant/console/images/builder/type-options.png?authuser=5&hl=pt)
Para criar um tipo personalizado:
- Na guia Desenvolver, clique em Tipos > ⊕ (Novo tipo).
Selecione como fornecer valores de tipo na seção Que tipo de valores com este tipo de suporte?:
- Palavras e sinônimos permitem mapear vários valores para uma única chave, que são chamadas de entrada. Seu tipo pode conter uma ou várias entradas. Se você
escolher essa opção, também será possível ativar as seguintes configurações de PLN:
- Ativar correspondência difusa: permite a correspondência de entradas com mais de uma palavra, mesmo quando as palavras são faladas em uma ordem diferente.
- Aceitar valores desconhecidos: quando não é possível especificar todos os valores possíveis, o recurso aceita palavras ou frases desconhecidas com base nos dados de treinamento de entrada e intent, como itens que podem ser adicionados a uma lista de compras.
- As expressões regulares permitem que o tipo corresponda a padrões de expressão regular com base no padrão RE2 do Google (em inglês).
- O texto de formato livre permite que o tipo corresponda a tudo o que o usuário diz.
- Palavras e sinônimos permitem mapear vários valores para uma única chave, que são chamadas de entrada. Seu tipo pode conter uma ou várias entradas. Se você
escolher essa opção, também será possível ativar as seguintes configurações de PLN:
Especifique valores de tipo na seção Adicionar entradas. Se você escolheu Texto de formato livre, o tipo corresponde a qualquer texto, então não é necessário fornecer entradas.
Criar lógica e respostas para ações
O PLN do Google Assistente associa as solicitações do usuário às intents, para que a ação possa processá-las em cenas. As cenas são executores de lógica avançados que permitem processar eventos durante uma conversa.
![](https://developers.google.cn/static/assistant/conversational/images/scene.png?authuser=5&hl=pt)
Criar uma cena
As seções a seguir descrevem como criar cenas e definir a funcionalidade para o estágio do ciclo de vida de cada cena.
Para criar uma cena:
- Na guia Desenvolver, clique em Scenes > ⊕ (New scene), especifique um nome e pressione Enter para criar uma cena.
- Clique na cena recém-criada no menu à esquerda. O editor Scene será exibido.
Definir configuração única
Quando um cenário fica ativo pela primeira vez, você pode realizar tarefas únicas no estágio Ao entrar. O estágio "On" é executado apenas uma vez e é o único que não é executado dentro do loop de execução de uma cena.
Dentro de uma cena, clique no estágio Ao entrar para especificar a funcionalidade. Você pode especificar as seguintes funcionalidades nessa etapa:
- Chamar o webhook: aciona um webhook. Consulte a documentação de webhooks para mais informações sobre webhooks.
- Enviar solicitações: especificar solicitações estáticas para o usuário para que ele saiba como continuar a conversa. Consulte a documentação de solicitações para mais informações sobre como especificar prompts.
Figura 4. Exemplo de uma cena no estágio de entrada.
Verificar condições
As condições permitem verificar o preenchimento de slots, o armazenamento de sessão, o armazenamento de usuários e os parâmetros de armazenamento doméstico para controlar o fluxo de execução da cena.
Em uma cena, clique no ícone + da fase Condition. O Editor de condições é exibido à direita. É possível especificar as seguintes funcionalidades nessa etapa:
- Condição: especifica a instrução condicional real para basear a lógica dela. Consulte informações de sintaxe na documentação sobre conditions.
- Chamar o webhook: aciona um webhook. Consulte a documentação de webhooks para mais informações sobre webhooks.
- Enviar solicitações: especifica solicitações estáticas a serem enviadas ao usuário para que ele saiba como continuar a conversa. Consulte a documentação sobre solicitações para mais informações sobre como especificar prompts.
- Transition: especifica a cena para onde fazer a transição quando a instrução condicional é verdadeira.
![](https://developers.google.cn/static/assistant/conversational/images/scene-condition.png?authuser=5&hl=pt)
Definir o preenchimento de slots
Os slots permitem extrair parâmetros digitados da entrada do usuário.
No editor de cena, clique no ícone + da etapa Preenchimento de slot. O editor do slot aparece à direita. É possível especificar as seguintes propriedades de um slot:
- Nome do slot:especifica o nome do slot. Se você quiser aproveitar o mapeamento de valores de slot, use o mesmo nome do parâmetro de intent correspondente.
- Tipo de slot:especifica o tipo do slot com um tipo de sistema ou personalizado.
- Este slot é obrigatório:marca o slot como obrigatório. Se ativado, o preenchimento do slot não será concluído até esse slot ser preenchido.
- Atribuir valor padrão a este slot:especifica um valor padrão para o slot que é lido a partir do parâmetro de sessão especificado.
- Personalizar gravação de valor de slot:especifica um parâmetro de sessão para manter o valor do slot após a conclusão do preenchimento dele.
- Validação de slot:aciona um webhook quando um slot é preenchido. Essa configuração se aplica a todos os slots.
- Chamar o webhook (ativado quando o slot é obrigatório): aciona um webhook. Consulte a documentação de webhooks para mais informações sobre webhooks.
- Enviar solicitações (ativado quando o slot é necessário): especifica solicitações estáticas a serem enviadas ao usuário para que ele saiba como continuar a conversa. Consulte a documentação sobre solicitações para mais informações sobre como especificar solicitações.
Para determinados tipos de slots (como aqueles relacionados a transações ou engajamento do usuário), é exibida outra seção em que você pode configurar o slot. As configurações de slot podem alterar a experiência de conversa dos usuários com base nas propriedades que você fornece.
Para configurar um slot, forneça propriedades em um objeto JSON no
fulfillment (referenciado como parâmetro de sessão) ou no editor de JSON inline.
As propriedades disponíveis para cada tipo de slot podem ser encontradas na
referência JSON do Actions Builder. Por exemplo, o tipo de slot actions.type.DeliveryAddressValue
corresponde ao conteúdo de referência para o
slot
DeliveryAddressValue
.
![](https://developers.google.cn/static/assistant/conversational/images/scene-slot.png?authuser=5&hl=pt)
Mapeamento de valor de slot
Em muitos casos, uma correspondência de intent anterior pode incluir parâmetros que preenchem parcial ou todo os valores de slot de uma cena correspondente. Nesses casos, todos os slots preenchidos por parâmetros de intent são mapeados para o preenchimento do slot da cena, se o nome do slot corresponder ao nome do parâmetro da intent.
Por exemplo, se um usuário corresponder a uma intent de pedir uma bebida dizendo "Quero pedir um café grande de baunilha", os slots existentes para tamanho, sabor e tipo de bebida serão considerados preenchidos na cena correspondente se essa cena definir os mesmos slots.
Processar entrada
Durante esta etapa, é possível fazer com que o PLN do Google Assistente corresponda a entrada do usuário com as intents. Você pode definir o escopo da correspondência de intents para uma cena específica adicionando as intents desejadas à cena. Isso permite que você controle o fluxo da conversa dizendo ao Google Assistente para associar intents específicas quando cenas específicas estiverem ativas.
Em um cenário, clique no ícone + para o estágio Processamento da intent do usuário ou Processamento da intent do sistema. O editor do gerenciador de intents aparece à direita. Você pode especificar a seguinte funcionalidade do gerenciador de intents:
- Intent: especifica a intent que você quer corresponder nesse cenário.
- Chamar o webhook: aciona um webhook. Consulte a documentação de webhooks para mais informações sobre como processar uma solicitação de webhook.
- Enviar solicitações: especificar solicitações estáticas para o usuário para que ele saiba como responder. Consulte a documentação de solicitações para mais informações sobre como especificar solicitações.
- Transição (se aplicável): especifica a cena para onde fazer a transição quando a intent especificada corresponde.
![](https://developers.google.cn/static/assistant/conversational/images/scene-customintent.png?authuser=5&hl=pt)
![](https://developers.google.cn/static/assistant/conversational/images/scene-systemintent.png?authuser=5&hl=pt)