Cómo controlar comandos

Sigue estas instrucciones para ejecutar un código personalizado en tu dispositivo en respuesta a comandos del Asistente de Google.

Ejecuta la muestra

Ahora que definiste un rasgo y actualizaste el modelo, verifica Asistente de Google está devolviendo un comando de activación/desactivación para el para cada búsqueda.

googlesamples-assistant-pushtotalk

Presiona la tecla Intro y prueba la siguiente consulta:

Activar.

Deberías ver las siguientes instrucciones en el resultado de la consola. De lo contrario, consulta las instrucciones para solucionar 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.

Encontrarás dónde se imprimen estas sentencias en el código fuente.

Obtén el código fuente

Ahora estás listo para comenzar tu propio proyecto:

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

Busca el controlador de comandos

El archivo pushtotalk.py del código de muestra usa el SDK para enviar solicitudes y recibir respuestas del Asistente de Google.

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

Busca la siguiente definición de controlador:

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')

El código de onoff() controla el comando action.devices.commands.OnOff. Esta es parte de la función OnOff de trait.

En la actualidad, los registros de definición de onoff() generan resultados en la consola. Usa un asistente en device_helpers.py para analizar el JSON de respuesta y almacenar el comando parámetros en variables para facilitar su uso. Puedes modificar este código para hacer lo que sea que deseas en tu proyecto.

Si tienes un kit de LED, sigue leyendo para aprender a encender la luz LED en respuesta a esto. con el comando OnOff. De lo contrario, omite la siguiente sección para saber cómo agregar más características y controladores.

Próximos pasos: Raspberry Pi

Ahora que sabes cómo controlar el comando entrante, modifica el código de muestra para encender una luz LED. Esto requerirá hardware adicional si usas el Raspberry Pi.

Cómo importar el paquete GPIO

Para simplificar el acceso al software a los pines de entrada y salida de uso general (GPIO) en Raspberry Pi, instala el archivo RPi.GPIO del paquete en el entorno virtual.

pip install RPi.GPIO

Modifica la muestra

Abre el archivo pushtotalk.py.

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

En el archivo pushtotalk.py, importa el archivo RPi.GPIO. para controlar las clavijas GPIO en la máquina Pi. Coloca la siguiente instrucción cerca del Otras sentencias import:

import RPi.GPIO as GPIO

Modifica el código para establecer la clavija de salida inicialmente en el estado de lógica baja. Cuando cuando se recibe el comando, configura el pin en el estado lógico alto. Cuando cuando se recibe el comando off, configura el pin en el estado de lógica bajo.

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)

Guarda los cambios y cierra el archivo.

Ejecuta la muestra

Ejecuta el código de muestra modificado.

python pushtotalk.py

Usa la misma consulta que antes. Se debería encender la luz LED.

Ese es solo el comienzo. Obtén más información sobre cómo agregar más traits y controladores.