Intent classification based on slot value

Hello. I am trying to create a bot where user can know about our services we provide and technologies we work on. The flow is like user can ask for list of technologies and can also then ask about a particular technology. Similar is the case with services. Now the problem is there may be common terms among technologies and services like big data. If customer writes: ‘I want to know about big data’, bot should know whether the context is about technology or service.

I have separate custom functions to show list for techs and services. Which ever function runs, it according sets a categorical slot named “context”. In user stories, I have used the value of this slot to help rasa core predicting the next function (Next function can be know_tech : describes the mentioned technology or it can be know_service: describes the mentioned service).

service path

  • service_list
    • action_service_list
  • know_service
    • slot{“context”: “services”}
    • action_know_service

tech path

  • tech_list
    • action_tech_list
  • know_tech
    • slot{“context”: “tech”}
    • action_know_tech

The know_() functions use a slot value which gets filled from user input. slot for technology is “tech” and slot for service is “services”.

intent:know_tech

intent:know_service

Problem case:

  1. User asks about services list. Bot : displays service list and set context: “services”
  2. User asks: 'I want to know about bigdata".

Here the intent can classified either know_service or know_tech as both has similar input examples. If intent gets classified as know_tech, slot “tech” gets a value “bigdata” and slot “service” remains unset. According to stories the next predicted action is action_know_service as the slot value for context is “services”. This creates a problem as function uses slot value of “services” which is unset.

I want to ask that is there any way to use slot value to decide between intents having simlar user inputs?