@@ -157,7 +157,9 @@ def get_intent(self, utterance=None, lang="en-us"):
157157 try :
158158 # normalize() changes "it's a boy" to "it is boy", etc.
159159 best_intent = next (self .engine .determine_intent (
160- normalize (utterance , lang ), 100 ))
160+ normalize (utterance , lang ), 100 ,
161+ include_tags = True ,
162+ context_manager = self .context_manager ))
161163
162164 # TODO - Should Adapt handle this?
163165 best_intent ['utterance' ] = utterance
@@ -173,26 +175,26 @@ def handle_intent_request(self, message):
173175 lang = message .data .get ('lang' , None )
174176 if not lang :
175177 lang = "en-us"
176- skill_name = None
178+ skill_id = 0
177179 intent_name = None
178180 best_intent = self .get_intent (utterance , lang )
179181 if best_intent and best_intent .get ('confidence' , 0.0 ) > 0.0 :
180- skill_name = best_intent ['intent_type' ].split (":" )[0 ]
182+ skill_id = best_intent ['intent_type' ].split (":" )[0 ]
181183 intent_name = best_intent ['intent_type' ].split (":" )[1 ]
182184
183185 self .emitter .emit (Message ("intent_response" , {
184- "skill_name " : skill_name , "utterance" : utterance ,
186+ "skill_id " : skill_id , "utterance" : utterance ,
185187 "lang" : lang , "intent_name" : intent_name }))
186188
187189 def handle_intent_to_skill_request (self , message ):
188190 # tell which skills this intent belongs to
189191 intent = message .data .get ("intent_name" )
190192 # list of skills because intent may be shared
191193 skills = []
192- for skill_name in self .skills .keys ():
193- for intent_name in self .skills [skill_name ]:
194+ for skill_id in self .skills .keys ():
195+ for intent_name in self .skills [skill_id ]:
194196 if intent_name == intent :
195- skills .append (skill_name )
197+ skills .append (skill_id )
196198 self .emitter .emit (Message ("intent_to_skill_response" , {
197199 "skills" : skills , "intent_name" : intent }))
198200
@@ -261,17 +263,7 @@ def handle_utterance(self, message):
261263 # no skill wants to handle utterance
262264 best_intent = None
263265 for utterance in utterances :
264- try :
265- # normalize() changes "it's a boy" to "it is boy", etc.
266- best_intent = next (self .engine .determine_intent (
267- normalize (utterance , lang ), 100 ,
268- include_tags = True ,
269- context_manager = self .context_manager ))
270- # TODO - Should Adapt handle this?
271- best_intent ['utterance' ] = utterance
272- except StopIteration , e :
273- logger .exception (e )
274- continue
266+ best_intent = self .get_intent (utterance , lang )
275267
276268 if best_intent and best_intent .get ('confidence' , 0.0 ) > 0.0 :
277269 self .update_context (best_intent )
@@ -303,18 +295,20 @@ def handle_register_intent(self, message):
303295 intent = open_intent_envelope (message )
304296 self .engine .register_intent_parser (intent )
305297 # map intent_name to source skill
306- skill_name = intent .name .split (":" )[0 ]
298+ skill_id = intent .name .split (":" )[0 ]
307299 intent_name = intent .name .split (":" )[1 ]
308- if skill_name not in self .skills .keys ():
309- self .skills [skill_name ] = []
310- if intent_name not in self .skills [skill_name ]:
311- self .skills [skill_name ].append (intent_name )
300+ if skill_id not in self .skills .keys ():
301+ self .skills [skill_id ] = []
302+ if intent_name not in self .skills [skill_id ]:
303+ self .skills [skill_id ].append (intent_name )
312304
313305 def handle_detach_intent (self , message ):
314306 intent_name = message .data .get ('intent_name' )
315307 new_parsers = [
316308 p for p in self .engine .intent_parsers if p .name != intent_name ]
317309 self .engine .intent_parsers = new_parsers
310+ skill_id , intent_name = intent_name .split (":" )
311+ self .skills [skill_id ].remove (intent_name )
318312
319313 def handle_detach_skill (self , message ):
320314 skill_id = message .data .get ('skill_id' )
@@ -340,6 +334,7 @@ def handle_remove_context(self, message):
340334 def handle_clear_context (self , message ):
341335 self .context_manager .clear_context ()
342336
337+
343338class IntentParser ():
344339 def __init__ (self , emitter , time_out = 5 ):
345340 self .emitter = emitter
@@ -385,7 +380,7 @@ def get_skill_from_intent(self, intent_name):
385380 return self .skills
386381
387382 def handle_receive_intent (self , message ):
388- self .skill = message .data .get ("skill_name " , None )
383+ self .skill = message .data .get ("skill_id " , None )
389384 self .intent = message .data .get ("intent_name" , None )
390385 self .waiting = False
391386
0 commit comments