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