Componenti controllo

Questi componenti di controllo in modalità YAML instradano il flusso in base al fatto che l'input dell'utente corrisponda a un valore predeterminato.

System.ConditionEquals

Questo componente modifica la navigazione in base a un valore di variabile.

Nota

Questo componente non è disponibile in Visual Flow Designer. A questo scopo è possibile utilizzare Switch.
Utilizzare questo componente per diramare il flusso della finestra di dialogo quando viene trovata una corrispondenza con un valore. Questo componente esegue l'instradamento basato su valori confrontando i valori impostati per le relative proprietà source o variable con il valore memorizzato dalla proprietà value. Il componente attiva di conseguenza le azioni equal e notequal in base a una corrispondenza (o a una mancanza di corrispondenza). Nello snippet seguente, il cliente viene instradato allo stato orderPizza quando l'input estratto per la variabile di contesto orders corrisponde a pizza o al percorso di esecuzione che inizia con lo stato orderPasta quando non lo fa.
  Check for Pizza:
    component: "System.ConditionEquals"
    properties:
      variable: "orders"
      value: "pizza"
    transitions:
      actions:
        equal:  "orderPizza"
        notequal: "orderPasta"
Proprietà descrizione; Richiesto?
variable Nome della variabile il cui valore corrente determina il ciclo di produzione. Il motore di dialogo ignora la proprietà variable se è stata definita anche la proprietà source. No
source La proprietà source è un'alternativa alla proprietà variable. No
value Il valore confrontato con le proprietà source o variable.

Come utilizzare le espressioni FreeMarker Apache con il componente System.ConditionEquals

È possibile limitare i criteri di corrispondenza a valori e formati specifici definendo le proprietà value e source con le espressioni FreeMarker di Apache. Ad esempio:
  • 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

Utilizzare questo componente per verificare l'esistenza di una variabile specificata. Per instradare la finestra di dialogo in base al valore, definire la chiave di transizione utilizzando le azioni exists e notexist.

Nota

Questo componente non è disponibile in Visual Flow Designer. A questo scopo è possibile utilizzare Switch.
Proprietà descrizione; Richiesto?
variable Il nome della variabile
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

Utilizzare questo componente per cambiare gli stati in base a un valore variabile.

Nota

In questo argomento viene descritto l'uso di questo componente in modalità YAML. Per informazioni sull'utilizzo in Visual Flow Designer, vedere Cambia.
Abilita il routing basato sul valore simile al componente System.ConditionEquals. Il componente System.Switch seleziona un percorso di esecuzione confrontando una lista di valori con una proprietà variable o source. Quando i valori corrispondono, il componente attiva una transizione di azione che assegna un nome allo stato che avvia il percorso di esecuzione. È possibile aggiungere una transizione NONE quando il valore corrente impostato per la variabile non corrisponde a nessuno degli elementi definiti per la proprietà values. In Configura flusso di finestre di dialogo per azioni impreviste viene descritto come il componente System.Switch consente al bot skill di gestire in modo normale l'input utente errato.
switchOnCategory:
    component: "System.Switch"
    properties:
      variable: "category"
      values:
      - "Vehicle"
      - "Property"
      - "Other"
    transitions:
      actions:
        NONE: "ActionNoLongerAvailable"
        Vehicle: "getVehicleQuote"
        Property: "getPropertyQuote"
        Other: "getOtherQuote"
Proprietà descrizione; Richiesto?
variable Variabile il cui valore corrente viene utilizzato come base per la transizione dello switch. Definire la proprietà values come una lista di valori di confronto. Il motore di dialogo ignora la proprietà variable quando è stata definita anche la proprietà source. No
source La proprietà source è un'alternativa alla proprietà variable. No
values Elenco di valori utilizzato come confronto con le proprietà source o variable.
Nota

Questa proprietà non è disponibile in Visual Flow Designer del componente. Vedere Switch.

Come utilizzare le espressioni FreeMarker Apache con il componente System.Switch

È possibile limitare i criteri di corrispondenza a valori e formati specifici definendo le proprietà value e source con le espressioni FreeMarker di Apache. Ad esempio, è possibile definire l'espressione utilizzando operazioni FreeMarker incorporate, come date e 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