Idioma
Esses são os componentes disponíveis na categoria Idioma do editor de fluxo de caixas de diálogo baseado em YAML.
System.Intent
Este componente não está disponível para habilidades desenvolvidas com o Designer de Fluxo Visual. Em vez disso, as intenções são resolvidas automaticamente quando não há fluxo ativo. Consulte Detecção e Resolução de Intenções.
Propriedade | Descrição | 0brigatório? |
---|---|---|
variable |
Mantém o valor que a estrutura de processamento de idioma resolve da entrada do usuário. Por exemplo, nossos bots de habilidade de amostra definem essa propriedade como variable=iResult (com iResult: "nlpResult" definido como uma das variáveis context ). Você não precisa nomear a variável iResult . Esse nome é uma convenção usada em nosso código de amostra e nas habilidades de amostra. Seja qual for o nome da variável usado para nlpResult , certifique-se de usá-lo consistentemente em todo o fluxo de caixas de diálogo.
|
Sim |
optionsPrompt |
O título da lista de intenções quando você define um valor para a opção Margem de Ganho. Por padrão, esse valor de string é Do you want to .
O valor padrão dessa propriedade é armazenado no pacote de recursos da habilidade. Para alterá-lo, clique em |
Número |
botName |
O nome (não o nome para exibição) da habilidade que resolve a intenção. Use essa propriedade se decidir resolver a entrada do usuário usando o modelo de uma habilidade distinta, em vez da habilidade atual. O uso dessa abordagem poderá ser benéfico se você quiser resolver a intenção com base em um modelo com um domínio mais restrito do que o domínio exigido pelo seu caso de uso principal. | Número |
botVersion |
Especifica a versão da habilidade. O valor padrão é 1.0 (se você não especificar o número da versão).
|
Número |
sourceVariable |
A estrutura de processamento de idioma resolve a intenção usando sourceVariable como entrada.
Importante: Você não pode usar essa propriedade em combinação com a propriedade |
No |
daIntercept |
Nas chamadas para System.Intent , determina se o assistente digital pode interceptar e redirecionar a entrada do usuário para outras habilidades. Estes são os possíveis valores:
|
No |
translate |
Substitui o conjunto de valores da variável de contexto autoTranslate aqui. Se autoTranslate não estiver definido ou definido como false , você poderá definir essa propriedade como true para ativar a tradução automática somente para esse componente. Se a variável de contexto autotranslate estiver definida como true , você poderá definir essa propriedade como false para excluir esse componente da tradução automática.
Importante: Você não pode usar essa propriedade em combinação com a propriedade |
No |
Propriedades do Módulo de Perguntas e Respostas do Componente System.Intent
Propriedade | Descrição | Tipo de Dados | Valor Padrão |
---|---|---|---|
qnaEnable |
Ativa o roteamento para o módulo de perguntas e respostas. Se você definir isso como true (roteamento ativado), defina também a ação de transição do módulo de perguntas e respostas (none ou exit ). Consulte Transições do Módulo de Perguntas e Respostas.
|
booleano | false |
qnaBotName |
O nome (não para exibição) da habilidade com o módulo de perguntas e respostas. Se você não definir essa propriedade, o valor definido para a propriedade botName do componente System.QnA será usado.
|
string | N/A |
qnaBotVersion |
A versão da habilidade com o módulo de perguntas e respostas. Por padrão, é 1.0. Esse valor é opcional | inteiro | N/A |
qnaTimeout |
O tempo, em milissegundos, que a habilidade aguarda o servidor do módulo de perguntas e respostas responder à entrada do usuário. | longo | 5000 |
qnaUseResult |
A definição dessa opção como true (o padrão) permite que a habilidade consulte o servidor do módulo de perguntas e respostas com a entrada do usuário. Em seguida, a habilidade usa os resultados dessa consulta (as correspondências) para definir o roteamento. Quando você definir essa propriedade como true , a habilidade só exibirá o link Exibir Respostas quando houver correspondências. Defina-a como false para ver sempre o link Exibir Respostas.
|
booleano | true |
qnaSkipIfIntentFound |
Quando definido como true , a habilidade ignora o módulo de perguntas e respostas quando há uma correspondência de intenção. O valor padrão (false ) permite que a habilidade consulte o servidor QnA com a declaração do usuário e também apresente o QnA como opção.
|
booleano | false |
optionsPrompt |
O módulo de perguntas e respostas será exibido se estiver ativado para o componente Dica: Para idiomas estrangeiros (que não seja o inglês), mencione um pacote de recursos. Consulte Mencionar Pacotes de Recursos no Fluxo de Caixas de Diálogo |
string | Do you want to |
optionsQnaLabel |
Um label para ação nas opções ( Dica: Para idiomas estrangeiros (que não seja o inglês), mencione um pacote de recursos. Consulte Mencionar Pacotes de Recursos no Fluxo de Caixas de Diálogo |
string | Questions |
qnaMatchFields |
Define os campos de Perguntas e Respostas usados para corresponder à mensagem do usuário. Os valores válidos incluem:
|
string | all |
qnaMinimumMatch |
Define as porcentagens mínima e máxima de tokens que qualquer par pergunta/resposta deve conter para ser considerado uma correspondência. Para retornar as melhores correspondências, nós tokenizamos as declarações que o Mecanismo de Intenção resolve como perguntas. Esses tokens são formados pelos radicais das palavras e por várias combinações de palavras. Como resultado, um grande conjunto de tokens pode ser gerado de uma declaração. Por causa disso, é improvável que qualquer par pergunta/resposta possa conter todas as palavras-chave e variantes. Portanto, não recomendamos que você altere o padrão dessa definição, Ter 50% dos tokens gerados (o nível máximo padrão) significa que o par pergunta/resposta poderá ser considerado uma correspondência relevante se tiver todas as palavras-chave da declaração. Se esse nível máximo não puder ser atendido, um nível mínimo de 25% será suficiente. Se você alterar essas definições, especialmente aumentando o máximo para mais de 50%, o par pergunta/resposta não só precisará conter todas as palavras-chave, como também os tokens adicionais deverão corresponder. Em outras palavras, se você quiser reduzir a chance de perder uma correspondência relevante, e puder tolerar o retorno de correspondências irrelevantes no processo, poderá adicionar um limite ainda mais baixo. Por exemplo: Se quiser minimizar correspondências irrelevantes, poderá aumentar os níveis (ou seja, Importante: Se você não quiser usar os níveis padrão, defina com os mesmos valores a propriedade |
string | 50%,25% |
qnaUseSourceVariable |
Quando definido como true , a correspondência do módulo de perguntas e respostas se baseia no valor armazenado na propriedade sourceVariable do componente System.Qna, não na entrada do usuário.
|
booleano | false |
System.MatchEntity
Este tópico abrange o uso desse componente no modo YAML. Para obter informações sobre como usá-lo no Designer de Fluxo Visual, consulte Entidade de Correspondência.
O componente System.MatchEntity
chama o Mecanismo de Intenção para extrair informações de entidade do texto mantido pela propriedade sourceVariable
. Se houver uma correspondência para o tipo de entidade variável, a variável será definida com esse valor de entidade.
Propriedade | Descrição | 0brigatório? |
---|---|---|
sourceVariable |
A variável que contém o valor de entrada. | Sim |
variable |
O nome da variável de contexto. O valor dessa variável pode ser usado em um componente System.SetVariable subsequente para extrair uma entidade específica usando uma expressão do FreeMarker. Por exemplo, para extrair um valor de entidade EMAIL : ${userInputEntities.value.entityMatches['EMAIL'][0]} |
Sim |
Esse componente também tem duas transições predefinidas: match
e nomatch
.
Transição | Descrição |
---|---|
match |
Direciona o Mecanismo de Caixa de Diálogo para passar para um estado quando as entidades coincidem. |
nomatch |
Define o Mecanismo de Caixa de Diálogo para passar para um estado quando as entidades não coincidem. |
System.MatchEntity
corresponde ao valor fornecido pelo usuário armazenado na variável mailInput
com o tipo de entidade EMAIL definido para a variável mailEntity
. Se a entrada do usuário satisfizer ao tipo de entidade sendo um endereço de e-mail, o componente System.MatchEntity
gravará esse valor na variável mailEntity
que é confirmada novamente para o usuário do bot ("You entered ${mailEntity.value.email}"
). Quando os valores não correspondem, o Mecanismo de Caixa de Diálogo é movido para o estado nomatch
.
O componente
System.MatchEntity
resolve um único valor.
context:
variables:
iResult: "nlpresult"
mailInput: "string"
mailEntity: "EMAIL"
states:
intent:
component: "System.Intent"
properties:
variable: "iResult"
transitions:
actions:
displayMailAdresses: "askMail"
unresolvedIntent: "dunno"
askMail:
component: "System.Text"
properties:
prompt: "Please provide a valid email address"
variable: "mailInput"
transitions:
next: "matchEntity"
matchEntity:
component: "System.MatchEntity"
properties:
sourceVariable: "mailInput"
variable: "mailEntity"
transitions:
actions:
match: "print"
nomatch: "nomatch"
print:
component: "System.Output"
properties:
text: "You entered ${mailEntity.value.email}"
transitions:
return: "done"
nomatch:
component: "System.Output"
properties:
text: "All I wanted was a valid email address."
transitions:
return: "done"
dunno:
component: "System.Output"
properties:
text: "I don't know what you want"
transitions:
return: "done"
System.DetectLanguage
Este tópico abrange o uso desse componente no modo YAML. Para obter informações sobre como usá-lo no Designer de Fluxo Visual, consulte Detectar Idioma.
source
:
context:
variables:
autoTranslate: "boolean"
translated: "string"
someTranslatedText: "string"
states:
setAutoTranslate:
component: "System.SetVariable"
properties:
variable: "autoTranslate"
value: true
transitions:
next: "detect"
detect:
component: "System.DetectLanguage"
properties:
source: "someTranslatedText"
useExistingProfileLanguageTag: true
transitions:
...
O componente System.DetectLanguage
define uma variável chamada profile.languageTag
com a string de configuração regional. Você pode definir variáveis com o idioma atual quando usa essa variável em uma expressão de valor (${profile.languageTag}
).
A variável
profile.languageTag
tem precedência sobre a variável profile.locale
que é definida pelo cliente messenger.
A propriedade useExistingProfileLanguageTag
é usada quando uma habilidade faz parte de um assistente digital que tem um serviço de tradução. Isso permite que a habilidade use o idioma detectado pelo assistente digital imediatamente. Caso contrário, a habilidade poderá fornecer uma mensagem ou prompt em inglês antes que o idioma seja detectado novamente. Se a habilidade não estiver em um assistente digital habilitado para tradução, a propriedade será ignorada.
As Variáveis profile.locale e profile.languageTag
Com o uso de um determinado pacote de recursos e as traduções para ambos os labels da IU, todas as mensagens do componente dependem elas mesmas do idioma do usuário que está armazenado nas variáveis profile.locale
e profile.languageTag
.
As formas como essas variáveis são definidas dependem do modo de idioma da habilidade:
- Para habilidades que usam suporte a idioma nativo, o idioma é detectado automaticamente e essas variáveis são preenchidas com o valor apropriado, a menos que as variáveis já tenham sido atribuídas a valores.
- Para habilidades que usam um serviço de tradução:
- O valor da variável
profile.locale
deriva do cliente messenger do usuário.Observação
Oprofile.locale
suporta valores nos formatos de idioma ISO - país ou ISO language_country. - O valor da variável
profile.languageTag
é fornecido pelo componente System.DetectLanguage.
- O valor da variável
O valor definido para a variável
profile.locale
pode determinar os formatos específicos das configurações regionais para as entidades DATE, CURRENCY e NUMBER, mesmo quando um valor foi definido para a variável profile.languageTag
.
-
setLocaleToGerman: component: "System.SetVariable" properties: variable: "profile.locale" value: "de"
-
setLanguageTagToGerman: component: "System.SetVariable" properties: variable: "profile.languageTag" value: "de"
-
setLanguageToVariableValue: component: "System.SetVariable" properties: variable: "profile.languageTag" value: "${language_preference_var.value}"
-
setLocaleToLanguageTag: component: "System.SetVariable" properties: variable: "profile.locale" value: "${profile.languageTag}"
-
setTagToLocale: component: "System.SetVariable" properties: variable: "profile.languageTag" value: "${profile.locale}"
Dica:
É possível implementar uma lista de opções de idiomas comparando o valor da configuração regional armazenado nessas variáveis ou em uma tabela de banco de dados de usuário personalizado, com uma lista de idiomas suportados. Se o idioma detectado não estiver nessa lista, você poderá solicitar que o usuário escolha um e, em seguida, defina a variávelprofile.languageTag
com esse valor.
System.TranslateInput
Este tópico abrange o uso desse componente no modo YAML. Para obter informações sobre como usá-lo no Designer de Fluxo Visual, consulte Traduzir Entrada.
Este componente envia o texto especificado para o serviço de tradução da habilidade e, em seguida, armazena a tradução em inglês. Ele utiliza a habilidade que está sendo configurada com um serviço de tradução, que reconhece o idioma da entrada do usuário e o traduz em inglês. Este componente não funciona com habilidades que usam o modo de idioma Suportado Nativamente.
Use esse componente quando precisar processar o texto de entrada bruto antes de traduzi-lo. Por exemplo, talvez você queira remover alguns dados pessoais da entrada do usuário antes de enviá-la ao serviço de tradução.
Propriedade | Descrição | 0brigatório? |
---|---|---|
source |
Especifica os valores de texto a serem traduzidos em inglês. | No |
variable |
A variável que contém a tradução em inglês do texto. | Sim |
Como o componente System.TranslateInput
utiliza o serviço de tradução, que já detecta o idioma do usuário, esse componente não precisa seguir os estados que detectam ou definem o idioma conforme descrito em Adicionar um Serviço de Tradução à Habilidade. Como resultado, você pode armazenar a tradução em inglês da entrada direta do usuário ou de uma variável source
.
Tradução de Entrada Direta
System.TranslateInput
armazena a tradução em inglês da entrada direta do usuário em sua propriedade variable
. O trecho de código a seguir mostra como a entrada do usuário "Hallo, ich bin ein Mensch" na variável translatedString
é armazenada como "Hello, eu sou um humano".context:
variables:
translatedString: “string”
sourceString: “string”
...
states:
...
translateInput:
component: "System.TranslateInput"
properties:
variable: "translatedString"
A Variável source
sourceString
mantém a entrada do usuário. (Essa entrada, por exemplo, pode ter sido reunida por um componente Resposta Comum.) Depois que o componente System.TranslateInput
conclui seu processamento, a tradução em inglês é armazenada na variável translatedString
.context:
variables:
autoTranslate: "boolean"
translatedString: "string"
sourceString: "string"
...
states:
...
translateInputString:
component: "System.TranslateInput"
properties:
source: "sourceString"
variable: "translatedString"
transitions:
...
O componente
System.TranslateInput
não pode traduzir objetos de dados ou arrays armazenados em uma variável de contexto por um componente personalizado. Esse conteúdo só pode ser traduzido quando a variável é referenciada por um componente que usa tradução automática. Por exemplo, o componente System.TranslateInput
não pode traduzir um objeto de dados como {”product”: “scissors”, “color”: “silver”}
como scissors e silver.
A Propriedade sourceVariable
sourceVariable
do System.Intent
contém o valor processado pelo componente, você pode usá-la com o componente System.TranslateInput
para inserir texto traduzido. O trecho de código a seguir mostra a atribuição do valor da variável translated
para que ela possa ser processada pelo mecanismo NLP.
translate:
component: "System.TranslateInput"
properties:
variable: "translated"
transitions:
next: "intent"
intent:
component: "System.Intent"
properties:
variable: "iResult"
sourceVariable: "translated"
...
System.TranslateOutput
Este tópico abrange o uso desse componente no modo YAML. Para obter informações sobre como usá-lo no Visual Flow Designer, consulte Traduzir Saída.
System.TranslateOutput
permite traduzir texto para o idioma do usuário. O componente assume o valor definido para a propriedade source
. Ele traduz o texto no idioma detectado pelo componente System.DetectLanguage
ou pela variável profile.locale
e o armazena na propriedade variable
.
Propriedades | Descrição | 0brigatório? |
---|---|---|
source |
O texto a ser traduzido ou uma expressão do FreeMarker que menciona uma variável cujo valor precisa ser traduzido. | Sim |
variable |
Mantém o texto traduzido. | Sim |
System.Output
, que de outra forma exibiria o texto traduzido automaticamente, ainda gera o texto traduzido, mas aqui ele gera a tradução do texto definido para a propriedade source
. unresolvedTranslate:
component: "System.TranslateOutput"
properties:
source: "Sorry I don't understand"
variable: "someTranslatedText"
transitions:
next: "unresolved"
unresolved:
component: "System.Output"
properties:
text: "${someTranslatedText}"
transitions:
return: "unresolved"
System.Qna
System.Qna
.
Nome | Descrição | 0brigatório? | Valor Padrão | |
---|---|---|---|---|
botName |
O nome (não para exibição) da habilidade com o módulo de perguntas e respostas. | No | N/A | |
botVersion |
A versão da habilidade identificada pela propriedade botName . Você pode definir a propriedade botName sem definir também a propriedade botVersion . Entretanto, você não pode definir botVersion sem também definir botName : botVersion é ignorado quando você não define também a propriedade botName . Como consequência, sua versão padrão (1.0 ) só se aplicará se você também definir a propriedade botName . Para rotear para outra versão da habilidade, defina a propriedade botName e defina a propriedade botVersion com a versão de destino.
|
No | 1 | |
highlighter |
O método usado para destacar o texto mais relevante em cada resposta. Os valores válidos são:
|
No | system |
|
highlightLength |
O número de caracteres a serem destacados em cada resposta. | No | 100 | |
sourceVariable |
A estrutura de processamento de idioma resolve a correspondência do módulo de perguntas e respostas com o valor armazenado pelo sourceVariable , não com a entrada do usuário. Você ativa essa correspondência definindo qnaUseSourceVariable: true para o componente System.Intent. Por exemplo :
|
No | N/A | |
transitionOnTextReceived |
Faz a transição do estado definido com o componente
System.QnA quando o usuário digita texto livre.
|
No | true |
|
keepTurn |
A propriedade |
No | false (quando configurado como booliano)
|
|
matchListLimit |
Limita a paginação das respostas | No | 5 | |
categoryListLimit |
Limita a paginação das categorias | No | 5 | |
resultLayout |
O layout das respostas correspondentes. Valores válidos: horizontal e vertical .
|
No | horizontal | |
minimumMatch |
Define as porcentagens mínima e máxima de tokens que qualquer par pergunta/resposta deve conter para ser considerado uma correspondência. Para retornar as melhores correspondências, nós tokenizamos as declarações que o Mecanismo de Intenção resolve como perguntas. Esses tokens são formados pelos radicais das palavras e por várias combinações de palavras. Dependendo do tamanho da mensagem do usuário, o processo pode gerar um conjunto grande de tokens. Como é improvável que qualquer par pergunta/resposta possa corresponder a todos eles, recomendamos que você defina o nível de correspondência em Nessa definição, o par pergunta/resposta poderá ser considerado relevante se corresponder a 50% dos tokens. Se esse nível máximo não puder ser atendido, um nível mínimo de 25% será suficiente. Se você quiser reduzir a chance de perder uma correspondência relevante, e puder tolerar o retorno de correspondências irrelevantes no processo, poderá adicionar um limite ainda mais baixo como fallback. Por exemplo: Se você quiser minimizar as correspondências irrelevantes, poderá aumentar o percentual (digamos, Importante: Se você não quiser usar os níveis padrão ao testar, defina a propriedade |
No | 50%25% | |
matchfields |
Define os campos de Perguntas e Respostas usados para corresponder à mensagem do usuário. Os valores válidos incluem:
|
No | all |
|
enableCategoryDrilldown |
Defina como true para exibir um detalhamento por categoria.
|
No | true |
|
exitLabel |
O texto do label para sair do módulo de perguntas e respostas. | No | Exit Questions |
|
viewAnswerLabel |
O texto do label para a ação de exibição dos detalhes de uma resposta. | No | View |
|
moreAnswersLabel |
O texto do label para a ação de exibição de mais respostas. | No | More Answers |
|
answersLabel |
O texto do label para as ações de exibição de respostas em uma categoria específica. | No | Answers |
|
categoriesLabel |
O texto do label das categorias que correspondem à sintaxe. | No | Categories |
|
subCategoriesLabel |
O texto do label para a ação de exibição das subcategorias. | No | Sub-Categories |
|
moreCategoriesLabel |
O texto do label para a ação de exibição de mais categorias. | No | More Categories |
Aumentar a Precisão do Módulo de Perguntas e Respostas Retornada Usando minimumMatch
Embora a definição padrão de 50%,25%
retorne pares pergunta/resposta precisos, talvez você queira que sua habilidade retorne menos resultados, aumentando a porcentagem. Por exemplo, você pode querer que sua habilidade retorne apenas um par de perguntas e respostas quando corresponder a uma alta porcentagem dos tokens ou, em vez disso, direcione o usuário para um agente ao vivo.
Nesse cenário, o aumento da porcentagem da propriedade minimumMatch
para 80% pode retornar correspondências do módulo de perguntas e respostas mais preciso, especialmente para mensagens mais longas. O mesmo não pode ser verdadeiro para mensagens mais curtas, que normalmente têm de três a sete palavras, com cerca de 50% delas sendo palavras ignoradas (vazias). Por exemplo, na pergunta do usuário O que é segurança da conta?, por exemplo, o sistema detecta dois tokens, conta e segurança. Quando minimumMatch
é definido como 80%, somente um desses tokens é retornado (80% de 2 é 1,6, que é arredondado para 1), quando o ideal seria que ambos fossem retornados. Nesse caso, a habilidade pode retornar pares pergunta/resposta que geralmente descrevem contas, o que é uma resposta muito ampla. A habilidade deveria ter retornado apenas o módulo de perguntas e respostas sobre segurança da conta ou não retornar nada.
minimumMatch
para retornar um módulo de perguntas e respostas preciso para mensagens curtas, informe o número de tokens que devem ser correspondidos, um operador menor que (<) e o nível de correspondência necessário quando a mensagem contiver um número maior de tokens. Por exemplo : qna:
component: "System.QnA"
properties:
minimumMatch: "3<80%"
transitions:
actions:
none: "unresolved"
next: "intent"
Neste trecho de código, se a mensagem contiver de 1 a 3 tokens, então o par pergunta/resposta deverá corresponder a todos eles para que a habilidade o retorne para o usuário. Nos termos do cenário, essa definição só retornaria um par pergunta/resposta que correspondesse à segurança da conta. Quando a mensagem tem quatro ou mais tokens, o par pergunta/resposta só precisa corresponder a 80% deles. qna:
component: "System.QnA"
properties:
minimumMatch: "3<80% 8<70% 12<65%"
transitions:
actions:
none: "unresolved"
next: "intent"
Com a definição minimumMatch
nesse trecho de código, a habilidade só retorna o módulo de perguntas e respostas quando os tokens a seguir são correspondidos.
Número de Tokens na Mensagem | O Número de Tokens que Devem Corresponder |
---|---|
1 | 1 |
2 | 2 |
3 | 3 |
4 (80% corresponde) | 3 (3,2, arredondado para 3) |
5 (80% corresponde) | 4 |
6 (80% corresponde) | 4 (4,8, arredondado para 4 |
7 (80% corresponde) | 5 (5,6, arredondado para 5) |
8 (80% corresponde) | 6 (6,4 arredondado para 6) |
9 (70% corresponde) | 6 (6,3, arredondado para 5) |
10 (70% match) | 7 |
11 (70% match) | 7 (7,7, arredondado para 7) |
12 (70% match) | 8 (8,4, arredondado para 8) |
13 (65% match) | 8 (8,45, arredondado para 8) |
Mapas de chave/valor keepTurn e Ações de Transição
keepTurn
como mapa cujas chaves descrevam as transições.
Chave | Descrição | Valor Padrão |
---|---|---|
next |
Quando definido como false , a habilidade deixa o controle quando a caixa de diálogo muda para o próximo estado. A habilidade não processará qualquer entrada do usuário até que o Mecanismo de Caixa de Diálogo se mova para o próximo estado.
|
false |
none |
Quando definido como true , a habilidade mantém o controle quando uma ação de transição none é acionada porque não há pergunta que possa ser retornada para a entrada do usuário.
|
true |
exit |
Quando definido como true , a habilidade mantém o controle quando uma ação de transição exit foi acionada.
|
true |
textReceived |
Quando definido como true , a habilidade mantém o controle da conversa quando transitionOnTextReceived é definido como true , que sinaliza o Mecanismo de Caixa de Diálogo para fazer a transição do estado.
|
true |
Transições do Módulo de Perguntas e Respostas
Nome | Descrição | 0brigatório? |
---|---|---|
none |
Nenhuma correspondência encontrada para a entrada do usuário (o que geralmente significa que o fluxo é roteado para um estado que informa ao usuário que nenhuma correspondência foi encontrada). | Sim |
exit |
O usuário sai do módulo de perguntas e respostas. Por padrão, o keepTurn é definido como true para essa ação.
|
Número |