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 Designer de Fluxo Visual.

Inicie 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 usam 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 pelas 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ção preenchido com estados. Ela conterá apenas as variáveis de nível de fluxo.
Para localizar qualquer problema na definição OBotML, primeiro valide sua habilidade e, em seguida, revise a janela Migrar de Descobertas em busca dos erros de validação Esta é uma imagem do ícone de advertência. que você deve corrigir antes da migração, os avisos 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 é notada como Version 1.0–migrated no mosaico. (Você pode alterar o valor da versão da habilidade na caixa de diálogo Migração).
Uma imagem de um mosaico de habilidades com versão em Diálogo do Fluxo Visual

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 esse fluxo. Dentro desse fluxo, o roteamento de intenção é realizado usando um estado Alternar em que os nomes de 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 achar 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 Visual Flow Designer
Intenções Os eventos de intenção e unresolvedIntent são todos mapeados para o fluxo de intenção única.
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ção.
Estados System.List e System.Text Resposta Comum > Resolver estados de Entidades
Estados System.Output Estados da Resposta Comum
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 são removidas. cancelPolicy em Resolver Entidades agora assume como padrão imediato
Expressões FreeMarker usadas em OBotML, propriedades de entidade e propriedades de item de repositório:
  • system.errorState
  • system.errorAction
  • system.actualState
  • system.expectedState
  • system.requestedState
  • system.errorState
  • rb
Expressões equivalentes no Designer de Fluxo Visual
  • 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 return Migrado para o estado do Fluxo Final
Transição NONE em System.Switch next transição.
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 Listas de nomes de ação delimitadas por vírgulas são convertidas em matrizes com propriedades de ação, rótulo e descrição.