How to collect user information (or fill slots) with action_session_start

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