首先介绍下什么是槽位。槽位其实是个特定概念,是系统需要向用户收集的关键信息。而填槽则是收集用户信息的过程,是用户将模糊或缺失的意图补全的过程。而槽位值就是用户表达的具体关键信息。打个比方,以种树为例,种植者需要在适宜的土里挖坑,并在坑里撒种子,这个坑就相当于槽位,而在坑里撒种子就等于填槽。具体撒的是什么品种的种子就类似于槽位值的概念。
槽位从宏观上讲有三大类:垂直槽位或叫递进槽位,平行槽位、组合槽位
1.垂直槽位
系统通过某个话题设置多个槽位,并且按照其预设的路径引导用户一个个去填槽,同时给出相应的答案。这些槽位通常是引导用户深入话题的关键节点,而答案则是由这些节点牵引出的“故事情节”。
一般来说每个槽位都会给出几个槽位值供用户选择(槽位值数量不多可穷举/“是否类”的判断型槽位),或者直接让用户输入(半开放式,无法穷举)。比如系统问用户“是否炒过高送转题材”,并给出“炒过”、“没炒过”两个判断类问题的选项。又比如系统问用户“您买入同花顺的价格是多少”,这种半开放式的问题就需要用户直接输入。可以通过系统校验看输入的值是否合理。
垂直槽位以系统主动式对话为主,引导用户按照既定的“故事线”发展。有点类似游戏设计里的前景故事。而且每个槽位都是往路径更深一步的方向前进(除结束对话的选项外,如“聊点别的”)。
2.平行槽位
通常以任务导向型对话为主,而且完成任务所需的槽位数基本上是固定的。一般由用户主动发起,系统根据用户问句判断缺少的槽位信息,再进一步通过对话搜集信息,最终帮助用户完成任务。比如订机票,包含时间、航班、目的地、出发地等槽位。用户在向系统发送问句可能会缺少部分槽位的槽位值,如“帮我订一张从杭州飞北京的机票”就缺少时间、航班等槽位信息。这时就需要通过系统和用户多轮对话来完成填槽的过程。不过有些包含流程的任务导向型对话也会存在先后关系。比如支付订单流程:“下单-填写收货信息-确认订单-支付-等待发货……”,而“支付”环节可能又包括,“调取第三方支付平台-输入密码-支付成功”。每个环节的槽位和槽位之间存在递进关系。
平行槽位之间通常没有先后顺序,因此填槽的过程也是不固定的。主要看用户提供的信息缺少哪些内容,再决定先问什么,再问什么。但有时候会给平行槽设置优先级,哪些槽位是必填,哪些是可填可不填。另外也会给平行槽排序,优先获取哪些信息。
3.组合槽位
既包含垂直槽位又包含平行槽位。还是以上面支付订单流程为例。流程中环节和环节之间的关键节点主要是垂直槽位,会决定每个分支的走向。某个流程环节内的是平行槽位。比如“下单-填写收货信息”中,“确认下单”就是垂直槽位,提供的“确认下单”,“返回查看”两个槽位值会引导用户到不同的分支。用户选择“确认下单”就直接进到“填写收货信息”环节,选择“返回查看”则是回到上一轮对话。而“填写收货信息”环节内包含的姓名、地址、电话等都是平行槽位。
平行槽位不会决定路径的分支走向,而是决定了路径能否走通。
槽位从微观上来说有三类:自定义槽位、词库槽位、接口槽位
1.自定义槽位
从运营后台配置上看,自定义槽位就是运营可以自己编写的分支路径选项,选项作为前端推荐展示给用户。每个不同的路径选项,都有自成一体的对话流逻辑,相互之间并不会重叠和影响。不同分支路径下的对话流,相当于是故事的走向。而具体按什么故事线走,就需要用户在分支节点进行选择。
自定义槽位里面的值及数量并不固定,运营可以根据对话流走向的需要自定义编写和增减。一些判断类的问句,也可以用自定义槽位来给出推荐选项。比如系统问“想要试试这个技能吗”,给出的槽位值就是“好的”、“不用了”。自定义槽位在槽位值取名上可以更加丰富,有个性。还是上个例子,自定义槽位对应的“是否”选项值可以改为“好哇,试试呗”、“不用啦,下次吧”,更显人性化特征。
2.词库槽位
词库槽位相当于是取数据库的一组数据作为选项,或是作为匹配项来验证用户输入。数据组对应槽位,每个数据点对应槽位里面的值。
若词库槽位值的数据量比较小,可以作为推荐选项展示给用户。若数据量中等,可以先展示几个选项,同时支持用户输入。其余未展示的选项用来验证用户输入是否与之匹配(用户输入不同于选项的情况下)。若是数据量比较大,可以不展示选项,直接让用户手动输入。此时系统问句要带上提示,告诉用户输入的内容,怎么输入,数据格式或话术表达是否有限制要求等。
3.接口槽位
等同于词库槽位,只是接口槽位是外部提供的,词库槽位是内部数据库的数据。