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.
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 .
|
Sí |
¿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.
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 | Sí |
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.
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. |
Sí |
¿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