Merge pull request #576 from forslund/expect_response

Add expect_response option to speak_methods
pull/589/head
Augusto Monteiro 2017-03-20 14:55:24 -05:00 committed by GitHub
commit 0fe6ee65e0
2 changed files with 11 additions and 4 deletions

View File

@ -27,7 +27,7 @@ from mycroft.identity import IdentityManager
from mycroft.messagebus.client.ws import WebsocketClient
from mycroft.messagebus.message import Message
from mycroft.tts import TTSFactory
from mycroft.util import kill, play_wav, resolve_resource_file
from mycroft.util import kill, play_wav, resolve_resource_file, create_signal
from mycroft.util.log import getLogger
logger = getLogger("SpeechClient")
@ -89,6 +89,7 @@ def handle_multi_utterance_intent_failure(event):
def handle_speak(event):
utterance = event.data['utterance']
expect_response = event.data.get('expect_response', False)
# This is a bit of a hack for Picroft. The analog audio on a Pi blocks
# for 30 seconds fairly often, so we don't want to break on periods
@ -106,6 +107,9 @@ def handle_speak(event):
else:
mute_and_speak(utterance)
if expect_response:
create_signal('buttonPress')
def handle_sleep(event):
loop.sleep()

View File

@ -263,10 +263,13 @@ class MycroftSkill(object):
re.compile(regex_str) # validate regex
self.emitter.emit(Message('register_vocab', {'regex': regex_str}))
def speak(self, utterance):
self.emitter.emit(Message("speak", {'utterance': utterance}))
def speak(self, utterance, expect_response=False):
data = {'utterance': utterance,
'expect_response': expect_response}
self.emitter.emit(Message("speak", data))
def speak_dialog(self, key, data={}):
def speak_dialog(self, key, data={}, expect_response=False):
data['expect_response'] = expect_response
self.speak(self.dialog_renderer.render(key, data))
def init_dialog(self, root_directory):