Skip to content

Commit aeca3ae

Browse files
authored
Fix/intent bus api (#59)
fix intent bus api * fix adapt tests * fix converse tests * fix intent service interface tests authored-by: jarbasai <jarbasai@mailfence.com>
1 parent abde37c commit aeca3ae

File tree

4 files changed

+467
-12
lines changed

4 files changed

+467
-12
lines changed

mycroft/skills/intent_service.py

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,8 @@
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-
1916
from mycroft.configuration import Configuration, setup_locale
20-
from mycroft.messagebus.message import Message
17+
from mycroft.messagebus.message import Message, dig_for_message
2118
from mycroft.metrics import report_timing, Stopwatch
2219
from mycroft.skills.intent_service_interface import open_intent_envelope
2320
from mycroft.skills.intent_services import (
@@ -30,7 +27,7 @@
3027
from 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

mycroft/skills/intent_services/converse_service.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,7 +253,7 @@ def converse_with_skills(self, utterances, lang, message):
253253
Returns:
254254
IntentMatch if handled otherwise None.
255255
"""
256-
utterances = [item for tup in utterances for item in tup]
256+
utterances = [item for tup in utterances or [] for item in tup]
257257
# filter allowed skills
258258
self._check_converse_timeout()
259259
# check if any skill wants to handle utterance

0 commit comments

Comments
 (0)