0

我想在自定义操作中收听用户,然后继续该自定义操作。基本上我正在寻找的是。

我有一个从 0 到 5 的自定义操作循环。对于每个值,我想从用户那里获取一些输入并继续该循环。

def Action():
   for 0 to 5:
      input = action_listen
      // do something with input
4

2 回答 2

0

您应该为此使用表格。表单在您定义的一组插槽上循环,直到全部填满。

在常规操作中循环action_listen不会起作用,因为操作只有一个run()方法,并且只有在方法返回后才会将事件添加到跟踪器run(),之后操作完成(并且您无法重新进入它)。

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

于 2020-09-02T12:53:55.543 回答
0

感谢您的回复,但一些技巧也适用于我在自定义操作中做同样的事情。

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

于 2020-09-03T06:56:32.057 回答