Examples
Lesson #0 - Hello world!¶
Every bot needs at least a main dialog. This is the dialog that gets triggered
when the bot starts. As you can see, using the #
character you can add comments
to your scripts.
Lesson #1 - Dialogs and triggers¶
Lesson #2 - say & show¶
Lesson #3 - Ask¶
Lesson #4 - Strings & numbers¶
Lesson #5 - Locations¶
Lesson #6 - Collections¶
Due to the use of
log
, you should run this script in the DialoX studio directly.
dialog main do
say "Look at the Log pane in the lower mid part of your studio window:"
show image "https://s3.eu-west-1.amazonaws.com/bsqd-out/image/13f1c476-ccb6-49c8-85e3-dae2473405dc-1280x1280.jpg"
invoke arrays
invoke lists
invoke maps
end
# see https://developer.dialox.ai/bubblescript/builtins/#list-array-functions
dialog arrays do
# an array
colors = ["red", "green", "blue", "yellow", "purple", "brown"]
# pick an item by its index
log colors[0]
# iterate through all items
say "colors:"
repeat c in colors do
say c
end
# from array to string
colors = join(colors, ", ")
say "Colors comma separated: #{colors}"
# from string to array
colors = split(colors, ", ")
# from array to string with last item different: x, y and z
say "Colors nicely formatted: #{join(colors, ", ", " and ")}"
# slice a part of the list
log slice(colors, 2, 3)
# shuffle the list
log shuffle(colors)
# reverse the list
log reverse(colors)
# get first item
log first(colors)
# get the length of the list
log length(colors)
# add something to the list
colors = colors + "cyan"
log colors
# take something out of the list
colors = colors - "yellow"
log colors
# sort
log sort(colors)
end
dialog lists do
colors = [red: [255, 0, 0], green: [0, 255, 0], blue: [0, 0, 255], yellow: [255, 255, 0]]
log colors["red"] # to show all values for red
log colors["yellow"][0] # to show the red value of yellow
log keys(colors) # to show all keys
log values(colors) # to show all values
repeat c in keys(colors) do
say "#{c} is made out of:\n
red: #{colors[c][0]}\n
green: #{colors[c][1]}\n
blue: #{colors[c][2]}"
end
end
dialog maps do
# define a map
colors = [
[color: "red" , rgb: [255, 0, 0] ],
[color: "green" , rgb: [0, 255, 0] ],
[color: "yellow", rgb: [255, 255, 0] ],
[color: "white" , rgb: [255, 255, 255] ]
]
# notice you can also do it the elixir way:
colors = [
%{ "color" => "red" , "rgb" => [255, 0, 0] },
%{ "color" => "green", "rgb" => [0, 255, 0] },
%{ "color" => "blue" , "rgb" => [0, 0, 255] },
]
# we are going to create a map with colors and their intensities
map = []
repeat c in colors do
item = [color: c.color, intensity: c.rgb[0] + c.rgb[1] + c.rgb[2]]
map = map + item
end
# sort the list on highest intensity on top
map = sort(map, field: "intensity", direction: :desc)
# show the sorted list
say "Colors, ordered by intensity"
repeat item in map do
say item.color
end
end