我想从我的自定义按钮访问有效负载值。主要思想是从按钮中选择一个选项,然后将有效载荷值收集到一个变量中,以便将其传递给下一个动作。
自定义按钮处于一个循环中,在该循环中,我从每个项目中收集“标题”和“有效载荷”所需的值。我想以一种动态的方式实现这一目标,因为我有很多不同的变量,它们的长度是不同的。
这是到目前为止的代码:
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”的功能?
任何帮助将不胜感激。
谢谢
答案 0 :(得分:0)
如果您指定按钮有效载荷,例如/intent_name{"slot_name": "value"}
,则可以直接触发某个意图(例如intent_name
),并使用值(例如, slot_name
)到Rasa Core。在这种情况下,您甚至不需要自定义操作即可提取值,因为这些值是由Rasa(核心)自动提取的。否则,您会在对话的广告位/实体中找到这些值。
但是我找不到将这些值放入另一个变量的方法。我也尝试过tracker.latest_message.get(‘text’),但我只得到最后一个用户输入。
最后一个用户输入不是用户按下的按钮的有效载荷吗?