0

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

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 []
4

1 回答 1

0

所以首先,使用dispatcher.utter_button_message(msg, buttons)代替utter_button_template.

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

你必须写一个故事来处理这个意图。如果这是此按钮的独特意图(即您没有使用类似YesNo按钮的通用内容),那么最好的方法是使用MappingPolicy. 无论哪种方式,您还必须将以下故事添加到您的数据中:

## button_specific_action
* value
 - corresponding_action_for_value

于 2019-08-03T23:18:39.000 回答