Multiple questions in one session

I have a weird problem. I wrote the bot to ask for a location and job type and then he searches for a job for you. All works fine. But what if the user sees no entries and decides to search for the same job type but a different location. e.g. think of this conversation:

  • Bot: How can I help you?
  • User: I am looking for a internship job.
  • Bot : Where?
  • User: New York.
  • Bot: Ok here are 3 jobs in Ny.
  • User: What do you have in San Francisco?
  • Bot: Here are 3 internship jobs in San Francisco.

How can I model this kind of story? I am using a form to fill the slots which works, but I would need to be able to overwrite the slots and re-trigger the action. Wil this simply work automatically?

happy path

  • get_started
    • utter_get_started
  • request_job
    • job_form
    • form{“name”: “job_form”}
    • form{“name”: null}
    • utter_slots_values
  • thankyou
    • utter_noworries

Hi @plotti,

I think there will be more efficient way than this. I have solved the same issue with the following changes(denoted by arrows). Do let me know if you can find one efficient solution.

Stories.md file

* happy path
     - get_started
     - utter_get_started
* request_job
     - action_CorrectCusInfo <---
     - job_form
     - form{“name”: “job_form”}
     - form{“name”: null}
     - utter_slots_values
     - utter_ask_continue  <--
* thankyou
     - utter_noworries

domain.md file

utter_ask_continue:
    - text: "Do you wish to change your preferences?"
      buttons:
        - title: "yes"
          payload: "/request_job"
        - title: "no"
          payload: "/thankyou"

Action.py file

class CorrectCusInfo(Action):

    def name(self) -> Text:
        return "action_correct_cus_info"

    def run(self, dispatcher: CollectingDispatcher,
            tracker: Tracker,
            domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
        return [SlotSet("Role", None), SlotSet("City", None)]

Thanks a lot for your solution! Hmm so it basically overwrites the slot values if we ask it to? Thats definityl better than nothing - what I have so far.

But in a sense we are using smart chatbots to be context sensitive, and this tiny example shows its hard or IMPOSSIBLE? to do this context sensitivity… maybe I am missing something.

RASA being an open source framework has a wide range of options to address same requirement, making it very difficult to find one optimized way of approach. As and when we gain maturity in making variety of bots, we can frame solutions that are not so context specific.

Do post any better solution you encounter. It might help someone in future. @plotti. Thanks!