Как получить действия от динамически созданной кнопки в 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 ответ

Итак, в первую очередь, используйте dispatcher.utter_button_message(msg, buttons) вместо utter_button_template,

Теперь кнопки будут отображаться на канале для конечного пользователя. После того, как они нажмут одну, следующее сообщение, полученное вашим помощником AI, будет иметь value (полезная нагрузка от выбранной кнопки).

Вы должны написать историю, чтобы справиться с этим намерением. Если это уникальное намерение для этой кнопки (т.е. вы не используете что-то общее, как Yes или же No для ваших кнопок), тогда лучший подход будет использовать MappingPolicy, В любом случае, вам также придется добавить следующую историю в ваши данные:

## button_specific_action
* value
 - corresponding_action_for_value

Другие вопросы по тегам