Timing Flows

View as Markdown

Flows related to timing and reacting to periods of silence.

wait $time_s $timer_id="wait_timer_{uid()}"

Wait the specified number of seconds before continuing

Example:

import timing
import core
flow delayed bot say $text
wait 0.5
bot say $text
flow main
user said something
start delayed bot say "I say this later"
start bot say "I say this first"
wait indefinitely
> hello
I say this first
I say this later

repeating timer $timer_id $interval_s

Start a repeating timer

Example:

import timing
import core
flow reacting to my timer
match TimerBotAction.Finished(timer_name="my_timer")
bot say "tick"
flow main
activate reacting to my timer
user said something
repeating timer "my_timer" 0.4 or wait 1.0
wait indefinitely
> test
tick
tick

user was silent $time_s

Wait for when the user was silent for $time_s seconds

Example:

import timing
import core
flow reacting to user silence
user was silent 5.0
bot say "Can I help you with anything else?"
flow main
activate reacting to user silence
while True
user said something
bot say "sounds interesting"
> I am going to the zoo
sounds interesting
# (Wait for more than 5 seconds)
Can I help you with anything else?

user didnt respond $time_s

Wait for when the user was silent for $time_s seconds while the bot was silent

Example:

import timing
import core
flow repeating if no user response
global $last_bot_script
user didnt respond 5.0
bot say $last_bot_script
flow main
activate tracking bot talking state
activate repeating if no user response
user said something
bot say "How can I help you today?"
user said something
> hi
How can I help you today?
# (Wait for more than 5 seconds)
How can I help you today?

bot was silent $time_s

Wait for the bot to be silent (no utterance) for given time

Example:

import timing
import core
flow inform processing time
user said something
bot was silent 2.0
bot say "This is taking a bit longer"
flow processing user request
user said "place the order"
wait 4.0
bot say "order was placed successfully"
flow main
activate inform processing time
activate processing user request
> place the order
# After about 2 seconds:
This is taking a bit longer
# After and additional 2 seconds:
order was placed successfully