At a certain point we ask the user to “Write down their thoughts” like a journal
Now it is impossible to capture this in an intent since this is just a long form of text of a user’s thoughts, which can be literally anything.
Hence we don’t want to run NLU on this input and I just want the bot to move ahead to the next action in the story REGARDLESS of what the user said to us.
The only exception we want is when the user says something that we are able to detect with a very high confidence. In that case we’d want the appropriate story to run.
How can I make this happen?
This seems like a very obvious use case but I am not able to figure out how to do it. I’ve exhausted all the forum posts and documentation but can’t seem to find a solution for this.
Any help would be appreciated
The most immediate solution I can think of is to activate a form with only one input.
Specifically, when the intent that starts this flow is triggered, say, “user_wants_to_give_thoughts”, you want to activate the form and store the next message the user sends in a Slot (and more specifically, in a Text-type Slot). If you configure your form correctly, the slot will get filled (remember to set influence_conversation to false for this slot!) when the user enters their journal entry, and you can follow it up with whatever actions you need.
If you want to send the journal entry to a different server, for example, you can make a custom action that follows the form deactivation by calling tracker.get_slot("some_slot_name") which should give you the block of text the user typed in.
I did what you suggested but there’s an issue. Since I cannot know which intent the user input will fall in, I can’t set an intent condition in the slot filling logic. Since I cannot do that, the slot I defined is anyway getting filled automatically and hence the form is never really running since the slot is already filled.
How do I resolve this? How do I make the slot fill only when the form is activated?