Composants de contrôle

Ces composants de contrôle en mode YAML acheminent le flux si l'entrée de l'utilisateur correspond à une valeur prédéfinie.

System.ConditionEquals

Ce composant modifie la navigation en fonction d'une valeur de variable.

Note

Ce composant n'est pas disponible dans le concepteur de flux visuel. Vous pouvez utiliser le commutateur à cette fin.
Utilisez ce composant pour diviser le flux de dialogue lorsqu'une valeur est mise en correspondance. Ce composant exécute un acheminement basé sur des valeurs en comparant les valeurs définies pour ses propriétés source ou de variable à celle stockée par la propriété value. Le composant déclenche les actions equal et notequal selon la correspondance ou l'absence de correspondance. Dans l'extrait de code suivant, le client est acheminé vers l'état orderPizza lorsque l'entrée extraite pour la variable de contexte orders correspond à pizza, ou vers le chemin d'exécution qui commence par l'état orderPasta, lorsqu'elle ne correspond pas.
  Check for Pizza:
    component: "System.ConditionEquals"
    properties:
      variable: "orders"
      value: "pizza"
    transitions:
      actions:
        equal:  "orderPizza"
        notequal: "orderPasta"
Propriétés Description Obligatoire?
variable Nom de la variable dont la valeur courante détermine l'acheminement. Le moteur de dialogue ignore la propriété variable si vous avez également défini la propriété source. Non
source La propriété source est une alternative à la propriété variable. Non
value Valeur comparée à la propriété source ou variable. Oui

Utilisation d'expressions Apache FreeMarker avec le composant System.ConditionEqual

Vous pouvez définir des critères correspondant à des valeurs et formats spécifiques en définissant les propriétés value et source à l'aide d'expressions Apache FreeMarker. Par exemple :
  • 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

Utilisez ce composant pour vérifier l'existence d'une variable spécifique. Pour diriger le dialogue en fonction de la valeur, définissez la clé transitions avec les actions exists et notexist.

Note

Ce composant n'est pas disponible dans le concepteur de flux visuel. Vous pouvez utiliser le commutateur à cette fin.
Propriétés Description Obligatoire?
variable Nom de la variable Oui
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

Utilisez ce composant pour changer d'état en fonction de la valeur d'une variable.

Note

Cette rubrique décrit l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur de flux visuel, voir Passer.
Il permet un acheminement basé sur des valeurs comme le composant System.ConditionEquals. Le composant System.Switch sélectionne un chemin d'exécution en comparant une liste de valeurs à une propriété variable ou source. Lorsque les valeurs correspondent, le composant déclenche une transition d'action qui indique l'état de départ du chemin d'exécution. Vous pouvez ajouter une transition NONE lorsque le jeu de valeurs courant de la variable ne correspond à aucun des éléments définis pour la propriété values. La rubrique Configurer le flux de dialogue pour les actions inattendues décrit comment le composant System.Switch permet au robot de compétence de traiter une entrée utilisateur incorrecte.
switchOnCategory:
    component: "System.Switch"
    properties:
      variable: "category"
      values:
      - "Vehicle"
      - "Property"
      - "Other"
    transitions:
      actions:
        NONE: "ActionNoLongerAvailable"
        Vehicle: "getVehicleQuote"
        Property: "getPropertyQuote"
        Other: "getOtherQuote"
Propriété Description Obligatoire?
variable Variable dont la valeur courante est utilisée comme base pour la transition de changement (switch). Définissez la propriété values sous forme de liste de valeurs de comparaison. Le moteur de dialogue ignore la propriété variable lorsque vous avez également défini la propriété source. Non
source La propriété source est une alternative à la propriété variable. Non
values Liste des valeurs utilisées pour la comparaison avec les propriétés source ou variable.
Note

Cette propriété n'est pas disponible dans le concepteur de flux visuel du composant. Voir Passer.
Oui

Utilisation d'expressions Apache FreeMarker avec le composant System.Switch

Vous pouvez définir des critères correspondant à des valeurs et formats spécifiques en définissant les propriétés value et source à l'aide d'expressions Apache FreeMarker. Par exemple, vous pouvez définir l'expression en utilisant des opérations FreeMarker intégrées, telles que date et 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