跳到主要内容
版本:2.0.0

询问填槽单元

本章将讲解询问填槽单元的作用,以及如何使用询问填槽单元。

基本概念

询问填槽单元是对话流程的重要组成部分。当机器人需要询问用户,并从用户回复的消息中获取必要且关键的信息时,都要使用询问填槽单元。同时,机器人也会根据抽取到的信息来判断对话流程接下来要跳转的单元,实现对话管理。

待填词槽

询问填槽单元需要绑定一个词槽,当机器人从用户回复中抽取到需要的信息时,会将信息内容存储在对应的词槽中。

比如,我们可以使用对话流程来收集用户的订票信息,利用询问填槽单元来询问用户的出发城市,那么,我们首先可以去创建一个名为“出发城市”的词槽,关联城市实体,然后再将词槽与询问填槽单元进行关联。
这样,当用户回复了出发城市时,机器人就会使用城市名称来填槽,用以推进当前的对话流程。 slot-to-fill

单元话术

询问话术下方的空白栏中,我们可以配置机器人向用户提问时的具体话术并选择需要的回复方式。

依次回复所有:机器人一次性发出所有提前配置的话术;
随机回复一条:机器人会从多条话术中随机选择一条返回给用户;
依次回复一条:可以起到逐步澄清的作用,比如机器人首先询问用户“你的出发城市是哪里?”,当用户的回复没有给出城市信息时,机器人会发送第二条话术,“请确认一下,告诉我具体的城市名称”。 block-request-zh-v1.9

快捷回复可以起到输入提醒的功能,我们可以手动配置或者使用URL返回一些预置回复,它们会以气泡的形式显示在问答页面上,用户可以用点击代替手动输入,提高回复效率。而当用户的回复命中了多个可以填槽的值时,为了让机器人准确地抽取到最正确的信息,我们可以让机器人在此时给用户发送澄清话术,让用户指出正确的选项。 quick-reply

填槽策略

  • 仅询问时填槽:只有当对话流程进行到当前单元时,抽取到的信息才会被填入关联词槽。用户在这之前或之后的消息不会用于填槽。
  • 随时填槽,有值后不再更新:如果在此单元之前或之后的对话中,机器人抽取到了实体,则抽到的实体信息会被填入此单元的待填词槽。但如果再次抽取到相同实体,词槽的值将不会进行更新。
  • 随时填槽更新:如果在此单元之前或之后的对话中,机器人抽取到了实体,则抽到的实体信息会被填入此单元的待填词槽。且如果此后再次抽取到相同实体,则词槽的值将进行更新。

“随时填槽更新”经常被用于营销、信息查询等场景,用户常常一次性说出多个信息,使用此功能可以让机器人表现得更加智能。但在信息确认的环节,希望用户认真查看机器人的消息并就当下的问题给出答案时,往往使用“仅询问时填槽”。

此外,我们还可以配置最大询问次数。这里的次数是指,如果机器人没有从用户处得到可以填槽的信息,一共可以进行多少次询问。如果超出最大询问次数后仍然填槽失败,则机器人进入无值跳转分支。 slot-filling-strategy

跳转条件

我们可以依据词槽中被填入的实体值来配置跳转条件,使当前的对话按照我们预想的流程进行下去,如果存在多条配置条件,将按从上到下的优先级执行。

分支名称跳转规则补充说明
分支跳转指定一个规则,当词槽的值符合该规则时,当前对话流程就跳转到这个分支指定的下一个单元中-
有值默认跳转如果词槽中有值,但词槽的值不符合任意一个分支跳转的规则,当前对话流程将跳转到这个分支指定的下一个单元中-
无值跳转如果词槽中没有值,当前对话流程将跳转到这个分支指定的下一个单元中-
词槽值更新跳转如果在后续流程中,检测到词槽中的值被更新,当前对话流程将跳转到这个分支指定的下一个单元中填槽策略选择了随时填槽更新时,跳转条件可以配置这类分支

route