Kontrollkomponenten

Diese Kontrollkomponenten im YAML-Modus leiten den Ablauf weiter, je nachdem, ob die Benutzereingabe mit einem vordefinierten Wert übereinstimmt.

System.ConditionEquals

Diese Komponente ändert die Navigation basierend auf einem Variablenwert.

Hinweis

Diese Komponente ist im Visual Flow Designer nicht verfügbar. Sie können stattdessen den Switch für diesen Zweck verwenden.
Mit dieser Komponente können Sie den Dialogablauf verzweigen, wenn ein Wert abgeglichen wird. Diese Komponente führt wertbasiertes Routing durch, indem die für ihre Eigenschaften source oder variable festgelegten Werte mit dem von der Eigenschaft value gespeicherten Wert verglichen werden. Die Komponente löst die Aktionen equal und notequal entsprechend einer Übereinstimmung (oder keiner Übereinstimmung) aus. In dem folgenden Snippet wird der Kunde an den Status orderPizza weitergeleitet, wenn die für die Kontextvariable orders extrahierte Eingabe mit pizza übereinstimmt, oder an den Ausführungspfad, der mit dem Status orderPasta beginnt, wenn dies nicht der Fall ist.
  Check for Pizza:
    component: "System.ConditionEquals"
    properties:
      variable: "orders"
      value: "pizza"
    transitions:
      actions:
        equal:  "orderPizza"
        notequal: "orderPasta"
Eigenschaften Beschreibung Erforderlich?
variable Der Name der Variablen, deren aktueller Wert das Routing bestimmt. Die Dialog-Engine ignoriert die Eigenschaft variable, wenn Sie auch die Eigenschaft source definiert haben. Nein
source Die Eigenschaft source ist eine Alternative zur Eigenschaft variable. Nein
value Der Wert, der mit den Eigenschaften source oder variable verglichen wird. Ja

Wie werden Apache FreeMarker-Ausdrücke mit der Komponente "System.ConditionEquals" verwendet?

Sie können die Übereinstimmungskriterien auf bestimmte Werte und Formate eingrenzen, indem Sie die Eigenschaften value und source mit Apache FreeMarker-Ausdrücken definieren. Beispiel:
  • 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

Mit dieser Komponente prüfen Sie, ob eine bestimmte Variable vorhanden ist. Um die Unterhaltung entsprechend dem Wert weiterzuleiten, definieren Sie den Übergangsschlüssel mit den Aktionen exists und notexist.

Hinweis

Diese Komponente ist im Visual Flow Designer nicht verfügbar. Sie können stattdessen den Switch für diesen Zweck verwenden.
Eigenschaften Beschreibung Erforderlich?
variable Der Name der Variablen Ja
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

Mit dieser Komponente können Sie den Status basierend auf einem Variablenwert ändern.

Hinweis

In diesem Thema wird die Verwendung dieser Komponente im YAML-Modus behandelt. Informationen zur Verwendung im Visual Flow Designer finden Sie unter Switch.
Aktiviert wertbasiertes Routing, ähnlich wie bei der Komponente System.ConditionEquals. Die Komponente System.Switch wählt einen Ausführungspfad aus, indem eine Werteliste mit einer variable- oder source-Eigenschaft verglichen wird. Wenn die Werte übereinstimmen, löst die Komponente einen Aktionsübergang aus, der den Status benennt, der den Ausführungspfad startet. Sie können einen NONE-Übergang hinzufügen, wenn der aktuelle Wert, der für die Variable festgelegt ist, mit keinem der für die Eigenschaft values definierten Elemente übereinstimmt. Unter Dialogablauf für unerwartete Aktionen konfigurieren wird beschrieben, wie Ihr Skillbot mit der Komponente System.Switch eine falsche Benutzereingabe ordnungsgemäß verarbeiten kann.
switchOnCategory:
    component: "System.Switch"
    properties:
      variable: "category"
      values:
      - "Vehicle"
      - "Property"
      - "Other"
    transitions:
      actions:
        NONE: "ActionNoLongerAvailable"
        Vehicle: "getVehicleQuote"
        Property: "getPropertyQuote"
        Other: "getOtherQuote"
Eigenschaft Beschreibung Erforderlich?
variable Eine Variable, deren aktueller Wert als Basis für den Switch-Übergang verwendet wird. Definieren Sie die Eigenschaft values als Liste mit Vergleichswerten. Die Dialog-Engine ignoriert die Eigenschaft variable, wenn Sie auch die Eigenschaft source definiert haben. Nein
source Die Eigenschaft source ist eine Alternative zur Eigenschaft variable. Nein
values Die Werteliste, die mit den Eigenschaften source oder variable verglichen wird.
Hinweis

Diese Eigenschaft ist im Visual Flow Designer der Komponente nicht verfügbar. Siehe Switch.
Ja

Wie werden Apache FreeMarker-Ausdrücke mit der Komponente "System.Switch" verwendet?

Sie können die Übereinstimmungskriterien auf bestimmte Werte und Formate eingrenzen, indem Sie die Eigenschaften value und source mit Apache FreeMarker-Ausdrücken definieren. Sie können den Ausdruck z.B. mit integrierten FreeMarker-Vorgängen definieren, wie date und 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