Migrar para o Modo de Diálogo Visual

Veja o que você precisa saber sobre a migração de uma habilidade de um fluxo de caixas de diálogo criado por OBotML para uma habilidade do Visual Flow Designer.

Você inicia o processo de migração clicando em Migrar para o Designer de Fluxo no editor de fluxo de caixas de diálogo.
Esta é uma imagem do botão Migrar para o Designer de Fluxo

No entanto, antes de dar essa etapa, talvez você precise fazer alguns ajustes na habilidade ou na definição OBotML para garantir o seguinte:
  • A habilidade é a Versão 21.12 ou superior
  • Não há transições que usem FreeMarker para expressar estados. Por exemplo, uma transição como equal: "${system.actualState}" impedirá a migração.
  • Não há estados System.QnA. Substitua o conteúdo do módulo de perguntas e respostas por intenções de resposta.
Observação

Se a definição OBotML tiver 50 ou mais estados, a migração ainda continuará, mas não resultará em um fluxo de intenções preenchido com estados. Ela conterá apenas as variáveis de nível de fluxo.
Para localizar quaisquer problemas na definição OBotML, primeiro valide sua habilidade e, em seguida, revise a janela Migrar Descobertas para ver os erros de validação Esta é uma imagem do ícone de advertência. que você deve corrigir antes da migração, as advertências Esta é uma imagem do ícone de erro. e as mensagens informativas Esta é uma imagem do ícone de dica que descrevem como os estados com propriedades ou componentes obsoletos, como System.ConditionEquals, System.ConditionExists, System.List, System.Text e System.Intent, serão interpolados no Designer de Fluxo Visual.

O que Acontece Quando Você Migra para uma Habilidade do Designer de Fluxo Visual

Uma migração bem-sucedida resulta em uma nova habilidade. Por padrão, sua versão é anotada como Version 1.0–migrated no mosaico. (Você pode alterar o valor da versão da habilidade na caixa de diálogo Migração).
Imagem de um mosaico de habilidades com controle de caixa de diálogo do Visual Flow

A nova versão da habilidade é acompanhada por um log de migração que documenta essa conversão de propriedades e componentes obsoletos.
8:5 The variable 'iResult' will not be migrated. In visual dialogs, the intent resolution is done in the dialog engine and the NLP result is available through the 'skill.system.nlpresult' variable.
9:5 The variable 'rb' will not be migrated. This variable is pre-defined now.
84:5 The state 'welcome' uses the 'System.Output' component, which is obsolete in visual dialog mode. It will be replaced with a 'System.CommonResponse' component.
92:5 The state 'getIntent' uses the System.Intent component, which is obsolete in visual dialog mode. It will be replaced with a System.Switch component. Intent resolution in visual dialog mode happens automatically when starting a new session and after ending a root flow.
115:7 The property 'values' in the state 'startDetermineWineType' is obsolete in visual dialog mode and will be removed.
122:9 The 'NONE' transition action in the state 'startDetermineWineType' is obsolete in visual dialog mode and will be removed. The 'next' transition is used instead.
... 

A habilidade do Designer de Fluxo Visual contém um fluxo principal e um único fluxo de intenção. Todas as intenções são mapeadas para este fluxo. Nesse fluxo, o roteamento da intenção é realizado usando um estado Alternar em que os nomes da intenção foram transcritos como transições de ação. A lógica de roteamento é executada usando ${skill.system.event.value.intent.intentName}.

O teste da iteração do Designer de Fluxo Visual do fluxo pode revelar que a migração introduziu regressões. Por exemplo, as alterações nas definições de transição podem ter segmentos desconectados do fluxo. Você também pode descobrir que o fluxo único criado a partir da migração é pesado. Nesse caso, você pode modularizar a funcionalidade copiando estados em um fluxo separado.

Resumo da Migração

OBotML Artefato(s)... ... Torne-se o seguinte no Designer de Fluxo Visual
Intenções Os eventos de intenção e unresolvedIntent são todos mapeados para o fluxo de intenção único.
Variáveis de Contexto Variáveis no nível do fluxo. A variável rb não é migrada; em vez disso, a variável system.rb é usada.
Estados System.Intent Transcrito como um estado Switch. As intenções são nomeadas como transições de ação. O roteamento é determinado usando ${skill.system.event.value.intent.intentName}. As transições que apontam de volta para uma rota de estado System.Intent para o estado Fluxo Final para correspondência de intenções.
Estados System.List e System.Text Estados de Resposta Comum > Resolver Entidades
Estados System.Output Estados de Resposta Comuns
Estados System.ConditionEquals e System.ConditionExists Alternar estados
Propriedades do componente:
  • Propriedade nlpResultVariable em System.CommonResponse e System.ResolveEntities
  • cancelPolicy em System.ResolveEntities
  • autoNumberPostbackActions
  • translate
  • values no componente System.Switch
  • insightsIncludes
  • insightsEndConversation
Essas propriedades foram removidas. O padrão de cancelPolicy em Resolver Entidades agora é imediato
Expressões FreeMarker usadas em OBotML, propriedades da entidade e propriedades do item do repositório:
  • system.errorState
  • system.errorAction
  • system.actualState
  • system.expectedState
  • system.requestedState
  • system.errorState
  • rb
Expressões equivalentes no Visual Flow Designer
  • skill.system.event.value.dialogError.errorState
  • skill.system.event.value.dialogError.errorMessage
  • skill.system.event.value.outOfOrderMessage.outOfOrderState
  • skill.system.event.value.outOfOrderMessage.currentState
  • skill.system.event.value.authorizeUser.requestedState
  • skill.system.event.value.outOfOrderMessage.errorState
  • skill.system.rb
Transição error Ação de transição system.dialogError
Ações de transição attachmentReceived e locationReceived Removido
Transições usando expressões FreeMarker (quando a expressão FreeMarker pode ser resolvida para um estado real). Alternar estados
Transições de return Estado Migrado para Fluxo Final
Transição NONE em System.Switch transição next.
Nomes de componentes personalizados O nome do componente personalizado é prefixado com o nome do componente personalizado. Os dois nomes são separados por dois-pontos.
iteratorExpression A propriedade iteratorExpression é adicionada aos metadados quando um iteratorVariable é usado.
Propriedade agentActions de System.AgentInitiation As listas delimitadas por vírgulas de nomes de ação são convertidas em arrays com propriedades de ação, label e descrição.