I'm using the Google Assistant SDK's hotword.py to create my own custom commands.
Everything works, however since these custom commands are not recognized by Google Assistant, I get one of Google Assistant's many "command not found" variations. I'm trying to call assistant.stop_assistant()
But I just get:
Traceback (most recent call last):
File "hotword.py", line 100, in <module>
main()
File "hotword.py", line 96, in main
process_event(event)
File "hotword.py", line 65, in process_event
assistant.stop_conversation()
NameError: name 'assistant' is not defined
How can I resolve this error?
Code:
from __future__ import print_function
import argparse
import os.path
import json
import os
import json
import threading
import RPi.GPIO as GPIO
from subprocess import call
from time import sleep
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
GPIO.setmode(GPIO.BCM)
GPIO.setup(7,GPIO.OUT)
def process_event(event):
if event.type == EventType.ON_START_FINISHED:
os.system('aplay /home/pi/assistant-extras/assistant_is_ready.wav')
print("ready")
if event.type == EventType.ON_CONVERSATION_TURN_STARTED:
print()
GPIO.output(7,GPIO.HIGH)
if event.type == EventType.ON_RECOGNIZING_SPEECH_FINISHED:
GPIO.output(7,GPIO.LOW)
spoken_words = event.args["text"]
print("Spoken text: " + spoken_words)
if 'text editor'==spoken_words:
os.system('lxterminal -e sudo leafpad')
assistant.stop_conversation()
print(event)
if (event.type == EventType.ON_CONVERSATION_TURN_FINISHED and
event.args and not event.args['with_follow_on_turn']):
print()
def main():
parser = argparse.ArgumentParser(
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('--credentials', type=existing_file,
metavar='OAUTH2_CREDENTIALS_FILE',
default=os.path.join(
os.path.expanduser('~/.config'),
'google-oauthlib-tool',
'credentials.json'
),
help='Path to store and read OAuth2 credentials')
args = parser.parse_args()
with open(args.credentials, 'r') as f:
credentials = google.oauth2.credentials.Credentials(token=None,
**json.load(f))
with Assistant(credentials) as assistant:
for event in assistant.start():
process_event(event)
if __name__ == '__main__':
main()