Hi, I want to collect the username at the beginning of the session, and I am trying to do this by using “action_session_start” as suggested in some posts. I haven’t deployed yet. I am using “rasa shell” and “rasa x” to see the results I put in my actions, I have a “username” slot and also “utter_ask_username” template. but Bot doesn’t use anything from this action and waits for a user input, even after the first input, it doesn’t ask username. What am I doing wrong? Can you share some examples in which Bot asks some questions to fill slots? Thank you
class ActionSessionStart(Action):
def name(self) -> Text:
return "action_session_start"
@staticmethod
def fetch_slots(tracker: Tracker) -> List[EventType]:
"""Collect slots that contain the user's name and phone number."""
slots = []
logger.info("keeping only name/phone_number slots")
for key in ("username"):
value = tracker.get_slot(key)
if value is not None:
slots.append(SlotSet(key=key, value=value))
return slots
async def run(
self, dispatcher, tracker: Tracker, domain: Dict[Text, Any]
) -> List[Dict[Text, Any]]:
# the session should begin with a `session_started` event
events = [SessionStarted()]
# any slots that should be carried over should come after the
# `session_started` event
events.extend(self.fetch_slots(tracker))
# an `action_listen` should be added at the end as a user message follows
events.append(ActionExecuted("action_listen"))
return events