def add_user_messages(self, messages, line_num): if not self.current_step_builder: raise StoryParseError("User message '{}' at invalid location. " "Expected story start.".format(messages)) parsed_messages = [] for m in messages: parse_data = self.interpreter.parse(m) # a user uttered event's format is a bit different to the one of # other events, so we need to take a shortcut here parameters = {"text": m, "parse_data": parse_data} utterance = Event.from_story_string(UserUttered.type_name, parameters) if m.startswith("_"): c = utterance.as_story_string() logger.warning("Stating user intents with a leading '_' is " "deprecated. The new format is " "'* {}'. Please update " "your example '{}' to the new format." "".format(c, m)) intent_name = utterance.intent.get("name") if intent_name not in self.domain.intents: logger.warning("Found unknown intent '{}' on line {}. " "Please, make sure that all intents are " "listed in your domain yaml." "".format(intent_name, line_num)) parsed_messages.append(utterance) self.current_step_builder.add_user_messages(parsed_messages)
def add_event(self, event_name, parameters): parsed = Event.from_story_string(event_name, parameters, self.domain, default=ActionExecuted) if parsed is None: raise StoryParseError("Unknown event '{}'. It is Neither an event " "nor an action).".format(event_name)) self.current_step_builder.add_event(parsed)
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 = Event.from_story_string(event_name, parameters, default=ActionExecuted) if parsed is None: raise StoryParseError("Unknown event '{}'. It is Neither an event " "nor an action).".format(event_name)) if isinstance(parsed, list): for p in parsed: self.current_step_builder.add_event(p) else: self.current_step_builder.add_event(parsed)
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)