请按照以下说明在您的设备上执行自定义代码,以响应 Google 助理发出的命令。
运行示例
现在,您已经定义了一个特征并更新了模型,请进行检查以确保 Google 助理针对相应查询发回“开启/关闭”命令。
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 助理的响应。
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,并将命令参数存储在变量中,以便于使用。您可以修改此代码,以便在项目中执行所需的任何操作。
如果您有 LED 套件,请继续阅读下文,了解如何通过点亮 LED 来响应 OnOff 命令。如果没有,请跳过下一部分,了解如何添加更多特征和处理程序。
后续步骤 - Raspberry Pi
现在您已经知道如何处理传入的命令,请修改示例代码以点亮 LED 灯。如果您使用的是 Raspberry Pi,则需要一些额外的硬件。
导入 GPIO 软件包
如需简化软件对 Raspberry Pi 上的通用输入/输出 (GPIO) 引脚的访问,请在虚拟环境中安装 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 模块以控制 Pi 上的 GPIO 引脚。将以下语句放在其他 import
语句附近:
import RPi.GPIO as GPIO
修改代码,以便将输出引脚最初设置为低逻辑状态。收到 on 命令后,将引脚设置为高逻辑状态。收到关闭命令后,将引脚设置为低逻辑状态。
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
使用与之前相同的查询。LED 灯应亮起。
这仅仅只是开始。了解如何添加更多特征和处理程序。