forked from platypush/platypush
- Support for assistant response text as a ResponseEvent
- Don't trigger a ConversationEndEvent if the assistant needs to follow up on the previous interaction
This commit is contained in:
parent
e70eb8bb42
commit
f73adc83bc
2 changed files with 10 additions and 2 deletions
|
@ -12,7 +12,7 @@ from google.assistant.library.file_helpers import existing_file
|
||||||
from platypush.backend import Backend
|
from platypush.backend import Backend
|
||||||
from platypush.message.event.assistant import \
|
from platypush.message.event.assistant import \
|
||||||
ConversationStartEvent, ConversationEndEvent, ConversationTimeoutEvent, \
|
ConversationStartEvent, ConversationEndEvent, ConversationTimeoutEvent, \
|
||||||
NoResponseEvent, SpeechRecognizedEvent
|
ResponseEvent, NoResponseEvent, SpeechRecognizedEvent
|
||||||
|
|
||||||
|
|
||||||
class AssistantGoogleBackend(Backend):
|
class AssistantGoogleBackend(Backend):
|
||||||
|
@ -46,11 +46,14 @@ class AssistantGoogleBackend(Backend):
|
||||||
if event.type == EventType.ON_CONVERSATION_TURN_STARTED:
|
if event.type == EventType.ON_CONVERSATION_TURN_STARTED:
|
||||||
self.bus.post(ConversationStartEvent())
|
self.bus.post(ConversationStartEvent())
|
||||||
elif event.type == EventType.ON_CONVERSATION_TURN_FINISHED:
|
elif event.type == EventType.ON_CONVERSATION_TURN_FINISHED:
|
||||||
self.bus.post(ConversationEndEvent())
|
if not event.args.get('with_follow_on_turn'):
|
||||||
|
self.bus.post(ConversationEndEvent())
|
||||||
elif event.type == EventType.ON_CONVERSATION_TURN_TIMEOUT:
|
elif event.type == EventType.ON_CONVERSATION_TURN_TIMEOUT:
|
||||||
self.bus.post(ConversationTimeoutEvent())
|
self.bus.post(ConversationTimeoutEvent())
|
||||||
elif event.type == EventType.ON_NO_RESPONSE:
|
elif event.type == EventType.ON_NO_RESPONSE:
|
||||||
self.bus.post(NoResponseEvent())
|
self.bus.post(NoResponseEvent())
|
||||||
|
elif event.type == EventType.ON_RENDER_RESPONSE:
|
||||||
|
self.bus.post(ResponseEvent(response_text=event.args.get('text')))
|
||||||
elif event.type == EventType.ON_RECOGNIZING_SPEECH_FINISHED:
|
elif event.type == EventType.ON_RECOGNIZING_SPEECH_FINISHED:
|
||||||
phrase = event.args['text'].lower().strip()
|
phrase = event.args['text'].lower().strip()
|
||||||
self.logger.info('Speech recognized: {}'.format(phrase))
|
self.logger.info('Speech recognized: {}'.format(phrase))
|
||||||
|
|
|
@ -37,6 +37,11 @@ class ConversationTimeoutEvent(ConversationEndEvent):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
|
class ResponseEvent(ConversationEndEvent):
|
||||||
|
def __init__(self, response_text, *args, **kwargs):
|
||||||
|
super().__init__(*args, response_text=response_text, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
class NoResponseEvent(ConversationEndEvent):
|
class NoResponseEvent(ConversationEndEvent):
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
Loading…
Reference in a new issue