from snipsTools import SnipsConfigParser from xiSnipsTools import Personality from hermes_python.ontology import * from hermes_python.hermes import Hermes from hermes_python.ontology import MqttOptions import common from Action_Verlassen import Action_Verlassen from Action_Begruessen import Action_Begruessen from Action_Schlafenszeit import Action_Schlafenszeit from Action_Device_Programmierer import Action_Device_Programmierer from Action_Device_Kompliment import Action_Device_Kompliment from Action_Device_Wer_Bist_Du import Action_Device_Wer_Bist_Du from Action_Device_Hobbies import Action_Device_Hobbies from Action_wie_geht_es_dir import Action_wie_geht_es_dir from Action_Device_Alter import Action_Device_Alter from Action_Beleidigend import Action_Beleidigend from Action_Ankommen import Action_Ankommen from Action_Device_Hungrig import Action_Device_Hungrig from Action_Guten_Morgen import Action_Guten_Morgen from Action_Device_Gedanken import Action_Device_Gedanken import io import os import toml import datetime MQTT_IP_ADDR = "localhost" MQTT_PORT = 1883 MQTT_ADDR = "{}:{}".format(MQTT_IP_ADDR, str(MQTT_PORT)) class KuriisSmallTalk(object): """Action Code for the snips App "SmallTalk" Smalltalk ist my first test app for snips and in the python prgramming language """ config = None def __init__(self): snips_config = toml.load('/etc/snips.toml') mqtt_username = None mqtt_password = None mqtt_broker_address = "localhost:1883" if 'mqtt' in snips_config['snips-common'].keys(): mqtt_broker_address = snips_config['snips-common']['mqtt'] if 'mqtt_username' in snips_config['snips-common'].keys(): mqtt_username = snips_config['snips-common']['mqtt_username'] if 'mqtt_password' in snips_config['snips-common'].keys(): mqtt_password = snips_config['snips-common']['mqtt_password'] mqtt_opts = MqttOptions(username=mqtt_username, password=mqtt_password, broker_address=mqtt_broker_address) self.init_callbacks(Hermes(mqtt_options=mqtt_opts)) # --> Master callback function, triggered everytime an intent is recognized def init_callbacks(self,hermes): with hermes as h: h\ .subscribe_intent("BP-Kurii:Device_Programmierer", Action_Device_Programmierer.callback) \ .subscribe_intent("BP-Kurii:Verlassen", Action_Verlassen.callback) \ .subscribe_intent("BP-Kurii:Schlafenszeit", Action_Schlafenszeit.callback) \ .subscribe_intent("BP-Kurii:Device_Kompliment", Action_Device_Kompliment.callback) \ .subscribe_intent("BP-Kurii:Begruessen", Action_Begruessen.callback) \ .subscribe_intent("BP-Kurii:Device_Wer_Bist_Du", Action_Device_Wer_Bist_Du.callback) \ .subscribe_intent("BP-Kurii:Device_Hobbies", Action_Device_Hobbies.callback) \ .subscribe_intent("BP-Kurii:wie_geht_es_dir", Action_wie_geht_es_dir.callback) \ .subscribe_intent("BP-Kurii:Device_Alter", Action_Device_Alter.callback) \ .subscribe_intent("BP-Kurii:Beleidigend", Action_Beleidigend.callback) \ .subscribe_intent("BP-Kurii:Ankommen", Action_Ankommen.callback) \ .subscribe_intent("BP-Kurii:Device_Hungrig", Action_Device_Hungrig.callback) \ .subscribe_intent("BP-Kurii:Guten_Morgen", Action_Guten_Morgen.callback) \ .subscribe_intent("BP-Kurii:Device_Gedanken", Action_Device_Gedanken.callback) \ .start() # --> Sub callback function, one per intent def howareyou_callback(self, hermes, intent_message): # terminate the session first if not continue hermes.publish_end_session(intent_message.session_id, "") # action code goes here... print('[Received] intent: {}'.format(intent_message.intent.intent_name)) message = "null" # Read CPU temperature cpu_temp = os.popen("sh getcputemp.sh").readline() message = "null" try: cpu_temp2 = float(cpu_temp) if cpu_temp2 < 60: message = hay_personality.get_AnswerToTopic("well").format(cpu_temp) else: message = hay_personality.get_AnswerToTopic("notwell").format(cpu_temp) except : message = hay_personality.get_AnswerToTopic("null") print("Fehler bei der Ermittlung der cpu Temperatur \n Moegliche Ursachen:\n 1. Nutzer _snips-skills nicht in Rechtegruppe video\n 2. Skill wird nicht auf Raspberry ausgefuehrt") # if need to speak the execution result by tts hermes.publish_start_session_notification(intent_message.site_id, message, "SnipsSmallTalkAPP") def whatdoyouthink_callback(self, hermes, intent_message): # terminate the session first if not continue hermes.publish_end_session(intent_message.session_id, "") # action code goes here... print('[Received] intent: {}'.format(intent_message.intent.intent_name)) message = "null" topic = "null" if len(intent_message.slots.topic) > 0: topic = str(intent_message.slots.topic.first().value) print("Erkannter Topic Wert: " + topic) message = wdyt_personality.get_AnswerToTopic(topic) print(message) # if need to speak the execution result by tts hermes.publish_start_session_notification(intent_message.site_id, message, "SnipsSmallTalkAPP") def completeidiom_callback(self, hermes, intent_message): # terminate the session first if not continue hermes.publish_end_session(intent_message.session_id, "") # action code goes here... print('[Received] intent: {}'.format(intent_message.intent.intent_name)) message = "null" idiom = str(intent_message.input) print("Erkannter Message Idiom Wert: " + idiom) message = ci_personality.get_AnswerToTopic(idiom) print(message) # if need to speak the execution result by tts hermes.publish_start_session_notification(intent_message.site_id, message, "SnipsSmallTalkAPP") def tellmeajoke_callback(self, hermes, intent_message): # terminate the session first if not continue hermes.publish_end_session(intent_message.session_id, "") # action code goes here... print('[Received] intent: {}'.format(intent_message.intent.intent_name)) message = "null" category = "null" if len(intent_message.slots.category) > 0: category = str(intent_message.slots.category.first().value) message = tmaj_personality.get_AnswerToTopic(category) else: message = tmaj_personality.get_RandomContent() print("Erkannte Witz Kategorie: " + category) print(message) # if need to speak the execution result by tts hermes.publish_start_session_notification(intent_message.site_id, message, "SnipsSmallTalkAPP") hermes.publish_end_session(intent_message.session_id, "[[sound:test]]") if __name__ == "__main__": common(); KuriisSmallTalk()