Browse Source

sysnapse now get a list of generated answer from each neuron

nico 8 years ago
parent
commit
52220f4ca8
3 changed files with 22 additions and 8 deletions
  1. 5 1
      kalliope/core/Models/Synapse.py
  2. 3 0
      kalliope/core/NeuronModule.py
  3. 14 7
      kalliope/core/SynapseLauncher.py

+ 5 - 1
kalliope/core/Models/Synapse.py

@@ -9,6 +9,8 @@ class Synapse(object):
         self.name = name
         self.neurons = neurons
         self.signals = signals
+        # init a list where generated tts message will be stored after running each neuron in the synapse
+        self.answers = list()
 
     def serialize(self):
         """
@@ -21,7 +23,8 @@ class Synapse(object):
         return {
             'name': self.name,
             'neurons': [e.serialize() for e in self.neurons],
-            'signals': [e.serialize() for e in self.signals]
+            'signals': [e.serialize() for e in self.signals],
+            'answers':  str(self.answers)
         }
 
     def __str__(self):
@@ -32,6 +35,7 @@ class Synapse(object):
         return_val += "\nsignals:"
         for el in self.signals:
             return_val += str(el)
+        return_val += "\nanswers: %s" % self.answers
         return return_val
 
     def __eq__(self, other):

+ 3 - 0
kalliope/core/NeuronModule.py

@@ -89,6 +89,8 @@ class NeuronModule(object):
         self.say_template = kwargs.get('say_template', None)
         # check if there is a template file associate to the output message
         self.file_template = kwargs.get('file_template', None)
+        # keep the generated message
+        self.tts_message = None
 
     def say(self, message):
         """
@@ -119,6 +121,7 @@ class NeuronModule(object):
 
         if tts_message is not None:
             logger.debug("tts_message to say: %s" % tts_message)
+            self.tts_message = tts_message
 
             # create a tts object from the tts the user want to use
             tts_object = next((x for x in self.settings.ttss if x.name == self.tts), None)

+ 14 - 7
kalliope/core/SynapseLauncher.py

@@ -37,8 +37,7 @@ class SynapseLauncher(object):
         if not synapse:
             raise SynapseNameNotFound("The synapse name \"%s\" does not exist in the brain file" % name)
         else:
-            cls._run_synapse(synapse=synapse)
-            return synapse
+            return cls._run_synapse(synapse=synapse)
 
     @classmethod
     def _run_synapse(cls, synapse):
@@ -48,8 +47,10 @@ class SynapseLauncher(object):
         :return:
         """
         for neuron in synapse.neurons:
-            NeuronLauncher.start_neuron(neuron)
-        return True
+            instantiated_neuron = NeuronLauncher.start_neuron(neuron)
+            # add the generated message to the synapse
+            synapse.answers.append(instantiated_neuron.tts_message)
+        return synapse
 
     @classmethod
     def run_matching_synapse_or_default(cls, order_to_process, brain, settings):
@@ -73,13 +74,19 @@ class SynapseLauncher(object):
             else:
                 # the order match one or more synapses
                 for tuple_el in launched_synapses_tuple:
-                    launched_synapses.append(tuple_el.synapse)
+
                     logger.debug("[SynapseLauncher] Get parameter for %s " % tuple_el.synapse.name)
                     parameters = NeuronParameterLoader.get_parameters(synapse_order=tuple_el.order,
                                                                       user_order=order_to_process)
                     # start the neuron list
-                    NeuronLauncher.start_neuron_list(neuron_list=tuple_el.synapse.neurons,
-                                                     parameters_dict=parameters)
+                    instantiated_neuron_list = NeuronLauncher.start_neuron_list(neuron_list=tuple_el.synapse.neurons,
+                                                                                parameters_dict=parameters)
+                    # add generated tts messages to the returned synapse
+                    for neuron in instantiated_neuron_list:
+                        print "add message %s" % neuron.tts_message
+                        tuple_el.synapse.answers.append(neuron.tts_message)
+
+                    launched_synapses.append(tuple_el.synapse)
         else:
             no_synapse_match = True