浏览代码

[Feature] Default Synapse review

monf 8 年之前
父节点
当前提交
ca6ad0efa7
共有 4 个文件被更改,包括 38 次插入26 次删除
  1. 9 0
      Docs/brain.md
  2. 2 2
      kalliope/brains/default.yml
  3. 23 22
      kalliope/core/OrderAnalyser.py
  4. 4 2
      kalliope/settings.yml

+ 9 - 0
Docs/brain.md

@@ -125,3 +125,12 @@ E.g:
 >**Note:** You can only use the `include` statement in the main brain file. 
 
 >**Note:** the includes statement must start with a `-`
+
+
+## The default Synapse
+
+You can provide a default synapse in case none of them are matching when an order is given.
+>**Note:** This default synapse is optional.
+>**Note:** You need to define it in the settings.yml cf :[Setting](settings.md).
+
+

+ 2 - 2
kalliope/brains/default.yml

@@ -1,7 +1,7 @@
 ---
-  - name: "Default-response"
+  - name: "Default-synapse"
     signals:
-      - order: "Default-response"
+      - order: "Default-synapse"
     neurons:
       - say:
           message:

+ 23 - 22
kalliope/core/OrderAnalyser.py

@@ -38,22 +38,22 @@ class OrderAnalyser:
         # create a dict of synapses that have been launched
         launched_synapses = self._get_matching_synapse_list(self.brain.synapses, self.order)
 
-        if not launched_synapses and self.main_controller.settings.default_synapse is not None:
-            default_synapse = self._get_default_synapse(self.brain.synapses, self.main_controller.settings.default_synapse)
+        if not launched_synapses:
+            Utils.print_info("No synapse match the captured order: %s" % self.order)
 
-            if default_synapse is not None:
-                logger.debug("Default synapse found %s" % default_synapse)
-                Utils.print_info("Default synapse found: %s, running it" % default_synapse.name)
-                launched_synapses.append(default_synapse)
+            if self.main_controller.settings.default_synapse is not None:
+                default_synapse = self._get_default_synapse_from_sysnapses_list(self.brain.synapses,
+                                                                        self.main_controller.settings.default_synapse)
 
+                if default_synapse is not None:
+                    logger.debug("Default synapse found %s" % default_synapse)
+                    Utils.print_info("Default synapse found: %s, running it" % default_synapse.name)
+                    launched_synapses.append(default_synapse)
 
-        if not launched_synapses:
-            Utils.print_info("No synapse match the captured order: %s" % self.order)
-        else:
-            for synapse in launched_synapses:
-                params = self._get_synapse_params(synapse, self.order)
-                for neuron in synapse.neurons:
-                    self._start_neuron(neuron, params)
+        for synapse in launched_synapses:
+            params = self._get_synapse_params(synapse, self.order)
+            for neuron in synapse.neurons:
+                self._start_neuron(neuron, params)
 
         # return the list of launched synapse
         return launched_synapses
@@ -244,22 +244,23 @@ class OrderAnalyser:
                 return False
         return True
 
-
-    @classmethod
-    def _get_default_synapse(cls, all_synapses_list, default_synapse_name):
+    @staticmethod
+    def _get_default_synapse_from_sysnapses_list(all_synapses_list, default_synapse_name):
         """
-        Class method to get the default synapse if it exists.
+        Static method to get the default synapse if it exists.
 
         :param all_synapses_list: the complete list of all synapses
         :param default_synapse_name: the synapse to find
         :return: the dict key/value
         """
+        default_synapse = None
         for synapse in all_synapses_list:
             if synapse.name == default_synapse_name:
                 logger.debug("Default synapse found: %s" % synapse.name)
-                return synapse
-
-        logger.debug("Default synapse not found")
-        Utils.print_danger("Default synapse not found")
-        return None
+                default_synapse = synapse
+                break
+        if default_synapse is None:
+            logger.debug("Default synapse not found")
+            Utils.print_warning("Default synapse not found")
+        return default_synapse
 

+ 4 - 2
kalliope/settings.yml

@@ -108,6 +108,8 @@ rest_api:
   login: admin
   password: secret
 
-
+# ---------------------------
+# Default Synapse
+# ---------------------------
 # Specify an optional default synapse response in case your order is not found.
-default_synapse: "Default-response"
+default_synapse: "Default-synapse"