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-pushtotalk

Pressione a tecla Enter e tente a seguinte consulta:

Ativar.

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

INFO:root:Recording audio request.
INFO:root:End of audio request detected
INFO:root:Transcript of user request: "turn on".
INFO:root:Playing assistant response.
INFO:root:Turning device on
INFO:root:Waiting for device executions to complete.
INFO:root:Finished playing assistant response.

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 pushtotalk.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/grpc
nano pushtotalk.py

Pesquise a seguinte definição do gerenciador:

device_handler = device_helpers.DeviceRequestHandler(device_id)

@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
    if on:
        logging.info('Turning device on')
    else:
        logging.info('Turning device off')

O código em onoff() processa o comando action.devices.commands.OnOff. Isso faz parte do pipeline OnOff de características comuns.

Atualmente, os registros de definição de onoff() enviam saídas para o console. Ele usa o assistente em device_helpers.py para analisar o JSON de resposta e armazenar o comando em variáveis para facilitar o uso. Você pode modificar esse código você quer em seu projeto.

Se você tem um kit de LED, continue lendo para saber como acender o LED em resposta ao 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 pushtotalk.py.

cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/grpc
nano pushtotalk.py

No arquivo pushtotalk.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. Quando o quando o comando for recebido, defina o pin para o estado de alta lógica. Quando o off for recebido, defina o pin como o estado de baixa lógica.

device_handler = device_helpers.DeviceRequestHandler(device_id)
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW)

@device_handler.command('action.devices.commands.OnOff')
def onoff(on):
    if on:
        logging.info('Turning device on')
        GPIO.output(25, 1)
    else:
        logging.info('Turning device off')
        GPIO.output(25, 0)

Salve as alterações e feche o arquivo.

Executar a amostra

Execute o exemplo de código modificado.

python pushtotalk.py

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

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