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