-
Jonas Wolff authoredJonas Wolff authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
actions.py 10.93 KiB
from rasa_core_sdk import Action
from rasa_core_sdk.events import SlotSet
#
# Birthplace
#
class ActionSearchBirthplace(Action):
def name(self):
return 'action_search_birthplace'
def run(self, dispatcher, tracker, domain):
#person = tracker.get_slot('physicist')
#if person == None:
# dispatcher.utter_message("No Person found")
#else:
# 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']
return [SlotSet('birthplace', actual_birthplace if actual_birthplace is not None else [])]
class ActionUtterBirthplace(Action):
def name(self):
return 'action_utter_birthplace'
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 + ".")
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']
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']
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')
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']
return [SlotSet('is_alive', actual_is_alive if actual_is_alive is not None else [])]
class ActionUtterIsAlive(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']
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']
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']
return [SlotSet('university', actual_university if actual_university is not None else [])]
class ActionUtterUniversity(Action):
def name(self):
return 'action_utter_university'
def run(self, dispatcher, tracker, domain):
person = tracker.get_slot('physicist')
university = tracker.get_slot('university')
if university == None:
dispatcher.utter_message("Error: University of " + person + "not known.")
else:
dispatcher.utter_message("The University of " + person + " is " + university + ".")
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']
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']
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 + " are " + awards + ".")
return []