def persistent_user_id(self) -> str:
        if not isinstance(self._persistent_user_id, str) or (self._persistent_user_id.replace(" ", "") == ""):
            if self.is_alexa_v1 is True:
                user_id = SafeDict(self.alexaHandlerInput.session.user).get("userId").to_str(default=None)
            elif self.is_dialogflow_v1 is True:
                user_id = self.dialogFlowHandlerInput.user_id
            elif self.is_bixby_v1 is True:
                user_id = self.bixbyHandlerInput.request.context.userId

            if not isinstance(user_id, str) or user_id.replace(" ", "") == "":
                from inoft_vocal_framework.utils.general import generate_uuid4
                self._persistent_user_id = generate_uuid4()
                # We need to set the persistent_user_id before memorizing it, because the memorize function will access the
                # persistent_user_data, and if the user_id is not set, we will get stuck in an infinite recursion loop
                self.persistent_memorize("userId", user_id)
                print(f"user_id {self._persistent_user_id} has been memorized in the database.")
            else:
                self._persistent_user_id = user_id
            logging.debug(f"_persistent_user_id = {self._persistent_user_id}")
        return self._persistent_user_id
    def persistent_user_id(self) -> str:
        if not isinstance(self._persistent_user_id, str) or (
                not (len(self._persistent_user_id.replace(" ", "")) > 0)):
            user_id: Optional[str] = None
            if self.is_alexa is True:
                user_id = SafeDict(
                    self.alexaHandlerInput.session.user).get('userId').to_str(
                        default=None)
            elif self.is_dialogflow is True:
                user_id = self.dialogFlowHandlerInput.get_user_id()
            elif self.is_bixby is True:
                user_id = self.bixbyHandlerInput.request.context.userId
            elif self.is_discord is True:
                user_id = self.discordHandlerInput.request.author.id

            if user_id is None or not isinstance(
                    user_id, str) or not (len(user_id.replace(" ", "")) > 0):
                self._persistent_user_id = self.settings.user_data_plugin.register_new_user(
                )
            else:
                self._persistent_user_id = user_id
            logging.debug(f"_persistent_user_id = {self._persistent_user_id}")
        return self._persistent_user_id