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

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

gRPC 绑定

Google 助理服务基于高性能开源 RPC 框架 gRPC 构建。此框架非常适合双向音频流式传输。

Python

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

C++

您可以查看我们在 GitHub 上的 C++ 示例

Node.js

请查看我们在 GitHub 上的 Node.js 示例

Android Things

对嵌入式设备感兴趣?查看 Android Things 的 Assistant SDK 示例

其他语言

授权和验证你的 Google 账号,以便与 Google 助理搭配使用

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

获取具有 Assistant SDK 范围的 OAuth 令牌

Google 助理 SDK 使用 OAuth 2.0 访问令牌授权您的设备与 Google 助理建立连接。

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

请按以下步骤生成凭据:

  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 连接进行身份验证

最后,阅读有关如何使用 Google 基于令牌的身份验证来对 gRPC 与 Assistant API 的连接进行身份验证,以便整合所有信息。

注册您的设备

您可以手动注册设备模型和实例,也可以使用注册工具(在 Python 中提供)进行注册。

实现与 Google 助理的基本对话对话框

  1. 为 Google Assistant Service API 实现双向流式传输 gRPC 客户端
  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. audio_in 字段中发送多条传出的 AssistRequest 消息,其中包含语音查询中的音频数据。

  6. 处理传入的 AssistResponse 消息。

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

  8. 收到 event_typeEND_OF_UTTERANCEAssistResponse 时停止录制。

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

  10. 获取您之前提取的 conversation_state,并将其复制到下一个 AssistRequestAssistConfig 中的 DialogStateIn 消息中。

这样,您应该就可以通过设备向 Google 助理发出第一个请求了。

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

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

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

问题排查

如果遇到问题,请参阅问题排查页面。