我想在自定义操作中收听用户,然后继续该自定义操作。基本上我正在寻找的是。
我有一个从 0 到 5 的自定义操作循环。对于每个值,我想从用户那里获取一些输入并继续该循环。
def Action():
for 0 to 5:
input = action_listen
// do something with input
您应该为此使用表格。表单在您定义的一组插槽上循环,直到全部填满。
在常规操作中循环action_listen
不会起作用,因为操作只有一个run()
方法,并且只有在方法返回后才会将事件添加到跟踪器run()
,之后操作完成(并且您无法重新进入它)。
感谢您的回复,但一些技巧也适用于我在自定义操作中做同样的事情。
我在每次迭代时将Form作为FollowUpAction返回,并将循环变量减一。
现在表单将要求用户获取所需的插槽(使用信息执行必要的操作)并再次使用 SlotSet 将插槽设置为无。现在将Action作为FollowUpAction以表单形式返回。
这样,每次迭代 Bot 都会收到用户的响应。
global i = 0
class Action():
def run():
for i to 5:
return [FollowUpAction('ActionForm')]
class ActionForm():
def requiredslot():
return ['take_value']
def submit():
//Do needful with input
return [SlotSet("take_value", None), FollowUpAction("my_action")]