Componentes de Controle

Esses componentes de controle do modo YAML roteiam o fluxo com base se a entrada do usuário corresponde a um valor predeterminado.

System.ConditionEquals

Este componente altera a navegação com base em um valor de variável.

Observação

Este componente não está disponível no Designer de Fluxo Visual. Você pode usar Alternar para essa finalidade.
Use este componente para ramificar o fluxo de caixas de diálogo quando um valor for correspondido. Este componente executa o roteamento baseado em valor comparando os valores definidos para sua propriedade source ou variable com o valor armazenado pela propriedade value. O componente aciona as ações equal e notequal adequadamente com base em uma correspondência (ou na falta). No trecho de código a seguir, o cliente é roteado para o estado orderPizza quando a entrada extraída para a variável de contexto orders corresponde a pizza, ou para o caminho de execução que começa com o estado orderPasta quando não.
  Check for Pizza:
    component: "System.ConditionEquals"
    properties:
      variable: "orders"
      value: "pizza"
    transitions:
      actions:
        equal:  "orderPizza"
        notequal: "orderPasta"
Propriedades Descrição 0brigatório?
variable O nome da variável cujo valor atual determina o roteamento. O Mecanismo de Caixa de Diálogo ignora a propriedade variable se você também definiu a propriedade source. No
source A propriedade source é uma alternativa à propriedade variable. No
value O valor comparado com a propriedade source ou variable. Sim

Como Uso Expressões do Apache FreeMarker com o Componente System.ConditionEquals?

Você pode restringir os critérios de correspondência a valores e formatos específicos definindo as propriedades value e source com expressões do Apache FreeMarker. Por exemplo :
  • 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

Use este componente para verificar a existência de uma variável especificada. Para rotear a caixa de diálogo de acordo com o valor, defina a chave de transições usando as ações exists e notexist.

Observação

Este componente não está disponível no Designer de Fluxo Visual. Você pode usar Alternar para essa finalidade.
Propriedades Descrição 0brigatório?
variable O nome da variável Sim
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

Use esse componente para alternar estados com base em um valor de variável.

Observação

Este tópico abrange o uso desse componente no modo YAML. Para obter informações sobre como usá-lo no Visual Flow Designer, consulte Alternar.
Ativa o roteamento baseado em valor semelhante ao componente System.ConditionEquals. O componente System.Switch seleciona um caminho de execução comparando uma lista de valores com uma propriedade variable ou source. Quando os valores correspondem, o componente aciona uma transição de ação que nomeia o estado que inicia o caminho de execução. Você pode adicionar uma transição NONE quando o valor atual definido para a variável não corresponde a qualquer item definido para a propriedade values. Configurar o Fluxo de Caixas de Diálogo para Ações Inesperadas descreve como o componente System.Switch permite que seu bot de habilidades trate adequadamente uma entrada incorreta do usuário.
switchOnCategory:
    component: "System.Switch"
    properties:
      variable: "category"
      values:
      - "Vehicle"
      - "Property"
      - "Other"
    transitions:
      actions:
        NONE: "ActionNoLongerAvailable"
        Vehicle: "getVehicleQuote"
        Property: "getPropertyQuote"
        Other: "getOtherQuote"
Propriedade Descrição 0brigatório?
variable Uma variável cujo valor atual é usado como base para a transição de alternância. Defina a propriedade values como lista de valores de comparação. O Mecanismo de Caixa de Diálogo ignora a propriedade variable quando você também definiu a propriedade source. No
source A propriedade source é uma alternativa à propriedade variable. No
values A lista de valores usados como comparações nas propriedades source ou variable.
Observação

Essa propriedade não está disponível no Designer de Fluxo Visual do componente. Consulte Alternar.
Sim

Como Uso Expressões do Apache FreeMarker com o Componente System.Switch?

Você pode restringir os critérios de correspondência a valores e formatos específicos definindo as propriedades value e source com expressões do Apache FreeMarker. Por exemplo, você pode definir a expressão usando operações incorporadas do FreeMarker, como 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