Skip to content
This repository was archived by the owner on Sep 8, 2024. It is now read-only.

Commit aefde61

Browse files
author
jarbasai
committed
use skill id
1 parent 4c09fa4 commit aefde61

File tree

1 file changed

+19
-24
lines changed

1 file changed

+19
-24
lines changed

mycroft/skills/intent_service.py

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
343338
class 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

Comments
 (0)