Skip to content
Snippets Groups Projects
actions.py 11.8 KiB
Newer Older
from rasa_core_sdk import Action
from rasa_core_sdk.events import SlotSet
#
# Birthplace
#
Jonas Wolff's avatar
Jonas Wolff committed
class ActionSearchBirthplace(Action):
    def name(self):
        return 'action_search_birthplace'

    def run(self, dispatcher, tracker, domain):
        person = tracker.get_slot('physicist')
        dispatcher.utter_message("Person found:" + person)
        #import csv
        #import re
        #person = tracker.get_slot('physicist')
        #name_regex = re.compile(person, re.IGNORECASE)
        #actual_birthplace = None
        #with open('data.tsv') as csvfile:
        #    spamreader = csv.DictReader(csvfile, delimiter='\t')
        #    for row in spamreader:
        #        if name_regex.match(row['name']):
        #            actual_birthplace = row['birthplace']
        #if actual_birthplace is None:
        return[SlotSet('birthplace', [])]
        #return [SlotSet('birthplace', actual_birthplace if actual_birthplace is not None else [])]
class ActionUtterBirthplace(Action):
Jonas Wolff's avatar
Jonas Wolff committed
    def name(self):
        return 'action_utter_birthplace'
Jonas Wolff's avatar
Jonas Wolff committed

    def run(self, dispatcher, tracker, domain):
        #person = tracker.get_slot('physicist')
        #birthplace = tracker.get_slot('birthplace')
        #if  birthplace == None:
        #    dispatcher.utter_message("Error: Birthplace of " + person + " not   
        #    known.")
        #else:
        #    dispatcher.utter_message("The birthplace of " + person + " is " + 
        #    birthplace + ".")
Jonas Wolff's avatar
Jonas Wolff committed
        return []

#
# Day of death
#
class ActionSearchDayOfDeath(Action):
    def name(self):
        return 'action_search_day_of_death'

    def run(self, dispatcher, tracker, domain):
        import csv
        import re
        person = tracker.get_slot('physicist')
        name_regex = re.compile(person, re.IGNORECASE)
        actual_day_of_death = None
        with open('data.tsv') as csvfile:
            spamreader = csv.DictReader(csvfile, delimiter='\t')
            for row in spamreader:
                if name_regex.match(row['name']):
                    actual_day_of_death = row['day_of_death']
        if actual_day_of_death is None:
            return[SlotSet('day_of_death', [])]
        return [SlotSet('day_of_death', actual_day_of_death if actual_day_of_death is not None else [])]
        
        
class ActionUtterDayOfDeath(Action):
    def name(self):
        return 'action_utter_day_of_death'

    def run(self, dispatcher, tracker, domain):
        person = tracker.get_slot('physicist')
        day_of_death = tracker.get_slot('day_of_death')
        if  day_of_death == None:
            dispatcher.utter_message("Error: day of death of " + person + "not known.")
        else:
            dispatcher.utter_message("The day of death of " + person + " is " + day_of_death + ".")
        return []

#
# Place of death
#
class ActionSearchPlaceOfDeath(Action):
    def name(self):
        return 'action_search_place_of_death'

    def run(self, dispatcher, tracker, domain):
        import csv
        import re
        person = tracker.get_slot('physicist')
        name_regex = re.compile(person, re.IGNORECASE)
        actual_place_of_death = None
        with open('data.tsv') as csvfile:
            spamreader = csv.DictReader(csvfile, delimiter='\t')
            for row in spamreader:
                if name_regex.match(row['name']):
                    actual_place_of_death = row['place_of_death']
        if actual_place_of_death is None:
            return[SlotSet('place_of_death', [])]
        return [SlotSet('place_of_death', actual_place_of_death if actual_place_of_death is not None else [])]
        
        
class ActionUtterPlaceOfDeath(Action):
    def name(self):
        return 'action_utter_place_of_death'

    def run(self, dispatcher, tracker, domain):
        person = tracker.get_slot('physicist')
        place_of_death = tracker.get_slot('place_of_death')
        if  place_of_death == None:
            dispatcher.utter_message("Error: Place of death of " + person + "not known.")
        else:
            dispatcher.utter_message("The place of death of " + person + " is " + place_of_death + ".")
        return []

#
# Is alive
#
class ActionSearchIsAlive(Action):
    def name(self):
        return 'action_search_is_alive'

    def run(self, dispatcher, tracker, domain):
        import csv
        import re
        person = tracker.get_slot('physicist')
        if person == None:
            dispatcher.utter_message("Person nicht gefunden")
            return []
        name_regex = re.compile(person, re.IGNORECASE)
        actual_is_alive = None
        with open('data.tsv') as csvfile:
            spamreader = csv.DictReader(csvfile, delimiter='\t')
            for row in spamreader:
                if name_regex.match(row['name']):
                    actual_is_alive = row['is_alive']
        if actual_is_alive is None:
            return[SlotSet('is_alive', [])]
        return [SlotSet('is_alive', actual_is_alive if actual_is_alive is not None else [])]
        
        
class ActionUtterPlaceOfDeath(Action):
    def name(self):
        return 'action_utter_is_alive'

    def run(self, dispatcher, tracker, domain):
        person = tracker.get_slot('physicist')
        is_alive = tracker.get_slot('is_alive')
        if  is_alive == None:
            dispatcher.utter_message("Error: Life status of " + person + "not known.")
        else:
            dispatcher.utter_message("The Life status of " + person + " is " + is_alive + ".")
        return []

#
# num spouses
#
class ActionSearchNumSpouses(Action):
    def name(self):
        return 'action_search_num_spouses'

    def run(self, dispatcher, tracker, domain):
        import csv
        import re
        person = tracker.get_slot('physicist')
        name_regex = re.compile(person, re.IGNORECASE)
        actual_num_spouses = None
        with open('data.tsv') as csvfile:
            spamreader = csv.DictReader(csvfile, delimiter='\t')
            for row in spamreader:
                if name_regex.match(row['name']):
                    actual_num_spouses = row['num_spouses']
        if actual_num_spouses is None:
            return[SlotSet('num_spouses', [])]
        return [SlotSet('num_spouses', actual_num_spouses if actual_num_spouses is not None else [])]
        
        
class ActionUtterNumSpouses(Action):
    def name(self):
        return 'action_utter_num_spouses'

    def run(self, dispatcher, tracker, domain):
        person = tracker.get_slot('physicist')
        num_spouses = tracker.get_slot('num_spouses')
        if num_spouses == None:
            dispatcher.utter_message("Error: Number of Spouses of " + person + "not known.")
        else:
            dispatcher.utter_message("The Number of spouses of " + person + " is " + num_spouses + ".")
        return []

#
# Primary Education
#
class ActionSearchPrimaryEducation(Action):
    def name(self):
        return 'action_search_primary_education'

    def run(self, dispatcher, tracker, domain):
        import csv
        import re
        person = tracker.get_slot('physicist')
        name_regex = re.compile(person, re.IGNORECASE)
        actual_primary_education = None
        with open('data.tsv') as csvfile:
            spamreader = csv.DictReader(csvfile, delimiter='\t')
            for row in spamreader:
                if name_regex.match(row['name']):
                    actual_primary_education = row['primary_education']
        if actual_primary_education is None:
            return[SlotSet('primary_education', [])]
        return [SlotSet('primary_education', actual_primary_education if actual_primary_education is not None else [])]
        
        
class ActionUtterPrimaryEducation(Action):
    def name(self):
        return 'action_utter_primary_education'

    def run(self, dispatcher, tracker, domain):
        person = tracker.get_slot('physicist')
        primary_education = tracker.get_slot('primary_education')
        if  primary_education == None:
            dispatcher.utter_message("Error: Primary education of " + person + "not known.")
        else:
            dispatcher.utter_message("The primary education of " + person + " is " + primary_education + ".")
        return []

#
# University
#
class ActionSearchUniversity(Action):
    def name(self):
        return 'action_search_university'

    def run(self, dispatcher, tracker, domain):
        import csv
        import re
        person = tracker.get_slot('physicist')
        name_regex = re.compile(person, re.IGNORECASE)
        actual_university = None
        with open('data.tsv') as csvfile:
            spamreader = csv.DictReader(csvfile, delimiter='\t')
            for row in spamreader:
                if name_regex.match(row['name']):
                    actual_university = row['university']
        if actual_university is None:
            return[SlotSet('university', [])]
        return [SlotSet('university', actual_university if actual_universtiy is not None else [])]
        
        
class ActionUtterAreaOfResearch(Action):
    def name(self):
        return 'action_utter_area_of_research'

    def run(self, dispatcher, tracker, domain):
        person = tracker.get_slot('physicist')
        area_of_research = tracker.get_slot('area_of_research')
        if area_of_research == None:
            dispatcher.utter_message("Error: Area of Research of " + person + "not known.")
        else:
            dispatcher.utter_message("The Area of research of " + person + " is " + area_of_research + ".")
        return []

#
# Workplace
#
class ActionSearchWorkplace(Action):
    def name(self):
        return 'action_search_workplace'

    def run(self, dispatcher, tracker, domain):
        import csv
        import re
        person = tracker.get_slot('physicist')
        name_regex = re.compile(person, re.IGNORECASE)
        actual_workplace = None
        with open('data.tsv') as csvfile:
            spamreader = csv.DictReader(csvfile, delimiter='\t')
            for row in spamreader:
                if name_regex.match(row['name']):
                    actual_workplace = row['workplace']
        if actual_workplace is None:
            return[SlotSet('workplace', [])]
        return [SlotSet('workplace', actual_workplace if actual_workplace is not None else [])]
        
        
class ActionUtterWorkplace(Action):
    def name(self):
        return 'action_utter_workplace'

    def run(self, dispatcher, tracker, domain):
        person = tracker.get_slot('physicist')
        workplace = tracker.get_slot('workplace')
        if  workplace == None:
            dispatcher.utter_message("Error: Workplace of " + person + "not known.")
        else:
            dispatcher.utter_message("The Workplace of " + person + " is " + workplace + ".")
        return []

#
# Awards
#
class ActionSearchAwards(Action):
    def name(self):
        return 'action_search_awards'

    def run(self, dispatcher, tracker, domain):
        import csv
        import re
        person = tracker.get_slot('physicist')
        name_regex = re.compile(person, re.IGNORECASE)
        actual_awards = None
        with open('data.tsv') as csvfile:
            spamreader = csv.DictReader(csvfile, delimiter='\t')
            for row in spamreader:
                if name_regex.match(row['name']):
                    actual_awards = row['awards']
        if actual_awards is None:
            return[SlotSet('awards', [])]
        return [SlotSet('awards', actual_awards if actual_awards is not None else [])]
        
        
class ActionUtterAwards(Action):
    def name(self):
        return 'action_utter_awards'

    def run(self, dispatcher, tracker, domain):
        person = tracker.get_slot('physicist')
        awards = tracker.get_slot('awards')
        if  awards == None:
            dispatcher.utter_message("Error: Awards of " + person + "not known.")
        else:
            dispatcher.utter_message("The Awards of " + person + " is " + awards + ".")
        return []