跳到主要内容
版本:1.10.0

表格读取单元

本章将讲解表格读取单元的作用,以及如何使用表格读取单元。

基本概念

表格读取单元,顾名思义,就是让机器人从一张表格中获取数据,因为在实际场景中,很多业务数据都是以表格的形式存储的,使用表格读取单元可以实现对这些结构化数据的高效利用。
table-lookup-create-table-zh-v1.9

以这张基金信息表格为例,表格最左边一列的各项基金名称是主体,基金类型、风险级别、基金经理是属性。表格中剩余的部分是属性值。

常见的表格查询方式有两种:

  • 已知“主体”和“属性”,查询“属性值”:
    “东方基金的风险级别是什么?”
    “阳光基金的基金经理是谁?”

  • 已知“属性”和“属性值”,查询“主体”:
    “债券型的基金是哪些?”
    “哪个基金是低风险基金?”

我们可以通过定位,将以上这些查询语句转换成对二维表格的查询,从而给出答案。

定位条件

想要查询表格中任何一个值,先要确定这个值在表格中的位置,也就是它所在的行和列。

机器人需要先做一件事来判断“所在行”:

  • 定位某一列
  • 定位这一列中的某一个值

比如,为了查询“东方基金的风险级别是什么?”,机器人可以:1 定位“基金”这一主体列;2 以“基金”这一主体列的“阳光基金”这个值来确定查询结果所在的行。

机器人需要再做一件事来判断“所在列”:

  • 定位另外一列

比如,机器人定位了“基金”这一列的“阳光基金”这个值后,需要再定位“风险级别”这一列。这样,才可以得到查询结果:“阳光基金的风险级别是高风险。”

读表配置

综上,如果想让机器人顺利得查询到表格中的数据,我们就需要预先配置好这些定位条件。

  1. 在对话流程中使用表格读取单元,我们要先创建好对应的表格,然后在单元内部选择对应的表格; table-lookup-choose-table-zh-v1.9

  2. 定位条件的下拉列表显示了表格的所有列名,选择一个列名,则该列就成为了表格查询的定位列。如果我们希望以完全匹配的方式去查询表格,可以选择“等于”;
    positioning-column-zh-v1.9

  3. 定位值的下拉列表显示的是定位列的各个值,如果我们选择“阳光基金”,那么机器人查询表格时就会查询“阳光基金”所在的行。
    不过,为了让对话更加灵活,我们可以用定位列的各个值(在本文的例子里指各个基金名称)创建一个实体,然后再创建一个词槽关联它,这样,机器人就可以从用户实际的消息中去抽取基金名称来填槽,动态查询表格;
    positioning-column-value-zh-v1.9

  4. 返回内容填槽的下拉列表中显示的同样是列名,我们可以选择一列帮助机器人定位最终查表的位置,比如,要查询基金的类型,我们就可以选择基金类型列,并且创建一个词槽,将机器人查询的结果存在这个词槽中,以便在后续对话流程中使用。
    table-lookup-slot-return-zh-v1.9
    另外,表格数据中不仅包含文本类型的数据,还有自定义内容类型的数据,比如“基金经理”这一列,如果需要查询这种字段格式为自定义内容的列,就可以在返回答案回复下面选择这一列,机器人查询后会直接将自定义内容返回给用户。
    table-lookup-answer-return-zh-v1.9

澄清配置

如果机器人在用户消息中获取到了多个定位值信息,会导致查询到多个结果。如果没有澄清规则,这时机器人会使用一槽多值的逻辑去填槽,并按顺序返回结果。

但是,我们可以配置澄清规则来优化这一流程,在主体列下选择需要澄清的列名,并配置澄清的话术,机器人便可以向用户发送澄清消息,让用户在多个结果中进行确认。澄清动作只能进行一次,成功澄清后,机器人会使用用户确认的值去继续查表流程,返回唯一的查表结果。

当然,可能会出现用户未能够成功澄清的情况,这时系统会按照一槽多值的逻辑填槽,不再返回答案,且视作查表成功继续进行对话流程。
table-lookup-clarify-zh-v1.9

跳转关系

表格读取单元以是否成功查询到了表格中的数据作为分支跳转的依据。 table-lookup-routes-zh-v1.9