def run(self, dispatcher, tracker, domain): graph = GraphDatabase() # get entities to compare and their entity type listed_items = tracker.get_slot("listed_items") entity_type = get_entity_type(tracker) if listed_items is None or entity_type is None: dispatcher.utter_message("utter_rephrase", tracker) return [] # get attribute of interest attribute = get_attribute(tracker) if attribute is None: dispatcher.utter_message("utter_rephrase", tracker) return [] # utter response for every entity that shows the value of the attribute for e in listed_items: key_attribute = schema[entity_type]["key"] value = graph.get_attribute_of(entity_type, key_attribute, e, attribute) if value is not None and len(value) == 1: dispatcher.utter_message( f"{e} has the value '{value[0]}' for attribute '{attribute}'." ) return []
def run(self, dispatcher, tracker, domain): graph_database = GraphDatabase() print(tracker) # get entity type of entity entity_type = get_entity_type(tracker) print(entity_type) if entity_type is None: dispatcher.utter_message("utter_rephrase", tracker) return [] # get name of entity and attribute of interest name = get_entity_name(tracker, entity_type) print(name) attribute = get_attribute(tracker) if name is None or attribute is None: dispatcher.utter_message("utter_rephrase", tracker) slots = [SlotSet("mention", None)] reset_attribute_slots(slots, entity_type, tracker) return slots # query knowledge base key_attribute = schema[entity_type]["key"] value = graph_database.get_attribute_of( entity_type, key_attribute, name, attribute ) # utter response if value is not None and len(value) == 1: dispatcher.utter_message( f"{name} has the value '{value[0]}' for attribute '{attribute}'." ) else: dispatcher.utter_message( f"Did not found a valid value for attribute {attribute} for entity '{name}'." ) slots = [SlotSet("mention", None), SlotSet(entity_type, name)] reset_attribute_slots(slots, entity_type, tracker) return slots