元数据与属性
本章节将讲解:什么是元数据、属性,以及对话平台如何利用元数据和属性来实现个性化的回复和响应
元数据定义
在与用户的每一次对话交互过程中,机器人除了能够通过NLP识别对话内容的关键信息外,会话所携带的一些原生信息如时间戳、情绪、用户属性等,能够更好的帮助机器人去做出更恰当的响应。我们将这类原生信息统一称作元数据(metadata)。
元数据(metadata)包含以下几个常见的类型:
- 由外部创建并和消息一同通过对话接口传入的
参数名称
与参数值
,譬如时间戳、用户ID等信息。 - 通过用户ID查询到的,能够描述该用户画像的
属性名称
与属性值
,如用户职位、会员等级等。 - 模型基于消息进行计算,生成额外描述信息的
参数名称
与参数值
,如情绪分类等。
预设元数据
预设元数据是调用对话接口时,平台自动生成的信息。目前平台提供的预设元数据如下:
元数据名 | 说明 | 示例 |
---|---|---|
timezone | 会话所在时区,详情见机器人管理 | Asia/Shanghai |
agent_id | 回复的机器人id,详情见机器人管理 | 8016 |
environment | 回复的环境,详情见训练与测试 | SKETCH |
属性定义
属性是元数据中最常被使用的一类,通过属性往往能够实现绝大多数业务相关的个性化需求,譬如:
- 针对不同业务属性或属性组的用户,回复不同的内容
- 在回复内容中,拼接用户的属性值,使得机器人的话术更加准确且个性化
- 将用户属性传递给第三方接口服务,为用户提供对话以外的更多能力
平台上提供了用户的属性管理能力,在平台上可以维护用户的属性和属性类型,并使用这些属性搭建对话流程。
属性分为“单值”和“多值”两种类型,他们在更新的策略上有所不同。
- 单值属性只有一个值,被更新时,会将原属性值替换。
- 多值属性可以有多个值,类似标签。可以在保留已有属性值的基础上,追加更多值。
预设属性
预设属性是创建用户时,平台自动为用户生成的信息,所有预设属性可以在属性管理界面看到。目前平台提供的预设属性如下:
属性名 | 说明 |
---|---|
channel | 用户所在的渠道id |
用户属性的创建和管理
点击机器人菜单“搭建-自定义设置-属性”,就可以进入到属性管理页面,展示属性ID、属性名称、属性类型、及操作按钮:
点击“新建属性”按钮,设置属性名称及属性类型即可创建一个新的属性。
- 单值类型一般为属性值之间互斥的属性。如会员与非会员、最高学历、性别等
- 多值类型一般为可以同时标记多个的用户标签。如特长、偏好等
更改渠道用户的属性值
- 在创建用户后,可以调用接口来操作指定用户的属性值,调用可能用到的接口如下:
- 创建渠道用户:操作多个渠道用户接口
/chatbot/v1alpha1/agents/{agentId}/channels/{channelId}/users/mutate
- 获取渠道用户属性值:获取用户的属性值接口
/chatbot/v1alpha1/agents/{agentId}/channels/{channelId}/users/{username}/attribute-value
- 更改渠道用户的属性值:更改用户的属性值接口
/chatbot/v1alpha1/agents/{agentId}/channels/{channelId}/users/{username}/attribute-value/mutate
- 创建渠道用户:操作多个渠道用户接口
通过元数据实现个性化回复
元数据通用的引用格式和渲染效果
引用格式:{metadata=元数据名称}
渲染效果:如果元数据为空则渲染为空;如果元数据是多值,目前会将所有值用“,”拼接成一个字符串整体渲染。
在机器人回复内容中引用元数据值
在FAQ答案、对话树的机器人问和机器人回、以及对话流程中的消息发送、询问填槽等单元均可生效。
在机器人发送消息的答案文本编辑区域中,用元数据值来渲染答案。
机器人会将对应引用文本直接用元数据值替换:
note
- 如果测试时机器人无法发送消息,请复核metadata的引用格式是否错误。
- 常见的错误类型是括号{}不成对导致的解析JSON报错,因此机器人无法发送消息。
运算赋值单元中将元数据值赋给词槽
在赋值运算单元-复制模式的“将词槽赋值为”的编辑区域中,用元数据值来赋值。
机器人会将对应元数据值赋给对应词槽:
将元数据值作为多槽单元的接口请求参数
在多槽接口单元的请求地址编辑区域中,用元数据值来渲染请求参数。
机器人会将请求参数中的引用直接用元数据值替换:
在对话流程策略中使用元数据值
- 单元的分支跳转配置中,根据元数据值进行跳转
- 将属性值用于询问填槽单元超过询问次数后的兜底值