处理命令

请按照以下说明在您的设备上执行自定义代码: 响应来自 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 trait 架构。

目前,onoff() 定义会将输出记录到控制台。它使用 helper device_helpers.py 中的函数,用于解析响应 JSON 并存储命令 参数,以方便使用。您可以修改这段代码 对项目所需的资源

如果您有 LED 套件,请继续阅读,了解如何点亮 LED 指示灯。 OnOff 命令。否则,请跳过下一部分,了解如何 添加更多特征和处理程序

后续步骤 - Raspberry Pi

现在,您已经知道如何处理传入的命令,接下来不妨修改示例代码 来点亮 LED。如果您使用的是 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 模块来控制 Pi 上的 GPIO 引脚。将以下语句放置在 其他 import 语句:

import RPi.GPIO as GPIO

修改代码,将输出引脚最初设置为低逻辑状态。当 on 命令,则将引脚设置为高逻辑状态。当 off 命令,将引脚设置为低逻辑状态。

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 灯应会亮起。

这仅仅是开始。了解如何添加更多特征和处理程序