请按照以下各部分中的说明将 Google 助理集成到您的项目中。
gRPC 绑定
Google 助理服务基于高性能开源 RPC 框架 gRPC 构建。此框架非常适合双向音频流式传输。
Python
如果您使用的是 Python,请先参阅本指南。
C++
您可以查看我们在 GitHub 上的 C++ 示例。
Node.js
请查看我们在 GitHub 上的 Node.js 示例。
Android Things
对嵌入式设备感兴趣?查看 Android Things 的 Assistant SDK 示例。
其他语言
- 克隆 googleapis 代码库,以获取 Google Assistant Service API 的协议缓冲区接口定义。
- 按照 gRPC 文档操作,为您选择的语言生成 gRPC 绑定
- 请按照以下部分中的步骤操作。
授权和验证你的 Google 账号,以便与 Google 助理搭配使用
下一步是授权您的设备使用您的 Google 帐号与 Google 助理交谈。
获取具有 Assistant SDK 范围的 OAuth 令牌
Google 助理 SDK 使用 OAuth 2.0 访问令牌授权您的设备与 Google 助理建立连接。
进行原型设计时,您可以使用授权工具从注册设备模型时生成的 client_secret_<client-id>.json
文件轻松生成 OAuth2.0 凭据。
请按以下步骤生成凭据:
使用 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 连接进行身份验证
最后,阅读有关如何使用 Google 基于令牌的身份验证来对 gRPC 与 Assistant API 的连接进行身份验证,以便整合所有信息。
注册您的设备
您可以手动注册设备模型和实例,也可以使用注册工具(在 Python 中提供)进行注册。
实现与 Google 助理的基本对话对话框
- 为 Google Assistant Service API 实现双向流式传输 gRPC 客户端。
- 等待用户触发新请求(例如,等待按下按钮时出现 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
)。
开始录制。
在
audio_in
字段中发送多条传出的AssistRequest
消息,其中包含语音查询中的音频数据。处理传入的
AssistResponse
消息。从
AssistResponse
消息中提取对话元数据。例如,从dialog_state_out
获取conversation_state
和volume_percentage
(请参阅DialogStateOut
)。收到
event_type
为END_OF_UTTERANCE
的AssistResponse
时停止录制。使用来自
audio_out
字段的音频数据播放 Google 助理回答中的音频。获取您之前提取的
conversation_state
,并将其复制到下一个AssistRequest
的AssistConfig
中的DialogStateIn
消息中。
这样,您应该就可以通过设备向 Google 助理发出第一个请求了。
使用设备操作扩展对话对话框
扩展上面的基本对话对话框,以触发特定设备的独特硬件功能:
- 在传入的
AssistResponse
消息中,提取device_action
字段(请参阅DeviceAction
)。 - 解析
device_request_json
字段的 JSON 载荷。如需查看支持的特征列表,请参阅设备特征页面。每个特征架构页面都会显示一个示例 EXECUTE 请求,其中包含 JSON 载荷中返回的设备命令和参数。
获取用户请求的转录内容
如果您在设备上连接了一个显示屏,可能需要使用它来显示用户请求。如需获取此转录内容,请解析 AssistResponse
消息中的 speech_results
字段。语音识别完成后,此列表将包含一个 item,其中 stability
设置为 1.0。
获取 Google 助理回复的文字和/或视觉呈现
如果设备连接了显示屏,您可能需要使用它来显示 Google 助理对用户请求的纯文本响应。此文本位于 DialogStateOut.supplemental_display_text
字段中。
对于某些查询(山景城的天气怎样?或现在几点了?),Google 助理支持通过 HTML5 做出视觉响应。如需启用此功能,请在 AssistConfig
中设置 screen_out_config
字段。ScreenOutConfig
消息包含字段 screen_mode
,该字段应设置为 PLAYING
。
然后,AssistResponse
消息将设置 screen_out
字段。您可以从 data
字段提取 HTML5 数据(如果存在)。
通过文本输入提交查询
如果设备连接了文本界面(例如键盘),请在 config
字段中设置 text_query
字段(请参阅 AssistConfig
)。请勿设置 audio_in_config
字段。
问题排查
如果遇到问题,请参阅问题排查页面。