美文网首页设计智能
任务型对话流程设计

任务型对话流程设计

作者: larrykey | 来源:发表于2018-08-07 23:41 被阅读21次

    任务型对话最简单的形式就是一问一答,但实际设计中却经常碰到多轮对话,就是经过多次问答最终完成用户的任务,设计这种对话逻辑我们一般遵循以下步骤:

    任务型对话流程

    开始对话

    一切对话的起点,都是从我们能识别出一个用户意图开始。用户表达一个意图时,可能有以下两种情况。

    完整表达

    完整表达的含义就是,完整的表达出用户所有需求,即机器能够识别用户意图,并且获得完整明确的槽位信息,例如:

    Q:帮我创建一个明天早上8点的闹钟提醒叫我起床

    A:为你设置了起床提醒。于明天早上8点通过闹钟准时提醒你。

    在这种情况下,要直接反馈结果,让用户清楚自己的表达是清晰的,并且已经被机器所理解。

    针对无屏场景,反馈话术中需要包含所有用户需要的信息,同时保证简单精炼。

    针对有屏场景,反馈话术应尽量简单,播报话术可以与反馈话术不完全相同,但反馈话术一定要包含在播报话术中。

    完整表达的情况下,无论无屏还是有屏场景,都需要有可视的卡片内容出现(无屏场景,满足卡片显示在对应 APP 中),代表我们完成了一个用户意图的交互任务。

    部分表达

    部分表达的含义是,表达的需求能让机器识别意图,但是没有完整明确的槽位信息,例如:

    Q:帮我记个备忘

    A:你想记录什么内容?

    在这种情况下,用户刚开始表达意图的时候,并不知道自己需要把关键信息说清楚,所以需要我们给用户明确的提问,让用户知道应该回答什么问题,通过多轮对话的方式,澄清不清晰的槽位信息。

    主流程设计

    要设计多轮对话,首先你需要勾勒出对话的主流程,我们将对话简单的分为两类:强制多轮对话& 被动多轮对话,简单介绍下两种情况的主流程设计。

    强制多轮对话

    强制多轮的含义,就是对话中的必填槽位信息,不能用默认值或当前用户状态默认填充,必须由用户清楚的表达出来,才能完成任务,我们称其为“强制多轮对话”,比较典型的场景是闹钟创建的过程,必须由用户说明闹钟提醒的时间才能完成。

    强制多轮中需要确定的是,必填槽位和对应的澄清话术,以及澄清必填槽位的优先级(就是先问什么再问什么的顺序)。

    被动多轮对话

    被动多轮的含义,就是指对话中的必填槽位信息,可以利用默认值或当前用户状态默认填充,但用户可能会在得到答案后,继续改变条件进行追问,我们称其为“被动多轮对话” , 比较典型的场景是 音乐播放 或 天气询问,例如:

    Q:播放歌曲

    A:好的 【开始播放歌曲】

    Q:播放周杰伦的歌曲

    A:好的【改变条件,开始播放周杰伦的歌曲】

    或者

    Q:今天天气怎么样

    A:北京今天...【播报北京天气情况】

    Q:上海呢?

    A:上海今天...【播报上海天气情况】

    这种在完成一个任务后,修改条件进行的多轮是被动多轮,被动多轮设计的时候,需要考虑到用户更改条件的可能性,设计后续行为操作,在某些延续性满足的场景(例如听音乐、看视频、播报新闻)这种被动多轮的可能性比较高。

    对话流设计

    我们使用流程图体现对话流程设计,针对垂类首先撰写整体逻辑,以提醒为例如下图:

    对话设计主流程

    这里的对话逻辑是整体的概要逻辑,包含了创建,退出完整的逻辑过程。

    分支流程设计

    针对上一步的产出,我们继续完善每个逻辑单元中的分支逻辑,详细描述各个分支各种情况的流程设计。

    分支流程图

    分支流程图体现整体业务逻辑的流程,以创建提醒为例,如下图:

    对话设计分支流程

    分支流程策略撰写

    在分支流程设计中,最核心的就是策略撰写,多轮策略是真正定义多轮的详细需求,一般在“多轮逻辑”的基础上,针对逻辑图中每个独立模块(例如:询问时间、填入内容槽位)进行策略需求细化,以创建提醒“询问时间”为例:

    【策略 X】时间有歧义(不能完全无歧义的指定到一个精确时间的)需要确认

    a. 用户仅表达了1~11点的时间(没有日期),在24小时内有两个符合条件的时间,无法判断具体什么时间的,需要给用户至少两个时间点询问(e.g. Q:“8点钟叫我吃药” A:“是今天晚上8点,还是明天早上8点?”)

    b. 用户表达了日期(X月X日,周X,明天)+时间,在当日的24小时内有两个符合条件的时间,不能准确识别事件和时间的关系,无法判断具体什么时间的,需要给用户至少两个时间点询问(e.g. Q:“12月31日8点钟叫我吃药” A:“是12月31日早上8点,还是12月31日晚上8点?”)

    c. 如果用户表达“明天早上X点叫我起床”,如果当前时间为凌晨3~6点,且叫醒time大于当前时间,让用户确认是今天早上还是明天早上(e.g. Q:“明天早上8点叫我起床” A:“当前已经是凌晨了,是明天早上8点,还是今天早上8点?”)

    d. 如果用户表达的日期有歧义(如12月第三周的周一),需要给用户至少两个时间点询问(e.g. Q:“12月第三周的周一早上8点钟叫我起床” A:“是X月X日早上X点,还是X月X日早上X点?”) 

    以上是多轮策略的一段文字需求描述,可以看到,这里的策略需求是针对多轮对话中某个关键槽位澄清的需求,也就是说不应该对多轮做整体策略需求,而应该对多轮中每个关键槽位澄清做专门的策略需求。

    退出流程设计

    针对多轮的退出策略需要单独设计,一般来说分为三种情况:完成任务主动退出、用户主动表达退出而退出、超时退出。

    完成任务主动退出

    对于任何BOT,无论是内建能力,还是第三方Skills,都秉承 “用完即走” 的理念,也就是说,只要完成任务,BOT需要立刻退出,离开对话多轮。

    唯一需要注意的是在 “被动多轮” 中,用户完成了一个任务,但是后续依然会表达对之前多轮的修正,这就需要结合上下文来定义策略,这部分策略需要在分支逻辑中写清楚。

    用户主动表达退出而退出

    用户在多轮中可能会显得不耐烦而表达退出,这时需要召回用户的各种表达,针对不同BOT用户可能表达的退出指令词不一样,在聊天中可能用户会说“不想聊了”,在听音乐的过程中用户可能表达 “不听了”,这些需要BOT在设计多轮时针对性的召回退出特定退出指令词。

    另外一种情况是,无论在任何情况下,用户都说“停止” 或 “退出”,作为通用的退出指令,会立刻退出当前任意存在的多轮BOT,这个需要有整体的退出策略进行召回。

    超时退出

    一般定义的超时退出时间在3分钟,用户没有任何沟通会自动退出多轮,各BOT可以根据自己的情况酌情调整。

    复杂对话流程设计

    有时候为了完成一个完整的任务,会串联多个对话BOT,例如如果我用语音指令购买一个商品,商品选择BOT帮我确定好购买的商品信息,支付BOT协助我完成语音交互的支付操作,订单BOT告诉我订单已经确认。这样的场景就是复杂对话流程设计。

    相关文章

      网友评论

        本文标题:任务型对话流程设计

        本文链接:https://www.haomeiwen.com/subject/bniamftx.html