我想收听在自定义操作中的用户,然后继续执行该自定义操作。 基本上我正在寻找的是
我在自定义操作中有一个循环,从0到5。 对于每个值,我想从用户那里获取一些输入并继续执行该循环。
def Action():
for 0 to 5:
input = action_listen
// do something with input
答案 0 :(得分:0)
为此,您应该使用form。表单会循环显示您定义的一组插槽,直到所有插槽都填满。
在常规操作中使用action_listen
循环是行不通的,因为操作只有一个run()
方法,并且仅在返回run()
方法后,事件才会添加到跟踪器中,操作完成后(您将无法恢复操作)。
答案 1 :(得分:0)
感谢您的回复,但是一些技巧也可以让我在自定义操作中执行相同的操作。
我在每次迭代时都以 FollowUpAction 的形式返回了 Form ,并将循环变量减少了一个。
现在,表单将要求用户获取所需的插槽(对信息进行必要的处理),然后再次使用SlotSet将插槽设置为“无”。现在,以 FollowUpAction 的形式返回 Action 。
通过这种方式,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")]