Any way to keep track of slots after an action?

I’ve been able to set slots for a certain action, but when I do another action where I need to get that slot which was previously set, it doesn’t work. Is there a way I can check the state of all my slots at a certain moment?

Hello @Gouveia,

You can get and set value of a slot in any action. Can you describe “it doesn’t work” more specific ? Next time, it would be better if you provide as much information as possible when you are asking for help. “It doesn’t work” does not give us any information to be able to help you.

Sure, my bad. In the meanwhile I figured out that the slots are okay, the problem is in the stories/nlu. Maybe the mods will close this topic since it’s solved, but I’ll post my current problem below still.

I intend to ask for the application due for a certain degree (differs between ‘phd’ and ‘masters’). When I ask for it alongside with the degree, it gives me the answer, if I dont specify the degree, the bot asks for it and answers accordingly to the degree. My problem right now is: after I go through the action_application and get my answer, since the degree slot gets filled after it, why is it when I ask it again without specifying the degree, it asks me for the degree instead of answering instantaneously?

stories:

  • search_application{“service”:“applicationdue”, “degree”:“phd”}
    • action_application
  • search_application{“service”:“applicationdue”}
    • utter_ask_degree
  • inform_application{“degree”:“phd”}
    • action_application
    • slot{“date”:“October 11th”}
    • slot{“degree”:“phd”}

.py

def run(self, dispatcher: CollectingDispatcher,
        tracker: Tracker,
        domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:

    service = tracker.get_slot("service")
    degree = tracker.get_slot("degree")
    if (degree== "masters"):
        date = "October 11th"
    elif (degree== "phd"):
        date = November 5th"
    dispatcher.utter_message(text="The {} for {} is: {}".format(service, degree, date))

    return [SlotSet("date",date), SlotSet("degree",degree)]

If i’m not mistaking, you are using Custom Action and not Form Action to handle the task. In that case, in order to influence the flow of the bot, you need to implement your corresponding slots as categorical type and put them in the stories: Slots

Although, if it’s possible, i would recommend you to use Form Action for this kind of interaction, since it is designed to work like that (ask for a slot if it’s not filled and do not ask if it is filled): Forms