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.