将 Google 助理集成到你的项目中(其他语言)

请按照以下各部分中的说明集成 Google 助理 复制到您的项目中

gRPC 绑定

Google 助理服务是基于 gRPC 构建的,它是一种 开源 RPC 框架。该框架非常适合 双向音频流式传输。

Python

如果您使用的是 Python,请先参考本指南

C++

请参阅我们的 C++ 示例

Node.js

请参阅我们的 Node.js 示例

Android Things

对嵌入式设备感兴趣?查看 Google 助理 SDK 示例 Android Things

其他语言

对你的 Google 账号进行授权和身份验证,以便与 Google 助理配合使用

下一步是授权你的设备与 Google 助理交谈 使用您的 Google 账号。

获取具有 Google 助理 SDK 范围的 OAuth 令牌

Google 助理 SDK 使用 OAuth 2.0 访问令牌向你的设备授权 关联 Google 助理。

在进行原型设计时,您可以使用授权工具轻松生成 OAuth2.0 client_secret_<client-id>.json文件中, 注册设备模型

执行以下操作以生成凭据:

  1. 使用 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
    
  2. 安装授权工具:

    python -m pip install --upgrade google-auth-oauthlib[tool]
  3. 运行该工具。如果您是从设备上的终端(不是 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 助理的基本对话对话框

  1. 实现双向流式传输 gRPC 客户端 适用于 Google Assistant Service API。
  2. 等待用户触发新请求(例如,等待 GPIO 中断) )。
  3. 发送 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)。
  4. 开始录制。

  5. 发送多个外拨电话 AssistRequest 包含语音查询的音频数据的消息,均来自 audio_in 字段。

  6. 处理传入的 AssistResponse 消息。

  7. AssistResponse 中提取对话元数据 消息。例如,从 dialog_state_out 中获取 conversation_statevolume_percentage(请参阅 DialogStateOut)。

  8. 收到 AssistResponse 时停止录制 (带有 event_type) 共 END_OF_UTTERANCE 项。

  9. 使用来自audio_out的音频数据播放 Google 助理回答中的音频 字段。

  10. 复制之前解压缩的 conversation_state 进入DialogStateIn 消息中的AssistConfig消息。AssistRequest

为此,您应该准备好向 Google 通过设备使用 Google 助理。

使用设备操作扩展对话对话框

扩展上面的基本对话对话框以触发独特的硬件 特定设备的功能:

  1. 在传入的 AssistResponse 中 请提取 device_action 字段(请参阅 DeviceAction)。
  2. 解析 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 字段。

问题排查

请参阅问题排查 页面。