Dynamic variables compute their own values by executing statements and logical expressions. A dynamic variable assigns itself the result of a calculation or operation. The dynamic variable types are dynamic string, dynamic number, and dynamic True/False (Boolean). 

Figure shows the lightning bolt used to designate that a variable type is dynamic.

In the user interface, dynamic variables are designated by a lightning bolt symbol to differentiate them from other variable types. The value of a dynamic variable is the result of JavaScript-like statements, which can include selected Math.js expressions and additional functions developed by Genesys. See arithmetic operators and functions, MathJS function reference, and additional functions you can use in dynamic variables. A logical expression in a dynamic variable can evaluate the state of other variables.

Each dynamic variable type allows you to embed an expression. These statements define the value of the variable, potentially based on other variables. The result must match the type of dynamic variable. For example, the code in a dynamic string must evaluate to a string value.

Note: Many examples in the MathJS documentation are written in JavaScript. Genesys Cloud script designers should drop “math.” prefixes from the beginning of each expression. For example, if the documented MathJS expression is math.add(1,3), convert that to add(1,3) in your dynamic variable. Or, if example code in the MathJS documentation is something like math.fraction(numerator, denominator), the equivalent dynamic number variable is the fraction(numerator, denominator) part.

As for assigning to the dynamic variable, you don’t do that explicitly; the last value evaluated is assigned to the dynamic variable. For example, if you enter these expressions as a dynamic variable:

x = 5; 
y = x + 2; 
x

All three expressions are evaluated in top-down order. The value of the last expression is assigned to the dynamic variable. In this example, x has a value of 5, which is assigned to the dynamic variable.

Example 1: Use a dynamic number to calculate user inputs on a form

In this example, a dynamic number variable calculates the result of several values entered in a form.

Figure shows input form in design mode

In design mode, a vertical stack of input boxes prompts for user input.

Figure shows the appearance of the form in preview mode

In preview mode or at run time, values entered on the form are calculated by statements in the dNum_TestNum variable, and the result is shown.

The dNum_TestNum variable contains the formula that performs this calculation:

{{num_var1}} + {{num_var2}} - {{num_var3}} * {{num_var4}} / {{Num_TestNum}} + 2.1

Figure shows calculation formula in a dynamic number variable.

For the values shown above, the computation is:

10 + 10 - 4 * 2 / 2 + 2.1

The calculation is performed whenever one of the variables that the calculation uses changes.

In the example shown, the result stored in dNum_TestNum is 18.1.

Example 2: Use a dynamic True/False (Boolean) to determine whether numeric variables match

In this example, a dynamic Boolean variable returns true if numeric inputs match or false if they don’t match.

Figure shows design of form with 2 numeric values

In design mode, the page shows two numeric inputs whose values are stored in numeric variables. Code in a dynamic Boolean compares them for equality.

dynamic_boolean_preview

In preview mode or at run time, values entered on the form are compared for equality.

Figure shows how to edit the variable

The formula in dBool_Basic is:

{{num_dBoolTest}} == {{num_dBoolTest2}}

For the values shown, the value of dBool_Basic is false since 2 does not equal 1.

The result is calculated whenever the value of either input variable changes.

Example 3: String manipulations

In the next two examples, dynamic string variables parse and rewrite user input. An expression in the dStr_Exp variable rewrites text typed by the user to “This is fun.” An expression in dStr_Test inverts case when a check box changes state.

Figure shows the appearance of components and variables in design mode.

Text input by the user is stored in str_overwrite. Below that is dynamic variable dStr_Exp performing this expression:

slice("This is fun.", 0 ,length({{str_overwrite}}))

In preview mode or at runtime, any text typed is reworded. The string is rewritten when the value of str_overwrite changes.

Figure shows appearance of the page at runtime

The Swap Lower and Upper check box toggles the case of dStr_Test. Its formula is:

ifElse({{bool_swapLowerUpper}} == false, lower(slice({{str_HELLO worlds}}, 0, length({{str_HELLO worlds}})-6)) + " " + upper(slice({{str_HELLO worlds}}, length({{str_HELLO worlds}})-6)), upper(slice({{str_HELLO worlds}}, 0, length({{str_HELLO worlds}})-6)) + " " + lower(slice({{str_HELLO worlds}}, length({{str_HELLO worlds}})-6)))

Check the box to invert the case of the string.

Example 4: Use a regular expression to validate strings and numbers

In this example, a dynamic Boolean variable returns true if the string input matches the provided regex:

Scripter True/False variable

The regex used here is ^\\d{1,4}$: – the core regex is \d{1,4} (between one and four digits): the slash is doubled (escaped) because it is a JavaScript string, and it is wrapped in ^  and $ to apply the pattern to the whole strings: by default, partial matches are allowed so without this wrapping, 12345 would pass because of the partial match “1234”.

Text matches Regex

Text matches Regex: true

Text matches Regex: false

For more details on Regular Expressions and debugging them, see Regexr.