如何从Rasa中的按钮获取值?

时间:2019-06-25 13:39:21

标签: python rasa-core

我想从我的自定义按钮访问有效负载值。主要思想是从按钮中选择一个选项,然后将有效载荷值收集到一个变量中,以便将其传递给下一个动作。

自定义按钮处于一个循环中,在该循环中,我从每个项目中收集“标题”和“有效载荷”所需的值。我想以一种动态的方式实现这一目标,因为我有很多不同的变量,它们的长度是不同的。

这是到目前为止的代码:

def run(self, dispatcher: CollectingDispatcher,
         tracker: Tracker, domain: Dict[Text, Any],
     ) -> Text:
   for element in request.question.items:
   for l in element['choices']:
   buttons.append({"title": "{}".format(l['label']), "payload": "{}{}".format(element['id'],l['id'])})

   return [] 
dispatcher.utter_button_message(message, buttons)

同样,我的问题是如何访问选定的有效负载值。在rasa x中,我可以看到已正确选择了有效负载,例如:“ 11,true”。

但是我找不到将这些值放入另一个变量的方法。 我也尝试了tracker.latest_message.get(‘text’),但只得到了最后一个用户输入。

对于上次选择的按钮选项或上次来自机器人的讲话,是否有类似于“ tracker.latest_message.get”的功能?

任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

如果您指定按钮有效载荷,例如/intent_name{"slot_name": "value"},则可以直接触发某个意图(例如intent_name),并使用值(例如, slot_name)到Rasa Core。在这种情况下,您甚至不需要自定义操作即可提取值,因为这些值是由Rasa(核心)自动提取的。否则,您会在对话的广告位/实体中找到这些值。

  

但是我找不到将这些值放入另一个变量的方法。我也尝试过tracker.latest_message.get(‘text’),但我只得到最后一个用户输入。

最后一个用户输入不是用户按下的按钮的有效载荷吗?