| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- 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()
|