如何从RASA中的动态创建的按钮中获取操作

时间:2019-07-31 13:46:26

标签: rasa-nlu rasa-core rasa

我已经使用以下命令创建了多个按钮响应,现在如何通过单击此按钮单击来获取操作

class ActionSearchCat(Action):
    def name(self):
        return "action_search_cat"

    def run(self, dispatcher, tracker, domain):
        buttons = []
        resp = requests.get('http://localhost:3001/api/categoryList/0')
        if resp.status_code != 200:
            # This means something went wrong.
            raise ApiError('GET /tasks/ {}'.format(resp.status_code))

        msg = resp.json().get('category_list').get('text')
        for list in resp.json().get('category_list').get('choices').items():
            for title, value in list.items():
                buttons.append({"title": title, "payload": "/"+value})

        dispatcher.utter_button_template(msg,buttons)
        return []

1 个答案:

答案 0 :(得分:0)

因此,首先使用dispatcher.utter_button_message(msg, buttons)而不是utter_button_template

现在,按钮将显示在最终用户的频道上。单击它们之后,您的AI助手收到的下一条消息将具有意图value(来自所选按钮的有效载荷)。

您必须编写一个故事来处理此意图。如果此按钮是唯一的意图(即您未在按钮上使用YesNo之类的通用名称),则最好的方法是使用MappingPolicy。无论哪种方式,您还必须在数据中添加以下内容:

## button_specific_action
* value
 - corresponding_action_for_value

相关问题