def test_deprecation_warning_active_form(): form = {"name": "my form"} state = {"events": [], "sender_id": "old", "active_loop": form} tracker = Tracker.from_dict(state) with pytest.warns(DeprecationWarning): assert tracker.active_form == form
async def run(self, action_call: Dict[Text, Any]) -> Optional[Dict[Text, Any]]: from rasa_sdk.interfaces import Tracker action_name = action_call.get("next_action") if action_name: logger.debug(f"Received request to run '{action_name}'") action = self.actions.get(action_name) if not action: raise ActionNotFoundException(action_name) tracker_json = action_call.get("tracker") domain = action_call.get("domain", {}) tracker = Tracker.from_dict(tracker_json) dispatcher = CollectingDispatcher() if utils.is_coroutine_action(action): events = await action(dispatcher, tracker, domain) else: events = action(dispatcher, tracker, domain) if not events: # make sure the action did not just return `None`... events = [] validated_events = self.validate_events(events, action_name) logger.debug(f"Finished running '{action_name}'") return self._create_api_response(validated_events, dispatcher.messages) else: logger.warning("Received an action call without an action.")
async def generic_action(self, request): action_name = request.get("next_action") if action_name: _LOGGER.debug("Received request to run '{}'".format(action_name)) tracker_json = request.get("tracker") domain = request.get("domain", {}) tracker = Tracker.from_dict(tracker_json) dispatcher = CollectingDispatcher() if action_name.endswith("_form"): intent_id = action_name[:-5] intent = await self.asm.memory.get( self.config['skill-id'] + "_intents", intent_id) gfa = GenericFormAction() gfa.set_name(action_name) gfa.set_intent(intent) gfa.set_domain(domain) gfa.set_memory(self.asm.memory) events = gfa.run(dispatcher, tracker, domain) if not events: # make sure the action did not just return `None`... events = [] validated_events = self.validate_events(events, action_name) _LOGGER.debug("Finished running '{}'".format(action_name)) else: _LOGGER.warning("Received an action call without an action.") return {"events": validated_events, "responses": dispatcher.messages}
def run(self, action_call): action_name = action_call.get("next_action") if action_name: logger.debug("Received request to run '{}'".format(action_name)) action = self.actions.get(action_name) if not action: raise Exception( "No registered Action found for name '{}'.".format(action_name) ) tracker_json = action_call.get("tracker") domain = action_call.get("domain", {}) tracker = Tracker.from_dict(tracker_json) dispatcher = CollectingDispatcher() events = action(dispatcher, tracker, domain) if not events: # make sure the action did not just return `None`... events = [] validated_events = self.validate_events(events, action_name) logger.debug("Finished running '{}'".format(action_name)) return self._create_api_response(validated_events, dispatcher.messages) else: logger.warning("Received an action call without an action.")
async def process_actions(self, action_call): from rasa_sdk.interfaces import Tracker action_name = action_call.get("next_action") if action_name and action_name.strip(): logger.debug(f"Received request to run '{action_name}'") tracker_json = action_call["tracker"] domain = action_call.get("domain", {}) tracker = Tracker.from_dict(tracker_json) dispatcher = CollectingDispatcher() events = await ActionProcessor.process_action( dispatcher, tracker, domain, action_name) if not events: events = [] validated_events = ActionExecutor.validate_events( events, action_name) logger.debug(f"Finished running '{action_name}'") return ActionExecutor._create_api_response(validated_events, dispatcher.messages) logger.warning("Received an action call without an action.") return None
def test_tracker_with_slots(): form = {"name": "my form"} state = {"events": [], "sender_id": "old", "active_loop": form} tracker = Tracker.from_dict(state) tracker.add_slots([SlotSet("my slot", 5), SlotSet("my slot 2", None)]) assert tracker.slots["my slot"] == 5 assert tracker.slots["my slot 2"] is None
def test_active_loop_in_tracker_state(): form = {"name": "my form"} state = {"events": [], "sender_id": "old", "active_loop": form} tracker = Tracker.from_dict(state) assert tracker.current_state()["active_loop"] == form
def test_parsing_of_trackers_with_old_active_form_field(): form = {"name": "my form"} state = {"events": [], "sender_id": "old", "active_form": form} tracker = Tracker.from_dict(state) assert tracker.active_loop == form
def test_tracker_active_loop_parsing(active_loop: Dict): state = {"events": [], "sender_id": "old", "active_loop": active_loop} tracker = Tracker.from_dict(state) assert tracker.active_loop == active_loop