多语言代理

Dialogflow 支持多种语言。 如需查看完整列表,请参阅语言参考页面。 您在创建代理时选择的语言会设置为默认语言,您也可以添加其他语言。

根语言和区域特定语言

语言分为两类:

  • 根语言:这种语言不指定语言区域,例如“英语 (en)”
  • 区域特定语言:这种语言将语言区域指定为特定国家或地区,例如“英语 - 美国 (en-US)”

某些语言既是根语言又是区域特定语言。这些语言的语言区域明显不同,因此这些语言区域不能共享共同的根语言。示例:

  • 中文 - 粤语(zh-HK)
  • 简体中文 (zh-CN)
  • 繁体中文 (zh-TW)
  • 葡萄牙语 - 巴西 (pt-BR)
  • 葡萄牙语 - 葡萄牙 (pt)

您应该主要针对根语言设计代理,并仅在需要时针对区域特定语言进行自定义。

添加语言

要使用 Dialogflow 控制台添加语言或语言区域,请按照以下步骤操作:

  1. 打开 Dialogflow CX 控制台
  2. 为代理选择 Google Cloud 项目。
  3. 在列表中找到代理。
  4. 点击代理显示名。
  5. 点击代理设置
  6. 点击语言标签页。
  7. 根据需要添加或移除语言。
  8. 点击保存

语言特定数据

大多数代理数据对于多语言代理的所有语言都通用。但是,用于与最终用户互动的文本针对特定语言。构建多语言代理时,必须为每种语言提供此语言特定数据。当您从控制台中选择语言或向 API 提供语言时,您可以访问指定语言的这些语言特定数据。以下是特定语言数据的完整列表:

如需使用控制台访问特定语言的数据,请点击控制台顶部的语言按钮。

选择语言屏幕截图

例如,下例中的“size”(尺寸)实体类型用于订购 T 恤。这个代理最初以英语配置,因此该实体具有“S”及同义词“small”这样的条目。 当添加了西班牙语时,Dialogflow 会针对新语言创建实体,但您需要以西班牙语提供实体条目。

实体屏幕截图

如需使用 API 访问特定语言数据,请在获取、创建或更新 EntityTypeIntentPage 类型时提供 languageCode 参数。

为 EntityType 参考选择协议和端口

协议 V3 V3beta1
REST EntityType 资源 EntityType 资源
RPC EntityType 接口 EntityType 接口
C++ EntityTypesClient 不可用
C# EntityTypesClient 不可用
Go EntityTypesClient 不可用
Java EntityTypesClient EntityTypesClient
Node.js EntityTypesClient EntityTypesClient
PHP 不可用 不可用
Python EntityTypesClient EntityTypesClient
Ruby 不可用 不可用

为意图参考选择协议和版本

协议 V3 V3beta1
REST 意图资源 意图资源
RPC intent 接口 intent 接口
C++ IntentsClient 不可用
C# IntentsClient 不可用
Go IntentsClient 不可用
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 不可用 不可用
Python IntentsClient IntentsClient
Ruby 不可用 不可用

为页面参考选择协议和版本

协议 V3 V3beta1
REST 页面资源 页面资源
RPC 页面界面 页面界面
C++ PagesClient 不可用
C# PagesClient 不可用
Go PagesClient 不可用
Java PagesClient PagesClient
Node.js PagesClient PagesClient
PHP 不可用 不可用
Python PagesClient PagesClient
Ruby 不可用 不可用

您必须对每种语言分别进行 API 调用才能访问所有特定语言的数据。如果您的 API 调用更新了通用语言数据,则该数据将针对所有语言进行更新。

在模拟器中测试

使用模拟器时,可在代理名称下选择要使用的语言。

使用 API 提供语言

通过 API 发送请求时,请设置 detectIntent 方法的 queryInput.languageCode 字段。如需了解详情,请参阅 Sessions 类型。

选择会话引用的协议和版本

协议 V3 V3beta1
REST 会话资源 会话资源
RPC 会话接口 会话接口
C++ SessionsClient 不可用
C# SessionsClient 不可用
Go SessionsClient 不可用
Java SessionsClient SessionsClient
Node.js SessionsClient SessionsClient
PHP 不可用 不可用
Python SessionsClient SessionsClient
Ruby 不可用 不可用

语言自动检测

如果最终用户的查询语言与请求中指定的语言不同,Dialogflow 可检测到该语言,并自动切换到最终用户的语言。如需查看此功能支持的语言列表,请参阅语言参考页面。WebhookRequest 中的 LanguageInfo 字段标识启用语言检测后的输入语言、解析的语言和置信度分数。

启用语言自动检测

您必须在代理和流级别启用语言自动检测。

  1. 转到代理设置并选择语言标签页。

  2. 选中启用语言自动检测和切换功能旁边的复选框,为代理启用此功能。点击保存以保存更改。

  3. 选择一个流,然后前往流设置。在流设置面板中,选中 Enable language auto Detection and switch 旁边的复选框。

  4. 语言下拉菜单中,选择您希望 Dialogflow 能够使用哪些语言做出响应。确保您仅选择语言自动检测功能支持的语言

  5. 点击保存以保存更改。

未提供代理语言的请求

当 Dialogflow 收到未提供代理支持的语言的请求时,需遵循以下规则:

  • 当请求未提供语言时,Dialogflow 会自动确定输入语言,并在已启用自动检测语言功能的情况下以该语言进行响应。如果停用了自动语言检测功能,Dialogflow 会使用默认语言处理请求。
  • 当请求提供代理不支持的区域特定语言,但代理支持其关联的根语言时,Dialogflow 使用根语言处理该请求。
  • 上述规则不适用于系统实体提取。 系统实体提取使用提供的区域特定语言,即使代理不支持该区域特定语言也是如此。

集成

通过基于文本的集成进行的代理交互仅使用代理的默认语言。