Componentes de control

Estos componentes de control en modo YAML remiten el flujo en función de si la entrada del usuario coincide con un valor por defecto.

System.ConditionEquals

Este componente modifica la navegación basada en un valor de variable.

Nota

Este componente no está disponible en el diseñador de flujos visuales. En su lugar, puede utilizar el conmutador para este fin.
Utilice este componente para ramificar el flujo de diálogo cuando se paree un valor. Este componente ejecuta el enrutamiento basado en valores comparando los valores definidos para sus propiedades source o variable con el valor almacenado por la propiedad value. El componente dispara las acciones equal y notequal en consecuencia, según una coincidencia (o la falta de ella). En el siguiente fragmento, el cliente se encamina al estado orderPizza cuando la entrada extraída para la variable de contexto orders coincide con pizza, o bien a la ruta de ejecución que comienza con el estado orderPasta cuando no es así.
  Check for Pizza:
    component: "System.ConditionEquals"
    properties:
      variable: "orders"
      value: "pizza"
    transitions:
      actions:
        equal:  "orderPizza"
        notequal: "orderPasta"
Propiedades Descripción ¿Obligatoria?
variable Nombre de la variable cuyo valor actual determina el enrutamiento. El motor de diálogo ignora la propiedad variable si también se ha definido la propiedad source. No
source La propiedad source es una alternativa a la propiedad variable. No
value Valor que se compara con las propiedades source o variable.

¿Cómo se utilizan las expresiones de Apache FreeMarker con el componente System.ConditionEquals?

Puede ajustar los criterios de coincidencia a valores y formatos específicos definiendo las propiedades value y source con las expresiones de Apache FreeMarker. Por ejemplo:
  • verifyCode:
        component: "System.ConditionEquals"
        properties:
          variable: "code"
          value: "${userEnteredCode.value}"
        transitions:
          actions:
            equal: "wrongCode"
            notequal: "${flow.value}"
    
  • conditionEquals:
        component:"System.ConditionEquals"
        properties:
          source: "${addressVariable.value.state} - ${addressVariable.value.country}"
          value: "CA - USA"
        transitions:
          actions:
            equal: goCalfifornia
            notequal: goSomewhereElse
  • main: true
    name: "Shoppingbot"
    context:
      variables:
        yesnoVar: "YES_NO"
        
    ...
    
     confirmBuy:
        component: "System.ConditionEquals"
        properties:
          source: "${yesnoVar.value.yesno}"
          value: "YES"
        transitions:
          actions:
            equal: "deviceDone"
            notequal: "cancelOrder"
      deviceDone:
        component: "System.Output"
        properties:
          text: "Your ${devices.value} is on its way."
        transitions:
          return: "done"
      cancelOrder:
        component: "System.Output"
        properties:
          text: "Thanks for your interest."
        transitions:
          return: "done"
  • context:
      variables:
        wordLength: "int"
        words: "string"
    states:
      askName:
        component: "System.Text"
        properties:
         prompt: "What is your name?"
         variable: "words"
      setVariable:
        component: "System.SetVariable"
        properties: 
          variable: "wordLength"
          value: "${words.value?length}"
      conditionEquals:
        component: "System.ConditionEquals"
        properties:
          source: "${(wordLength.value?number > 2)?then('valid', 'invalid')}"
          value: "valid"
        transitions:
          actions:
            equal: "checkFirstNameinDatabase"
            notequal: "inValidName"
      done:
        component: "System.Output"
        properties:
          text: "Done"
        transitions:
          return: "done"
      checkFirstNameinDatabase:
        component: "System.Output"
        properties:
          text: "Check the first name in the database."
        transitions:
          return: "done"
      inValidName:
        component: "System.Output"
        properties:
          text: "This name is not valid. It needs to be at least three letters."
        transitions:
          return: "done"

System.ConditionExists

Utilice este componente para comprobar la existencia de una variable especificada. Para encaminar el diálogo según el valor, defina la clave de transiciones mediante las acciones exists y notexist.

Nota

Este componente no está disponible en el diseñador de flujos visuales. En su lugar, puede utilizar el conmutador para este fin.
Propiedades Descripción ¿Obligatoria?
variable Nombre de la variable
main: true
name: "HelloKids"
context:
  variables:
    foo: "string"
    lastQuestion: "string"
    lastResponse: "string"
states:
  intent:
    component: "System.Intent"
    properties:
      variable: "iResult"
    transitions:
      actions:
        Talk: "checkUserSetup"
        unresolvedIntent: "checkUserSetup"
  checkUserSetup:
    component: "System.ConditionExists"
    properties:
      variable: "user.lastQuestion"
    transitions:
      actions:
        exists: "hellokids"
        notexists: "setupUserContext"
  setupUserContext:
    component: "System.CopyVariable"
    properties:
      from: "lastQuestion,lastResponse"
      to: "user.lastQuestion,user.lastResponse"
    transitions:
      ...
...

System.Switch

Utilice este componente para cambiar los estados en función del valor de una variable.

Nota

En este tema se trata el uso de este componente en modo YAML. Para obtener información sobre su uso en el diseñador de flujos visuales, consulte Cambiar.
Activa un enrutamiento basado en valores similar al componente System.ConditionEquals. El componente System.Switch selecciona una ruta de ejecución mediante la comparación de una lista de valores con una propiedad variable o source. Cuando los valores coinciden, el componente dispara una transición de acción que asigna un nombre al estado que inicia la ruta de ejecución. Puede agregar una transición NONE cuando el juego de valores actual de la variable no coincide con ninguno de los elementos definidos para la propiedad values. Configuración del flujo de diálogo para acciones inesperadas describe cómo el componente System.Switch permite al bot de aptitud manejar de forma adecuada las entradas de usuario incorrectas.
switchOnCategory:
    component: "System.Switch"
    properties:
      variable: "category"
      values:
      - "Vehicle"
      - "Property"
      - "Other"
    transitions:
      actions:
        NONE: "ActionNoLongerAvailable"
        Vehicle: "getVehicleQuote"
        Property: "getPropertyQuote"
        Other: "getOtherQuote"
Propiedad Descripción ¿Obligatoria?
variable Variable cuyo valor actual se usa como base para la transición de cambio. Defina la propiedad values como una lista de valores de comparación. El motor de diálogo ignora la propiedad variable cuando también se ha definido la propiedad source. No
source La propiedad source es una alternativa a la propiedad variable. No
values Lista de valores utilizados para realizar comparaciones con las propiedades source o variable.
Nota

Esta propiedad no está disponible en el diseñador de flujos visuales del componente. Consulte Switch.

¿Cómo se utilizan las expresiones de Apache FreeMarker con el componente System.Switch?

Puede ajustar los criterios de coincidencia a valores y formatos específicos definiendo las propiedades value y source con las expresiones de Apache FreeMarker. Por ejemplo, puede definir la expresión mediante operaciones de FreeMarker incorporadas, como date y string:
  switch2:
    component: "System.Switch"
    properties:
      source: "${startDate.value.date?string('dd-MM-yyyy')}"
      values:
      - "17-12-2017"
      - "18-12-2017"
    transitions:
      actions:
        "17-12-2017": goToday
        "18-12-2017": goTomorrow