@yashjn72 Please try this but beware that this is an untested recommendation:
class MyKnowledgeBaseAction(ActionQueryKnowledgeBase):
def __init__(self):
knowledge_base = InMemoryKnowledgeBase("userdata.json")
super().__init__(knowledge_base)
async def run(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: "DomainDict",
) -> List[Dict[Text, Any]]:
# this is the only line you need to introduce
self.knowledge_base.load()
# this is copied from current Rasa SDK Python implementation
object_type = tracker.get_slot(SLOT_OBJECT_TYPE)
last_object_type = tracker.get_slot(SLOT_LAST_OBJECT_TYPE)
attribute = tracker.get_slot(SLOT_ATTRIBUTE)
new_request = object_type != last_object_type
if not object_type:
dispatcher.utter_message(response="utter_ask_rephrase")
return []
if not attribute or new_request:
return await self._query_objects(dispatcher, object_type, tracker)
elif attribute:
return await self._query_attribute(
dispatcher, object_type, attribute, tracker
)
dispatcher.utter_message(response="utter_ask_rephrase")
return []