Composants de contrôle

Ces composants de contrôle en mode YAML acheminent le flux en fonction de la correspondance de la saisie utilisateur avec une valeur prédéterminée.

System.ConditionEquals

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

Remarque

Ce composant n'est pas disponible dans le concepteur visuel de flux. Vous pouvez utiliser le commutateur à cette fin.
Utilisez ce composant pour orienter le flux de dialogue lorsqu'une valeur est mise en correspondance. Ce composant exécute un acheminement basé sur les valeurs en comparant les valeurs définies pour ses propriétés source ou variable par rapport à la valeur stockée par la propriété value. Le composant déclenche les actions equal et notequal en fonction d'une correspondance (ou d'une absence de correspondance). Dans le fragment 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 au parcours 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 Requis ?
variable Nom de la variable dont la valeur actuelle 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 propriété alternative à la propriété variable. Non
value Valeur comparée aux propriétés source ou variable. Oui

Comment utiliser les expressions Apache FreeMarker avec le composant System.ConditionEquals ?

Vous pouvez affiner les critères de correspondance à des valeurs et formats spécifiques en définissant les propriétés value et source avec des 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 indiquée. Pour acheminer la boîte de dialogue en fonction de la valeur, définissez la clé de transition à l'aide des actions exists et notexist.

Remarque

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

Remarque

Cette rubrique traite de l'utilisation de ce composant en mode YAML. Pour plus d'informations sur son utilisation dans le concepteur visuel de flux, reportez-vous à Basculer.
Active l'acheminement basé sur les valeurs d'une manière semblable au composant System.ConditionEquals. Le composant System.Switch sélectionne un parcours 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 nomme l'état qui démarre le parcours d'exécution. Vous pouvez ajouter une transition NONE lorsque la valeur actuelle définie pour la variable ne correspond à aucun des éléments définis pour la propriété values. La section Configuration du flux de dialogue pour les actions inattendues décrit comment le composant System.Switch permet à votre bot de brique de gérer correctement des saisies utilisateur incorrectes.
switchOnCategory:
    component: "System.Switch"
    properties:
      variable: "category"
      values:
      - "Vehicle"
      - "Property"
      - "Other"
    transitions:
      actions:
        NONE: "ActionNoLongerAvailable"
        Vehicle: "getVehicleQuote"
        Property: "getPropertyQuote"
        Other: "getOtherQuote"
Propriété Description Requis ?
variable Variable dont la valeur actuelle est utilisée comme base pour la transition. Définissez la propriété values en tant que 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 propriété alternative à la propriété variable. Non
values Liste des valeurs utilisées à titre de comparaison par rapport aux propriétés source ou variable.
Remarque

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

Comment utiliser les expressions Apache FreeMarker avec le composant System.Switch ?

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