Story. Should user go through all the intents?


I am new to RASA and in chatbot development, sorry if my question looks naive :slight_smile: I have created a bot following the tutorial, what is still not clear for me, is the idea behind the story concept. Having a story:


  • action_1


  • action_2
  • action_3
  • action_4


  • action_5

User may say intent_3 first and the dialog may appear in the middle of the story not passing intent_1 and intent_2, how to identify such case and how to handle it properly?

I appreciate if someone could put some light on it.

Hello @deepsky,

For any intent that could be invoked by the user separately at any time, you should create a separate story which contains only that intent, like this:

Story for intent 3

* intent 3
    - action_5

Most of the time the bot should be able to predict intent 3 when you switch to it anywhere in the conversation. Then for any case in which there can be multiple intents invoked in a specific order, you can cover it like you do in your post, and the bot will understand that after intent_1 and intent_2, there is a high possibility that the next intent should be intent_3.

Thank you @fuih

Getting back to my example with 3 intents in a row, does Rasa have facility to skip issuing an utterance for intent 2 if intent_3 has already come, i.n. is there some kind of conditional utterance or it can be done only with hardcode rule in the action?

I am talking about a questionary, so if user already answered a question there no need to ask it again. Are Forms the only approach to get questions answered?

Thanks again.


No, but normally it’s the most convenient way to ask user for their information. Especially in your situation, if the user already answered a question (and you save the answer in slot A), then when the user invokes a form which is supposed to ask for information corresponding to slot A, B, C, the bot will not ask for slot A (since slot A is already assigned value) and proceed to ask for B and C.

I’m not sure I understand the idea here, especially if intent_3 is normally come after intent_2. Maybe if intent_3 set some kind of slot then you can check that slot’s value in a custom action of intent_2 and don’t utter anything if the slot is not empty.