1313# limitations under the License.
1414#
1515"""Mycroft's intent service, providing intent parsing since forever!"""
16- import time
17- from threading import Event
18-
1916from mycroft .configuration import Configuration , setup_locale
20- from mycroft .messagebus .message import Message
17+ from mycroft .messagebus .message import Message , dig_for_message
2118from mycroft .metrics import report_timing , Stopwatch
2219from mycroft .skills .intent_service_interface import open_intent_envelope
2320from mycroft .skills .intent_services import (
3027from mycroft .util .parse import normalize
3128
3229
33- def _get_message_lang (message ):
30+ def _get_message_lang (message = None ):
3431 """Get the language from the message or the default language.
3532
3633 Args:
@@ -39,7 +36,11 @@ def _get_message_lang(message):
3936 Returns:
4037 The language code from the message or the default language.
4138 """
39+ message = message or dig_for_message ()
40+ # TODO read active locale from LF instead
4241 default_lang = Configuration .get ().get ('lang' , 'en-us' )
42+ if not message :
43+ return default_lang
4344 return message .data .get ('lang' , default_lang ).lower ()
4445
4546
@@ -136,8 +137,9 @@ def __init__(self, bus):
136137
137138 @property
138139 def registered_intents (self ):
140+ lang = _get_message_lang ()
139141 return [parser .__dict__
140- for parser in self .adapt_service .engine .intent_parsers ]
142+ for parser in self .adapt_service .engines [ lang ] .intent_parsers ]
141143
142144 def update_skill_name_dict (self , message ):
143145 """Messagebus handler, updates dict of id to skill name conversions."""
@@ -181,7 +183,7 @@ def reset_converse(self, message):
181183 """Let skills know there was a problem with speech recognition"""
182184 lang = _get_message_lang (message )
183185 setup_locale (lang ) # restore default lang
184- self .converse .converse_with_skills (None , lang , message )
186+ self .converse .converse_with_skills ([] , lang , message )
185187
186188 def do_converse (self , utterances , skill_id , lang , message ):
187189 """DEPRECATED: do not use, method only for api backwards compatibility
@@ -246,7 +248,7 @@ def send_metrics(self, intent, context, stopwatch):
246248 ident = context ['ident' ] if 'ident' in context else None
247249 # Determine what handled the intent
248250 if intent and intent .intent_service == 'Converse' :
249- intent_type = '{}:{}' . format ( intent .skill_id , ' converse')
251+ intent_type = f' { intent .skill_id } : converse'
250252 elif intent and intent .intent_service == 'Fallback' :
251253 intent_type = 'fallback'
252254 elif intent : # Handled by an other intent parser
@@ -359,7 +361,7 @@ def handle_register_vocab(self, message):
359361 entity_type = message .data .get ('entity_type' )
360362 regex_str = message .data .get ('regex' )
361363 alias_of = message .data .get ('alias_of' )
362- lang = message . data . get ( 'lang' )
364+ lang = _get_message_lang ( message )
363365 self .adapt_service .register_vocabulary (entity_value , entity_type ,
364366 alias_of , regex_str , lang )
365367 self .registered_vocab .append (message .data )
@@ -433,7 +435,7 @@ def handle_get_intent(self, message):
433435 message (Message): message containing utterance
434436 """
435437 utterance = message .data ["utterance" ]
436- lang = message . data . get ( "lang" , "en-us" )
438+ lang = _get_message_lang ( message )
437439 combined = _normalize_all_utterances ([utterance ])
438440
439441 # Create matchers
@@ -495,7 +497,7 @@ def handle_get_adapt(self, message):
495497 message (Message): message containing utterance
496498 """
497499 utterance = message .data ["utterance" ]
498- lang = message . data . get ( "lang" , "en-us" )
500+ lang = _get_message_lang ( message )
499501 combined = _normalize_all_utterances ([utterance ])
500502 intent = self .adapt_service .match_intent (combined , lang )
501503 intent_data = intent .intent_data if intent else None
0 commit comments