I want to provide a step by step tutorial with my chatbot.
My solution is this:
I use a form
Each step is a boolean slot
each utter_ask_ is a piece of instruction followed by a “Did you succeed?”
I use custom validation to proceed to the next step if the user affirms, ask “Could you describe the problem?” if the user denies or answer any other question the user may have.
This leads to the following problem:
If the user answers with a deny intent the bot will ask “Could you describe the problem?” followed by a repetition of the utter_ask_slot message. Is there some way to prevent this message?
@nik202 Hey, thanks for your reply! Each step of the tutorial corresponds to the text in utter_ask_<slot_name>. That text has the following format: … Did you succeed?
After deny intent the bot will have two answers (of which I want to prevent the second one):
bot: “Could you describe the problem?”
bot: "… Did you succeed? (this is what i meant by repitition of utter_ask_<slot_name>)
@nik202 Each slot is a boolean. If the user shows an affirm intent, the bot continues to the next step. If it is a deny intent, the validation method will call the dispatcher and write “Could you describe your problem?” and return {‘slot_name’: None}. Then the bot will repeat the utter_ask_slot text.
@fomsi I think so, stick to rules or story; because user can always change the conversation as per his need, he can even break after 1 steps or even after 3 etc. So, your bot need to be trained based on every scenario’s, not fixed on only one scenario.
For your reference, I will share some official rasa videos on rasa channel Rasa, please do see it again it will help you:
@nik202 I ended up using a different approach so I did not use forms in this way anymore. I save the tutorial step in a slot now and have a custom action that chooses the response based on the tutorial step and updates the slot.