Обрабатывать команды

Следуйте этим инструкциям, чтобы выполнять собственный код на вашем устройстве в ответ на команды Google Ассистента.

Запустите образец

Теперь, когда вы определили признак и обновили модель, убедитесь, что Google Assistant отправляет обратно команду включения/выключения для соответствующего запроса.

googlesamples-assistant-pushtotalk

Нажмите клавишу Enter и попробуйте выполнить следующий запрос:

Включать.

В выводе консоли вы должны увидеть следующие утверждения. Если нет, см. инструкции по устранению неполадок .

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.

Вы найдете, где эти утверждения напечатаны в исходном коде.

Получить исходный код

Теперь вы готовы начать свой собственный проект:

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

Найдите обработчик команды

Файл pushtotalk.py в примере кода использует SDK для отправки запросов и получения ответов от Google Assistant.

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

Найдите следующее определение обработчика:

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

Код в onoff() обрабатывает команду action.devices.commands.OnOff . Эта команда является частью схемы признака OnOff .

В настоящее время определение onoff() регистрирует вывод на консоль. Он использует вспомогательные функции в device_helpers.py для анализа ответа JSON и сохранения параметров команды в переменных для удобства использования. Вы можете изменить этот код, чтобы делать в своем проекте все, что захотите.

Если у вас есть комплект светодиодов, продолжайте читать, чтобы узнать, как зажечь светодиод в ответ на команду «Вкл.Выкл.». Если вы этого не сделаете, пропустите следующий раздел, чтобы узнать, как добавить больше свойств и обработчиков .

Следующие шаги — Raspberry Pi

Теперь, когда вы знаете, как обрабатывать входящую команду, измените пример кода, чтобы зажечь светодиод. Если вы используете Raspberry Pi, для этого потребуется дополнительное оборудование.

Импортируйте пакет GPIO.

Чтобы упростить программный доступ к контактам ввода-вывода общего назначения (GPIO) на Raspberry Pi, установите пакет RPi.GPIO в виртуальной среде.

pip install RPi.GPIO

Изменить образец

Откройте файл pushtotalk.py .

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

В файл pushtotalk.py импортируйте модуль RPi.GPIO для управления выводами GPIO на Pi. Поместите следующий оператор рядом с другими операторами import :

import RPi.GPIO as GPIO

Измените код, чтобы изначально установить выходной контакт в низкое логическое состояние. Когда получена команда включения, установите вывод в высокое логическое состояние. Когда получена команда выключения, установите вывод в низкое логическое состояние.

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)

Сохраните изменения и закройте файл.

Запустите образец

Запустите измененный пример кода.

python pushtotalk.py

Используйте тот же запрос, что и раньше. Светодиод должен загореться.

Это только начало. Узнайте, как добавить больше свойств и обработчиков .