How to do conditional FAQ

I’m trying to do some FAQ with conditions. For example, if ask ‘How to deal with A’, the system would reply with buttons of ‘condition 1’ and ‘condition 2’, once user picks one condition, then the system will reply the solution of condition n of A. Pre-defined data as below:

data = {
  'question_1' : {
    "condition_1": solution11_url,
    "condition_2": solution12_url
  'question_2' : {
    "condition_1": solution21_url,
    "condition_2": solution22_url


I’m wondering what’s the best way to do it in Rasa.

So far, I wrote a action to handle this as below:

class ActionConditionFaq(Action):
	def name(self) -> Text:
		return "action_condition_faq"
	def run(self, dispatcher, tracker, domain) -> List[EventType]:
		q = tracker.get_slot("question")
		btns = data[q]
		buttons = []
		for b in btns:
			buttons.append(make_button(b, '/choose_condition{{"condition":"{0}"}}'.format(b)))
		dispatcher.utter_message("please choose one related condition", buttons)
		cd = tracker.get_slot("condition")
		if q and cd:
			dispatcher.utter_message('guide as below {0}:'.format(data[q][cd]))
		return []

My question is that how to make sure, after generating the btns, the system will get reply from user, then the system can show solution url based on question and user chosen condition.


What’s the use-case you’ve got in your mind? I can imagine that a lot of FAQ questions can be answered directly without the need for a submenu of buttons. Do all FAQ questions that you have require buttons?

@koaning Thanks for your attention. I’m building some rasa app for real world practice. One question has to face is that there is no guarrentee that the language material is enough to train FAQ question, so there’re always inappropriate answers from FAQ. The best way to deal with problem (I can think of) might be that after the user question, the system list the top questions based on confidence then let the user to choose one or none of them, then show the answer. I’ve seen some websites are using the stratege.

With rasa, I’m not sure how to get the top confidence list of FAQ answer candidates, and then list them out to let user choose.

Some people suggested to use elasticsearch to deal with FAQ, but I prefer rasa to handle this issue if possible.

Thanks again!