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$ais 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 $ais 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 listwith 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

