我如何在 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() 方法具有后才添加到跟踪器返回,之后操作完成(您无法返回)。

https://rasa.com/docs/rasa/core/forms/

感谢您的回复,但有些技巧也适用于我在自定义操作中执行相同的操作。

我在每次迭代时 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")]