我如何在 Rasa 的自定义操作中使用 action_listen
How can i use action_listen inside a custom action in Rasa
我想收听 自定义操作 中的用户,然后继续该自定义操作。
基本上我要找的是。
我有一个从 0 到 5 的自定义操作循环。
对于每个值,我想从用户那里获取一些输入并继续该循环。
def Action():
for 0 to 5:
input = action_listen
// do something with input
你应该为此使用 form。表单循环遍历您定义的一组槽,直到所有槽都被填满。
在常规操作中使用 action_listen
循环将不起作用,因为一个操作只有一个 run()
方法,并且事件仅在 run()
方法具有后才添加到跟踪器返回,之后操作完成(您无法返回)。
感谢您的回复,但有些技巧也适用于我在自定义操作中执行相同的操作。
我在每次迭代时 return 将 Form 编辑为 FollowUpAction 并将循环变量减一。
现在表单将要求用户获取所需的插槽(使用信息执行必要的操作)并再次使用 SlotSet 将插槽设置为 None。现在 return 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")]
我想收听 自定义操作 中的用户,然后继续该自定义操作。 基本上我要找的是。
我有一个从 0 到 5 的自定义操作循环。 对于每个值,我想从用户那里获取一些输入并继续该循环。
def Action():
for 0 to 5:
input = action_listen
// do something with input
你应该为此使用 form。表单循环遍历您定义的一组槽,直到所有槽都被填满。
在常规操作中使用 action_listen
循环将不起作用,因为一个操作只有一个 run()
方法,并且事件仅在 run()
方法具有后才添加到跟踪器返回,之后操作完成(您无法返回)。
感谢您的回复,但有些技巧也适用于我在自定义操作中执行相同的操作。
我在每次迭代时 return 将 Form 编辑为 FollowUpAction 并将循环变量减一。
现在表单将要求用户获取所需的插槽(使用信息执行必要的操作)并再次使用 SlotSet 将插槽设置为 None。现在 return 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")]