<ph type="x-smartling-placeholder">
请按照以下说明在您的设备上执行自定义代码: 响应来自 Google 助理的命令。
运行示例
现在,您已经定义了特征并更新了模型,请进行检查 确保 Google 助理针对相应的 查询。
googlesamples-assistant-hotword --device-model-id my-model
请尝试以下查询:
Ok Google,开启。
您应该会在控制台输出中看到以下语句。否则,请查看 问题排查说明。
ON_RECOGNIZING_SPEECH_FINISHED:
{'text': 'turn on'}
ON_DEVICE_ACTION:
{'inputs': [{'payload': {'commands': [{'execution': [{'command': 'action.devices.commands.OnOff',
'params': {'on': True}}], 'devices': [{'id': 'E56D39D894C2704108758EA748C71255'}]}]},
'intent': 'action.devices.EXECUTE'}], 'requestId': '4785538375947649081'}
Do command action.devices.commands.OnOff with params {'on': True}
您会在源代码中找到这些语句的输出位置。
获取源代码
您现在可以开始自己的项目了:
git clone https://github.com/googlesamples/assistant-sdk-python
查找命令处理程序
示例代码中的 hotword.py
文件使用 SDK 发送请求并
接收来自 Google 助理的回复。
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
nano hotword.py
搜索以下处理程序定义:
def process_event(event):
目前,此函数会输出每个设备操作事件名称和 参数替换为以下代码行:
print('Do command', command, 'with params', str(params))
此代码会处理 action.devices.commands.OnOff
命令。这个
是 OnOff
trait 架构。目前,此代码仅将输出输出到控制台。您可以
修改此代码,在
项目。在 process_event()
中的 print
命令下添加以下代码块。
print('Do command', command, 'with params', str(params)) # Add the following: if command == "action.devices.commands.OnOff": if params['on']: print('Turning the LED on.') else: print('Turning the LED off.')
直接运行修改后的源代码以查看输出。
python hotword.py --device-model-id my-model
请使用与之前相同的查询:
Ok Google,开启。
如果您连接了 LED 指示灯 继续阅读,了解如何点亮 LED 以响应 OnOff 命令。否则,请跳过下一部分,了解如何 添加更多特征和处理程序。
后续步骤 - Raspberry Pi
现在,您已经知道如何处理传入的命令,接下来不妨修改示例代码 来点亮 LED。如果您使用的是 Raspberry Pi。
导入 GPIO 软件包
简化软件访问 上通用输入/输出 (GPIO) 引脚 若是 Raspberry Pi,请安装 RPi.GPIO 虚拟环境中的软件包。
pip install RPi.GPIO
修改示例
打开 hotword.py
文件。
nano hotword.py
在 hotword.py
文件中,导入 RPi.GPIO
模块来控制 Pi 上的 GPIO 引脚。将以下语句放置在
其他 import
语句:
import RPi.GPIO as GPIO
修改代码,将输出引脚最初设置为低逻辑状态。建议做法
在 main()
函数中,然后再处理事件:
with Assistant(credentials, device_model_id) as assistant: events = assistant.start() device_id = assistant.device_id print('device_model_id:', device_model_id) print('device_id:', device_id + '\n') GPIO.setmode(GPIO.BCM) GPIO.setup(25, GPIO.OUT, initial=GPIO.LOW) ...
修改您在 process_event()
中添加的代码。收到 on 命令后
将引脚设置为高逻辑状态。收到 off 命令时,设置
引脚为低逻辑状态。
if command == "action.devices.commands.OnOff": if params['on']: print('Turning the LED on.') GPIO.output(25, 1) else: print('Turning the LED off.') GPIO.output(25, 0)
保存更改并关闭该文件。
运行示例
运行修改后的示例代码。
python hotword.py --device-model-id my-model
请使用与之前相同的查询。LED 灯应会亮起。
这仅仅是开始。了解如何添加更多特征和处理程序。