Conditions reference

This reference describes the syntax for using conditions in routes . When a condition evaluates to true, the associated route is called when the route is evaluated. This syntax allows from very simple to very complex expressions using parameter values , sentiment values , comparison operators , boolean operators , and system functions .

The simplest condition is the boolean constant true , which forces a route to be called when it is evaluated. You can build more complex conditions which evaluate to true for cases like:

  • A parameter equals a specific value
  • A parameter is less than or greater than a specific value
  • A parameter is in a range of values
  • One parameter is greater than another parameter
  • A form has been completed
  • End-user sentiment is positive or negative
  • A probability from a random function

To set conditions in the console, see the handler documentation .

Comparison operators

The following comparison operators are supported:

  • HAS ( : )
  • EQUALS ( = )
  • NOT_EQUALS ( != )
  • LESS_THAN ( < )
  • LESS_THAN_EQUALS ( <= )
  • GREATER_THAN ( > )
  • GREATER_THAN_EQUALS ( >= )

Rules for comparison operators

  • The left hand side must be a parameter reference.
    $a = 5
  • The right hand side is type casted to the same type as the left hand side before comparing.
  • HAS ( : ) for anything other than strings is treated as EQUALS ( = ).

Support for strings

  • HAS ( : ) performs a substring search. If $a is set to "hello world", the following is true:
    $a : "hello"
  • When using strings on the right hand side, double quotes are needed if the string contains space. If $a is set to "hello world", the following is true:
    $a = "hello world"
  • LESS_THAN ( < ), LESS_THAN_EQUALS ( <= ), GREATER_THAN ( > ), and GREATER_THAN_EQUALS ( >= ) compare lexicographically. If $a is set to "abc", the following is true:
    $a > "aaa"

Parameter empty string and null values

You can compare string parameter values to "" , which checks if the parameter is set to an empty string.

You can compare any parameter value to null , which checks if the parameter has not been set.

Boolean operators

Conjunction (AND)

For the AND operator, expressions are evaluated iteratively, and the evaluation is short-circuited if any expression evaluates to false. Example:

$a > 0 AND $a < 100

Disjunction (OR)

For the OR operator, expressions are evaluated iteratively, and the evaluation is short-circuited if any expression evaluates to true. Example:

$a = 0 OR $a > 5

Negation (NOT)

For the NOT operator, the expression is negated. Example:

NOT $a <= 0

Rules for boolean operators

  • The boolean operators must be uppercase.
  • The boolean operators must not be part of a quoted string.

Boolean constants

The following boolean constants are defined:

true
false

To force a route to be called upon evaluation, use the following condition:

true

System functions

The system functions you can use in conditions are found in the system functions reference . The remainder of this section provides examples for using system functions in conditions.

Some example use cases of system functions include:

  • Introducing randomness in routing.

    For example, there is a 10% probability that the following condition will be true:

    $sys.func.RAND() < 0.1
  • Checking values of parameters.

    For example, for a list session parameter list with value [1, 2, 3], the following conditions are true:

    $sys.func.CONTAIN($session.params.list, 1) = true
    $sys.func.COUNT($session.params.list) = 3

Compound expressions

You can use boolean operators and comparison operators to form compound expressions. Parentheses may be used to make the logic clearer or change the precedence. For example:

(NOT ($a > 1 AND $b < 100)) OR $c = 50

If you are not using parenthesis, you cannot use both OR and AND operators in a compound expression:

$a=1 AND $b=2 AND $c=3  // VALID
$a=1 OR $b=2 OR $c=3    // VALID
$a=1 OR $b=2 AND $c=3   // INVALID
($a=1 OR $b=2) AND $c=3 // VALID

Parameter references

The parameter references you can use in conditions are found in the parameters guide . The remainder of this section provides examples for using parameters in conditions.

To check whether the current page's form is filled, use the following condition:

$page.params.status = "FINAL"

To check whether a particular form parameter was filled for the end-user's previous conversational turn, use the following condition:

$page.params.parameter-id.status = "UPDATED"

To check that a numerical session parameter is between the values 1 and 10, use the following condition:

$session.params.parameter-id >= 1 AND $session.params.parameter-id <= 10

To check that the second value of a list session parameter is equal to "hello", use the following condition:

$session.params.parameter-id[1] = "hello"

Request-scoped parameter references

When defining a condition, you can also use the request-scoped parameters to form your condition. This allows your agent to tailor responses based on sentiment analysis results .

Example conditions that use sentiment:

$request.sentiment.score < 0
$request.sentiment.score > 0
$request.sentiment.magnitude > 3.6
$request.sentiment.succeeded = true
$request.sentiment.succeeded = false
Design a Mobile Site
View Site in Mobile | Classic
Share by: