YAML dictionaries
tip
YAML dictionaries are used for storing various structured data relevant to the project.
Sample use cases of YAML dictionaries:
- You can transfer the texts of your bot’s replies to a YAML dictionary in order to store them in one place and maintain them separately from the code.
- Separate dictionaries should be created for bot configuration properties which are referenced often and are liable to be changed, such as external API keys, counter thresholds, etc.
Format
YAML dictionaries are placed in files with the .yaml
or .yml
extension.
YAML is a simple format for storing typed values and standard data structures, such as sequences and key–value pairs of arbitrary depth. This is an example YAML dictionary:
start:
id: 1
summary: Greeting
answers:
- Hello, {{$client.name}}!
- {{$client.name}}, nice to meet you!
# ...
catchAll:
id: 99
summary: Unrecognized input
answers:
- Sorry, I didn’t catch that.
- Could you rephrase your question?
tip
If you want to use strings from a YAML dictionary after reaction or action tags,
they can include string interpolations.
The
{{}}
brackets can contain any valid JavaScript expression.
It will be resolved and interpolated into the string during bot runtime.Import
To import a YAML dictionary into the script, use the require
tag with a var
parameter:
require: states.yaml
var = states
tip
After being imported, the dictionary will be transformed into the equivalent JavaScript object. It can be referenced from the script by the name provided after
var
.How to use
Let’s use the dictionary defined and imported above to send a random reply to unrecognized input. Note the use of $reactions.random
to generate a random number.
state: CatchAll
event!: noMatch
script:
$temp.index = $reactions.random(states.catchAll.answers.length);
a: {{states.catchAll.answers[$temp.index]}}