Story. Should user go through all the intents?

Hello

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:

*intent_1

  • action_1

*intent_2

  • action_2
  • action_3
  • action_4

*intent_3

  • 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.

@deepsky

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.