Migrar al modo de diálogo visual

Esto es lo que necesita saber sobre la migración de una aptitud de un flujo de diálogo creado por OBotML a una aptitud del diseñador de flujos visuales.

Para iniciar el proceso de migración, haga clic en Migrar al diseñador de flujos en el editor de flujos de diálogo.
Imagen del botón Migrar al diseñador de flujos

Sin embargo, antes de realizar ese paso, puede que tenga que realizar algunos ajustes en la aptitud o en la definición OBotML para asegurarse de lo siguiente:
  • La aptitud es la versión 21.12 o posterior
  • No hay transiciones que utilicen FreeMarker para expresar estados. Por ejemplo, una transición como equal: "${system.actualState}" evitará la migración.
  • No hay ningún estado System.QnA. Sustituya el contenido de preguntas y respuestas por intenciones de respuesta.
Nota

Si la definición OBotML tiene 50 o más estados, la migración continuará, pero no dará como resultado un flujo de intenciones relleno con estados. Solo contendrá las variables de nivel de flujo.
Para localizar cualquier problema en la definición OBotML, primero valide la aptitud y, a continuación, revise la ventana Migrar de Conclusiones para los errores de validación Esta es la imagen del icono Advertencia. que debe corregir antes de la migración, las advertencias Esta es la imagen del icono de error. y los mensajes informativos Esta es la imagen del icono Consejo que describen cómo se interpolarán los estados con propiedades o componentes en desuso, como System.ConditionEquals, System.ConditionExists, System.List, System.Text y System.Intent en el diseñador de Visual Flow.

Qué sucede al migrar a una aptitud del diseñador de flujos visuales

Una migración correcta da como resultado una nueva aptitud. Por defecto, su versión se indica como Version 1.0–migrated en el mosaico. (Puede cambiar el valor de la versión de aptitud en el cuadro de diálogo Migración).
Imagen de un mosaico de aptitud con versión de diálogo de flujo visual

La nueva versión de la aptitud va acompañada de un log de migración que documenta esa conversión de propiedades y componentes en desuso.
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.
... 

La aptitud del diseñador de flujos visuales contiene un flujo principal y un flujo de intención único. Todas las intenciones se asignan a este flujo. En este flujo, el enrutamiento de la intención se realiza mediante un estado Switch, donde los nombres de la intención se han transcrito como transiciones de acción. La lógica de enrutamiento se ejecuta con ${skill.system.event.value.intent.intentName}.

La prueba de la iteración del flujo del diseñador visual de flujos puede revelar que la migración introdujo regresiones. Por ejemplo, los cambios en las definiciones de transición pueden tener segmentos desconectados del flujo. También puede que el flujo único creado a partir de la migración sea difícil de manejar. En este caso, puede modularizar la funcionalidad copiando estados en un flujo independiente.

Resumen de Migración

OBotML Artefactos... ... Conviértase en el siguiente en Visual Flow Designer
Intenciones Los eventos de intención y unresolvedIntent se asignan al flujo de intención único.
Variables de contexto Variables de nivel de flujo. La variable rb no se migra; la variable system.rb se utiliza en su lugar.
Estados System.Intent Transcrito como estado de conmutador. Las intenciones se denominan transiciones de acción. El enrutamiento se determina mediante ${skill.system.event.value.intent.intentName}. Transiciones que apuntan a una ruta de estado System.Intent al estado Flujo de finalización para la coincidencia de intenciones.
Estados System.List y System.Text Common Response > Resolver estados de entidades
Estados System.Output Estados de respuesta común
Estados System.ConditionEquals y System.ConditionExists Cambiar Estados
Propiedades de componente:
  • Propiedad nlpResultVariable en System.CommonResponse y System.ResolveEntities
  • cancelPolicy en System.ResolveEntities
  • autoNumberPostbackActions
  • translate
  • values en el componente System.Switch
  • insightsIncludes
  • insightsEndConversation
Estas propiedades se eliminan. cancelPolicy en Resolver entidades ahora, el valor por defecto es inmediato
Expresiones FreeMarker utilizadas en OBotML, propiedades de entidad y propiedades de elemento de bolsa:
  • system.errorState
  • system.errorAction
  • system.actualState
  • system.expectedState
  • system.requestedState
  • system.errorState
  • rb
Expresiones equivalentes en 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
Transición error system.dialogError acción de transición
Acciones de transición attachmentReceived y locationReceived Eliminada
Transiciones que utilizan expresiones FreeMarker (cuando la expresión FreeMarker se puede resolver en un estado real). Cambiar Estados
Transiciones return Migrado al estado de flujo de finalización
Transición NONE en System.Switch Transición next.
Nombres de componentes personalizados El nombre del componente personalizado tiene como prefijo el nombre del componente personalizado. Los dos nombres están separados por dos puntos.
iteratorExpression La propiedad iteratorExpression se agrega a los metadatos cuando se utiliza iteratorVariable.
Propiedad agentActions de System.AgentInitiation Las listas delimitadas por comas de nombres de acción se convierten en matrices con propiedades de acción, etiqueta y descripción.