请按照以下各部分中的说明集成 Google 助理 复制到您的项目中
gRPC 绑定
Google 助理服务是基于 gRPC 构建的,它是一种 开源 RPC 框架。该框架非常适合 双向音频流式传输。
Python
如果您使用的是 Python,请先参考本指南。
C++
请参阅我们的 C++ 示例 。
Node.js
请参阅我们的 Node.js 示例 。
Android Things
对嵌入式设备感兴趣?查看 Google 助理 SDK 示例 Android Things。
其他语言
- 克隆 googleapis 代码库 来获取 Google Assistant Service API 的协议缓冲区接口定义。
- 按照 gRPC 文档生成 gRPC 绑定
- 请按照以下部分中的步骤操作。
对你的 Google 账号进行授权和身份验证,以便与 Google 助理配合使用
下一步是授权你的设备与 Google 助理交谈 使用您的 Google 账号。
获取具有 Google 助理 SDK 范围的 OAuth 令牌
Google 助理 SDK 使用 OAuth 2.0 访问令牌向你的设备授权 关联 Google 助理。
在进行原型设计时,您可以使用授权工具轻松生成 OAuth2.0
client_secret_<client-id>.json
文件中,
注册设备模型。
执行以下操作以生成凭据:
使用 Python 虚拟环境 将授权工具及其依赖项与系统 Python 软件包隔离开来。
sudo apt-get update
sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found.
python3 -m venv env
env/bin/python -m pip install --upgrade pip setuptools wheel
source env/bin/activate
安装授权工具:
python -m pip install --upgrade google-auth-oauthlib[tool]
运行该工具。如果您是从设备上的终端(不是 SSH 会话)运行此命令,请移除
--headless
标志:google-oauthlib-tool --client-secrets /path/to/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
准备好在配置过程中集成授权时 设备的机制,请阅读我们的使用 OAuth 2.0 访问 Google API 指南 了解如何获取、保留和使用 OAuth 访问令牌以允许您的 设备与 Assistant API 进行通信。
浏览这些指南时,请注意以下几点:
请查看隐私权和安全性方面的最佳做法 ,获取关于如何保障设备安全的建议。
使用 OAuth 令牌对 gRPC 连接进行身份验证
最后,阅读如何使用基于令牌的 API, 进行 Google 身份验证 对与 Assistant API 的 gRPC 连接进行身份验证。
注册设备
实现与 Google 助理的基本对话对话框
- 实现双向流式传输 gRPC 客户端 适用于 Google Assistant Service API。
- 等待用户触发新请求(例如,等待 GPIO 中断) )。
发送
AssistRequest
消息,并设置config
字段(请参阅AssistConfig
)。 确保config
字段包含以下内容:audio_in_config
字段,用于指定如何处理 将在后续请求中提供的audio_in
数据 (请参阅AudioInConfig
)。audio_out_config
字段,用于指定所需的 服务器返回audio_out
消息时要使用的服务器(请参阅AudioOutConfig
)。device_config
字段,用于标识 将设备注册到 Google 助理(请参阅DeviceConfig
)。dialog_state_in
字段,其中包含language_code
(请参阅DialogStateIn
)。
开始录制。
发送多个外拨电话
AssistRequest
包含语音查询的音频数据的消息,均来自audio_in
字段。处理传入的
AssistResponse
消息。从
AssistResponse
中提取对话元数据 消息。例如,从dialog_state_out
中获取conversation_state
和volume_percentage
(请参阅DialogStateOut
)。收到
AssistResponse
时停止录制 (带有event_type
) 共END_OF_UTTERANCE
项。使用来自
audio_out
的音频数据播放 Google 助理回答中的音频 字段。复制之前解压缩的
conversation_state
进入DialogStateIn
消息中的AssistConfig
消息。AssistRequest
。
为此,您应该准备好向 Google 通过设备使用 Google 助理。
使用设备操作扩展对话对话框
扩展上面的基本对话对话框以触发独特的硬件 特定设备的功能:
- 在传入的
AssistResponse
中 请提取device_action
字段(请参阅DeviceAction
)。 - 解析
device_request_json
字段的 JSON 载荷。请参阅 设备特征页面 支持的特征的列表。每个特征架构页面都会显示一个示例 EXECUTE 请求以及响应中返回的设备命令和参数 JSON 载荷。
获取用户请求的转写内容
如果此设备连接了显示屏,您可能需要将其用于
显示用户请求如需获取此转写内容,请解析 speech_results
字段
在AssistResponse
中
消息。语音识别完成后,此列表将包含一个 item
并将 stability
设置为 1.0。
获取以文字和/或视觉形式呈现 Google 助理的回复
如果此设备连接了显示屏,您可能需要将其用于
显示 Google 助理对用户请求的纯文本响应。此文本位于
在DialogStateOut.supplemental_display_text
中
字段。
Google 助理支持通过 HTML5 针对特定查询提供视觉响应(
山景城的天气怎么样?或现在几点了?)。要启用此功能,请将
AssistConfig
中的 screen_out_config
字段。
ScreenOutConfig
消息包含字段 screen_mode
,该字段应设为 PLAYING
。
AssistResponse
消息将设置字段 screen_out
。您可以从
data
字段。
通过文本输入提交查询
如果您的设备连接了文本界面(例如键盘),
在 config
字段中设置 text_query
字段(请参阅 AssistConfig
)。
请勿设置 audio_in_config
字段。
问题排查
请参阅问题排查 页面。