Request information to the users without having to classify the answer as an intent

Rasa Core version: 0.10.4

Python version: 3.6.5

Operating system: Ubuntu 18.04.1 LTS

Issue: I’d like to ask a question to the users and get the answer from they once I’ve detected a given intent.

Hi, I have a bot which, among some other intents, is waiting for the users to request some similar terms to a term that have to be provided by the users. The bot will look for similar terms in a DB. I would like to get something like this:

  1. user: Tell me terms similar to bicycle

  2. bot: Please, write only the terms you would like to get similar terms

  3. user: bicycle

  4. bot: cycle, velocipede, ten-speed,…

I know that the best approach would be to get the term bicycle as an entity, but this term could be many things (I have almost 100k different terms in my DB), including many words and not just one like in this example, so the RASA NLU is not able to identify these terms as an entity, that’s why I asking to the user for writing just the term in the point 2.

The problem with this approach is that when I ask the point 2 question, I’m given the control back to RASA and when the users write the answer to that question, RASA will try to classify this in some intent instead giving me back the control to look for that term in my DB.

I’ve tried creating a new intent to classify the terms written in the point 3, but that didn’t work coz these terms may be very diverse, although I’m not sure why that is not working since, in my story file, the only possible path once the bot has detected the initial intent of finding similar terms is the intent of getting the term for which the users are requesting those similar terms.

Summarizing, is there any way of requesting information to the users from code and read the users answer without returning the control to RASA to avoid this having to detect a new intent?

Thanks in advance!

Hi,

i run into the same problem today. I wanted to ask the user (teelgram channel) for the password. I trained a list of 1000 passwords but now each single word is classified as “password”, also “Hello”, “Hi”, …

Is it possible to bypass the NLU processing?

Thanks in advance

I think in both of your cases, you can possibly avoid the entity extraction and simply do a lookup on the tokens no?

Use the classification to know where to lookup like “Find me words similar to bicycle” - Intent - find_similar words then your custom action

You can token this incoming sentences and then lookup your database for matching words I suppose

Thx for your answer.

Actually, I was trying a pretty similar approach. I´m just applying a PoS analysis and sending all the found nouns to my DB to get similar terms (I can’t send just one term since most of the times users will look for a compound term, e.g. Power take-off transmission units for land vehicles). For example:

  1. user: Tell me terms similar to bicycle

My custom action will look up “terms bicycle” in my DB and retrieve the terms with the closest distance to this.

  1. bot: cycle, velocipede, ten-speed,…

It’s working well coz I’m doing search by distance in my custom action, but I thought it should be a way to just retrieve what the users have answered to the bot question by passing the NLU processing as Sniffie said. Do you know how?

I think this issue describes the same problem:

I hope later it is possible to do this without a FormAction, because i doesn’t use the utterance templates oder any python code for actions (everything with post actions).