async def add_chitchat_to_story(self, story, domain: Domain, indexes: List, interpreter: "NaturalLanguageInterpreter" = RegexInterpreter()): # Delete Indexes, if they greater then the length of the story or lower 0 indexes = sorted(set(indexes)) indexes = [i for i in indexes if i >= 0 and i < len(story.events)] to_add = 0 for index in indexes: index += to_add # get last Utter last_utter = None if index - 1 >= 0: last_utter = story.events[index - 1] # Intent intent = 'asdfwe' parse_data = await interpreter.parse(intent) utterance = UserUttered( intent, parse_data.get("intent"), parse_data.get("entities"), parse_data ) intent_name = utterance.intent.get("name") if domain and intent_name not in domain.intents: raise_warning( f"Found unknown intent '{intent_name}'. " "Please, make sure that all intents are " "listed in your domain yaml.", UserWarning, ) # Utter # Copyied at dsl.py # def add_event(self, event_name, parameters): parameters = {} event_name = "utter_asdfwe" # add 'name' only if event is not a SlotSet, # because there might be a slot with slot_key='name' parameters["name"] = event_name parsed_events = Event.from_story_string( event_name, parameters, default=ActionExecuted ) if parsed_events is None: raise StoryParseError( "Unknown event '{}'. It is Neither an event " "nor an action).".format(event_name) ) # Add to Story story.events.insert(index, utterance) index += 1 to_add += 1 for parsed_event in parsed_events: story.events.insert(index, parsed_event) index += 1 to_add += 1 if last_utter and self.helper.get_param('consultation', False): story.events.insert(index, last_utter) return story
def create_action(self, action_name): # Utter # Copyied at dsl.py # def add_event(self, event_name, parameters): parameters = {} # add 'name' only if event is not a SlotSet, # because there might be a slot with slot_key='name' parameters["name"] = action_name parsed_events = Event.from_story_string(action_name, parameters, default=ActionExecuted) if parsed_events is None: raise StoryParseError("Unknown event '{}'. It is Neither an event " "nor an action).".format(action_name)) return parsed_events
def add_event(self, event_name, parameters): # add 'name' only if event is not a SlotSet, # because there might be a slot with slot_key='name' if "name" not in parameters and event_name != SlotSet.type_name: parameters["name"] = event_name parsed_events = Event.from_story_string(event_name, parameters, default=ActionExecuted) if parsed_events is None: raise StoryParseError("Unknown event '{}'. It is Neither an event " "nor an action).".format(event_name)) if self.current_step_builder is None: raise StoryParseError("Failed to handle event '{}'. There is no " "started story block available. " "".format(event_name)) for p in parsed_events: self.current_step_builder.add_event(p)