Hi,
I wonder what’s the best way of creating slots, that are not obligatory.
What I mean by that? Let me define a form as presented below:
forms:
make_appointment_form:
1_name_and_surname:
- entity: persName
type: from_entity
role: client
2_date_of_birth:
- entity: time
type: from_entity
3_city:
- entity: placeName
type: from_entity
4_payment:
- entity: payment
type: from_entity
5_service:
- entity: service
type: from_entity
6_specialist_name_and_surname:
- entity: persName
type: from_entity
role: doctor
7_specialization:
- entity: specialization
type: from_entity
Now, in order to perform an actual search in my database I need either ‘5_service’ or ‘6_specialist_name’ or ‘7_specialization’. I don’t need all 3, although if user provides them in one sentence, then that’s not a problem. I will run a DB search with 3 parameters, not 1 or 2. So how to make form take this into account? It should accept just one response with either 1,2 or 3 parameters (slots). If just one is provided, then it shouldn’t investigate other two? And if two or three are given (in one response), then that’s okey as well.
I saw this issue add possibility to define optional slots for forms · Issue #6939 · RasaHQ/rasa · GitHub, but as I understand - it’s currently on hold, so… What’s the best alternative?
There are two solutions, that I’ve thought of:
- Removing this 3 slots from the form and fix stories (rules) to take into account scenarios with different set of “parameters”.
- Custom mappings of slots, that will remove not provided ones (so if for example I recognize ‘5_service’ and ‘6_specialist_name_and_surname’ in a response, then I remove ‘7_specialization’ from required slots (so that form wouldn’t ask for it anymore)).
What I don’t like about these solutions is neither of them seems to be an elegant one.
Any suggestions?