Open elpimous opened 6 years ago
Hi
It's because rs.reply()
is a synchronous method and can't return the reply until everything has finished. When it's processing the tags in the reply and sees the <call>
tag, it runs the Python pause
function you defined, which makes it wait a couple seconds before returning a string. Then it can finally substitute that string in place of the <call>
tag and start returning the reply.
So you'll call rs.reply()
and it will hang for 2 seconds before returning the final reply all at once.
You're probably best off handling the delay outside the RiveScript module, like,
# (rivescript)
# make up a `<pause #>` tag and use it instead of `<call>`:
- a moment, searching for best AI response <pause 2> Ok, I have it now {weight=50}
reply = bot.reply(user, message)
parts = re.split(r'<pause \d+?>', reply) # split at a `<pause>` tag but include the tag:
# ["a moment, searching for best AI response ", "<pause 2>", "Ok, I have it now"]
for part in parts:
m = re.search(r'^<pause (\d+?)>$', part)
if m: # this is the `<pause>` tag
time.sleep( int(m.group(1) ) # sleep the 2 seconds
else:
print(part) # or whatever
Thanks for explanations !! and (félicitations pour la demande en mariage !) (I wish you the best, Noah) Vincent
ps : parts = re.split(r'<pause \d+?>', reply) doesn't keep pause part in parts ! searching...
another re command ? Didn't find correct one ! thanks
Ah sorry, I meant to include parenthesis around the regexp:
parts = re.split(r'(<pause \d+?>)', reply)
Very good ! works very nicely !!
reply = rs.reply(user, message)
# added pause tag ex : <pause 2> (2 seconds)
parts = re.split(r'(<pause \d+?>)', reply) # split at a `<pause>` tag but include the tag:
# ["a moment, searching for best AI response ", "<pause 2>", "Ok, I have it now"]
for part in parts:
m = re.search(r'^<pause (\d+?)>$', part)
if m: # this is the `<pause>` tag
time.sleep( int(m.group(1) )) # sleep x seconds
else:
print(part)
Hi all.
Need to see Alfred pause into a retry, to simulate brain search activity...
here is my simple macro :
here is my try (failed) :
It should speak, make a 2s pause, and speak again, but it just starts with pause, and after, speak all sentence (a moment, searching for best AI response Ok, I have it now)
?