Gerenciar comandos

Siga estas instruções para executar código personalizado em seu dispositivo em resposta a comandos do Google Assistente.

Executar a amostra

Agora que você definiu uma característica e atualizou o modelo, marque para garantir verifique se o Google Assistente está enviando um comando de ativação/desativação para o consulta.

googlesamples-assistant-hotword --device-model-id my-model

Execute esta consulta:

Ok Google, ativar.

Você verá as seguintes instruções na saída do console. Caso contrário, consulte as instruções de solução de problemas.

ON_RECOGNIZING_SPEECH_FINISHED:
  {'text': 'turn on'}
ON_DEVICE_ACTION:
  {'inputs': [{'payload': {'commands': [{'execution': [{'command': 'action.devices.commands.OnOff',
  'params': {'on': True}}], 'devices': [{'id': 'E56D39D894C2704108758EA748C71255'}]}]},
  'intent': 'action.devices.EXECUTE'}], 'requestId': '4785538375947649081'}
Do command action.devices.commands.OnOff with params {'on': True}

Você descobrirá onde essas instruções são impressas no código-fonte.

Conseguir o código-fonte

Agora você já pode iniciar seu próprio projeto:

git clone https://github.com/googlesamples/assistant-sdk-python

Encontre o gerenciador de comando

O arquivo hotword.py no exemplo de código usa o SDK para enviar solicitações e receber respostas do Google Assistente.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
nano hotword.py

Pesquise a seguinte definição do gerenciador:

def process_event(event):

No momento, essa função mostra todos os nomes de eventos de Ações no dispositivo e por esta linha:

print('Do command', command, 'with params', str(params))

Esse código processa o comando action.devices.commands.OnOff. Isso faz parte do pipeline OnOff de características comuns. Atualmente, esse código apenas imprime a saída no console. Você pode modifique esse código para fazer o que quiser no seu projeto. Adicione o bloco a seguir no comando print em process_event().

print('Do command', command, 'with params', str(params)) # Add the following:
if command == "action.devices.commands.OnOff":
    if params['on']:
        print('Turning the LED on.')
    else:
        print('Turning the LED off.')

Execute o código-fonte modificado diretamente para conferir a saída.

python hotword.py --device-model-id my-model

Use a mesma consulta de antes:

Ok Google, ativar.

Se você conectou um LED ao Raspberry Pi, continue lendo para saber como acender o LED em resposta a o comando OnOff. Caso contrário, pule a próxima seção para saber como adicione mais características e gerenciadores.

Próximas etapas: Raspberry Pi

Agora que você sabe como processar o comando recebido, modifique o exemplo de código para acender um LED. Isso exigirá algum hardware adicional se você estiver usando o o Raspberry Pi.

Importar o pacote GPIO

Para simplificar o acesso de software aos pinos de Entrada/Saída de Uso Geral (GPIO, na sigla em inglês) em o Raspberry Pi, instale o arquivo RPi.GPIO no ambiente virtual.

pip install RPi.GPIO

Modificar o exemplo

Abra o arquivo hotword.py.

nano hotword.py

No arquivo hotword.py, importe RPi.GPIO. para controlar os pinos GPIO no Pi. Coloque a instrução a seguir perto do outras instruções import:

import RPi.GPIO as GPIO

Modifique o código para definir o pin de saída inicialmente como o estado de baixa lógica. Faça isto Na função main(), antes de processar eventos:

with Assistant(credentials, device_model_id) as assistant:
    events = assistant.start()

    device_id = assistant.device_id
    print('device_model_id:', device_model_id)
    print('device_id:', device_id + '\n')
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)
        ...

Modifique o código adicionado em process_event(). Quando o comando on é recebido, define o pin como o estado de lógica superior. Quando o comando "off" for recebido, defina a ao estado de baixa lógica.

if command == "action.devices.commands.OnOff":
    if params['on']:
        print('Turning the LED on.')
        GPIO.output(25, 1)
    else:
        print('Turning the LED off.')
        GPIO.output(25, 0)

Salve as alterações e feche o arquivo.

Executar a amostra

Execute o exemplo de código modificado.

python hotword.py --device-model-id my-model

Use a mesma consulta de antes. O LED vai acender.

Isso é só o começo. Saiba como adicionar mais características e gerenciadores.