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