From 017c53fb500d385c7a880faae6f52f01ed231f00 Mon Sep 17 00:00:00 2001 From: Fabio Manganiello Date: Fri, 22 Dec 2017 10:18:04 +0100 Subject: [PATCH] Added Google Assistant draft backend --- .../backend/assistant/google/__init__.py | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 platypush/backend/assistant/google/__init__.py diff --git a/platypush/backend/assistant/google/__init__.py b/platypush/backend/assistant/google/__init__.py new file mode 100644 index 000000000..264b3e185 --- /dev/null +++ b/platypush/backend/assistant/google/__init__.py @@ -0,0 +1,58 @@ +import logging +import json +import os +import time + +import google.oauth2.credentials + +from google.assistant.library import Assistant +from google.assistant.library.event import EventType +from google.assistant.library.file_helpers import existing_file + +from .. import Backend + +class AssistantGoogleBackend(Backend): + """ Class for the Google Assistant backend. It creates and event source + that posts recognized phrases on the main bus """ + + def __init__(self, credentials_file=os.path.join( + os.path.expanduser('~/.config'), + 'google-oauthlib-tool', 'credentials.json') , **kwargs): + """ Params: + credentials_file -- Path to the Google OAuth credentials file + (default: ~/.config/google-oauthlib-tool/credentials.json) """ + + super().__init__(**kwargs) + self.credentials_file = credentials_file + + with open(args.credentials, 'r') as f: + self.credentials = google.oauth2.credentials.Credentials(token=None, + **json.load(f)) + + self.assistant = None + + def _process_event(self, event): + logging.info('Received assistant event: {}'.format(event)) + # self.on_message(event) + + def send_message(self, msg): + raise NotImplementedError("Cannot send messages on an event source") + + def on_stop(self): + if self.producer: + self.producer.flush() + self.producer.close() + + if self.consumer: + self.consumer.close() + + def run(self): + super().run() + + with Assistant(self.credentials) as self.assistant: + for event in assistant.start(): + self._process_event(event) + + +# vim:sw=4:ts=4:et: +