In a dialogue, I want the bot to never ask the same question

The context

I am creating a bot that asks a sequence of question and fills slots to take an action at the end of the conversation. For example, I ask the age, the sex, the location, the number of hours of exercise, the last day of recuperation... until I reach the end of the conversation. So the stories look a bit like:


## stories_0
* greet
  - utter_q_age
* inform{"q_age": "40"}
  - utter_q_sexe
* inform{"q_sexe": "F"}
  - utter_q_hours_exercice
* inform{"q_hours_exercice": 4}
  - action_call_api
* bye
  - utter_bye
  - action_restart 

The issue

The bot will generate sequence of questions of repeat himself and never put an end to the conversation. For example, the bot asks: What's your age? Are you a man or a woman? How many hours of exercise did you do in the last week? What's your age? ... I tought of using Forms however, the slots needed to be filled depends on the nature of the conversation. In order words, I have 500 slots avaiable but only about 20-30 slots get fields in a specific stories. So I don't have required fields per say


What I need

I need the bot to only ask a question where the slots aren't filled and put an end to the conversation once satisfied.


The domains

My domains look like the following at the moment:


intents:
  - greet
  - bye 

templates: utter_q_age:

  • text: “What’s your age ?” utter_bye:
  • text: “Bye” utter_q_hours_exercice:
  • text: “How many hours of exercise did you do in the last week?”

utter_q_sexe:

  • text: “WAre you a man or a woman?” buttons:
    • title: “Man” payload: “M”
    • title: “Woman” payload: “F”

slots: age: type: float hours_exercice: type: float sexe: type: text

actions:

  • utter_q_sexe
  • utter_q_hours_exercice
  • utter_q_age
  • utter_bye
  • action_call_api

The model

I am currently using the Memoization and Keras Policy with the maxHistory set to 3, no augmentation factor =0, and tracker_limit= 500

Any ideas how to achieve this?

Thanks