# Action Step - Variable Operation
Smart ChatBot provides you with various built-in operations for variable modification.
There are 6 types of variable in Smart ChatBot:
Type | Storage | Example | Operation |
---|---|---|---|
Text | letters, words, sentences... | Hi, Smart ChatBot. | cutting, change case, encode, decode... |
Number | number | 123.45 | + - x ÷, mod, power, log, root, round... |
Boolean | either "yes" or "no" | yes | assign |
Date | date | 2021-03-30 | format, add months/weeks/days |
DateTime | date and time | 2021-03-30 16:52:00 | format, add months/weeks/days/hours/minutes |
JSON | a series of variables | {"name":"jack", "age":"10"} | load, get, update, remove, count, sum, average, sort, shuffle, reverse... |
Click "Basic Actions" in the Action step and here are the "Set Variable Value" and "Clear Variable Value".
# Clear Custom Field / Clear JSON
To clear text, number, boolean, date, datetime variable, please use the Clear Custom Field action.
To clear JSON variable, please use the Remove All Items operation in the JSON Operation.
# input value
"input value" operation is used to assign value to a variable. This operation works for any variable type.
TIP
"input value" for text variable can be used to connect several text variables. See the below picture for where to put original value and operated value.
# Math Formula
With this operation, you can now do formula calculation directly in the Action Step - "Set Variable Value" and Condition Step - "Value".
Math operations and function supported:
+, -, *, e, pi, PI, abs(), min(), max(), ceil(), floor(), log(), pow(), round(), sqrt(), sin(), cos(), tan()
Please note that
If the formula is invalid, the system will return 0 to number variable and empty to text variable.
# Set Text Variable
# trim text
Description | e.g. Before | e.g. After |
---|---|---|
remove spaces before or after the text | " abc " |
"abc" |
# sub string
Description | e.g. Before | e.g. After |
---|---|---|
get part of the text | "Hi, Smart ChatBot!" | "Smart ChatBot" |
Note
Index starts from 0. Every character counts including space and punctuation.
# replace string / replace string case sensitive
Description | e.g. Before | e.g. After |
---|---|---|
replace part of the text | "Hi, Smart ChatBot!" | "Hello, Smart ChatBot!" |
Note
In case sensitive situation, you have to put exactly "Hi" rather than "hi", "HI" or "hI".
# to lower / upper case
Type | e.g. Before | e.g. After |
---|---|---|
to lower case | "Hi, Smart ChatBot!" | "hi, Smart ChatBot!" |
to upper case | "Hi, Smart ChatBot!" | "HI, Smart ChatBot!" |
# generate random text
Description | e.g. Before | e.g. After |
---|---|---|
as the name | "code: XXXX-####-xxxx" | "code: UBWT-3657-lkzb" |
This feature is useful when you need to generate one-time verification code or reference code.
# url encode / decode
Type | e.g. Before | e.g. After |
---|---|---|
encode | "Hi, Smart ChatBot!" | "Hi%2C%20Smart ChatBot!" |
decode | "Hi%2C%20Smart ChatBot!" | "Hi, Smart ChatBot!" |
# base64 encode / decode
Description | e.g. Before | e.g. After |
---|---|---|
encode | "Hi, Smart ChatBot!" | "SGksIFVDaGF0IQ==" |
decode | "SGksIFVDaGF0IQ==" | "Hi, Smart ChatBot!" |
# to URL friendly slug
Description | e.g. Before | e.g. After |
---|---|---|
replace spaces with hyphens and remove the rest signs | "it's a good day" | "its-a-good-day" |
# get text before/after ...
Description: get part of the text.
Type | e.g. Before | e.g. After |
---|---|---|
get text before another text | name: Smart ChatBot, city: Melbourne | name |
get text before last occur of another text | name: Smart ChatBot, city: Melbourne | name: Smart ChatBot, city |
get text after another text | name: Smart ChatBot, city: Melbourne | Smart ChatBot, city: Melbourne |
get text after last occur of another text | name: Smart ChatBot, city: Melbourne | Melbourne |
# Set Number Variable
# get text length
Description | e.g. Before | e.g. After |
---|---|---|
as the name | 500.59 | 6 |
# generate random number
Description | e.g. Before | e.g. After |
---|---|---|
as the name | n/a | 56 |
# add / subtract / multiply / divide / modulus / power / natural logarithm / square root
Description | e.g. Before | e.g. After |
---|---|---|
as the name | 7 | 8 |
TIP
in "natural logarithm", when you are calculating log2(8) = ? put 8 as "Value" and 2 as "Number".
# round
Description | e.g. Before | e.g. After |
---|---|---|
as the name | 7.8693 | 7.87 |
# floor / ceil
Description: get approximate integer.
Type | e.g. Before | e.g. After |
---|---|---|
floor | 6.55 | 6 |
ceil | 6.55 | 7 |
# Set DateTime Variable
# from formatted text
Description | e.g. Before | e.g. After |
---|---|---|
get DataTime value from formatted text | 00:00:00 30th Aug, 2020 | 2020-08-30 00:00:00 |
# add minutes / hours / days / weeks / months
Description | e.g. Before | e.g. After |
---|---|---|
as the name | 2021-01-01 00:00:00 | 2021-01-01 00:01:00 |