技能交互设计规范

经过严谨和规范化设计后的优秀技能更容易被用户了解、使用和喜爱。DuerOS提供了对话式技能的交互设计规范,覆盖了技能的场景、风格、话术、引导和满足等方面,让你的技能与用户进行良好的交互,更快更好的服务用户。

技能场景定义

技能功能独立清晰

一个技能应该有独立且明确清晰的场景,避免一个技能面向的场景模糊或者同时支持多个功能场景。

反面示例

单一技能“小白电话”,同时具备电话号码归属地查询、电话丢失拨打、电话缴费、电话订外卖、电话订机票等多个功能。

正面示例

拆分为多个独立技能:“小白电话缴费”、“小白手机”、“小白外卖”。

技能风格设计

礼貌友好

必须严格避免技能中出现任何暴力、色情、反动或者不礼貌的内容。

真实可靠

必须严格保证技能提供的所有内容均真实、准确、可靠。

技能话术设计

简洁自然

在自然易懂的前提下,应该尽可能的提炼出简洁的技能话术。可以尝试大声并多次重复朗读你的技能话术,直到能够一口气流畅通顺地完成朗读。若表达信息过多,可尝试将话术拆解细分为多轮对话表达。

反面示例

用户:打开小白手机,我的手机不见了
技能:感谢你使用小白手机,当前技能可以通过拨打你的电话的方式快速找到你的手机,你可以直接对我说你的电话号码,请问你的电话号码是多少?

正面示例

用户:打开小白手机,我的手机不见了
技能:请说你的电话号码

直白易懂

技能中的话术应该使用日常直白通用的表达方式,避免使用缩略词或生僻词汇,例如“未”、“勿”,应替换为更易于理解的“没有”、“不要”等。

反面示例

用户:订大杯不加糖拿铁
技能:现未营业暂无卖售,请勿下单

正面示例

用户:订大杯不加糖拿铁
技能:当前时段店铺没有营业,请于早上10点后再下单

丰富多变

用户可能会多次进入技能,在保持话术简洁直白的同时,可以通过丰富话术和功能的多样性,使技能更加生动人性化。

正面示例

用户:打开今日美食推荐
话术1:今天将推荐给你好吃不贵的美食...
话术2:为你推荐健康又好吃的...
话术3:今天天气炎热,适合...
话术4:今晚就是平安夜,最棒的美食是...

技能引导设计

欢迎引导

在用户打开技能的开始阶段,可以有简洁欢迎或技能简介,同时有友好的引导,让用户能够清晰地知道接下来应该怎样与你的技能进行交流。

反面示例

技能:欢迎来到小白声音,我可以为你播放打雷的声音、下雨的声音以及各种其他环境的背景音,你之前听过下雨的声音,可以告诉我现在你想听的声音,例如对我说播放海浪的声音即可进行播放海浪的声音

正面示例

技能:欢迎来到小白声音,可以为你播放海浪、下雨等环境背景音,请对我说你想要播放的背景音

若你的技能为需求明确且一轮交互即可满足的即用即走类型的技能,用户打开时可以省去欢迎和引导,直接回答以满足用户的问询。

反面示例

用户:打开历史上的今天
技能:欢迎使用历史上的今天,在这里你可以了解到历史上的今天发生了什么重大事件,你可以对我说今天发生了什么。

正面示例

用户:打开历史上的今天
技能:2006年的今天,美国灵魂乐歌手詹姆斯·布朗逝世。

提供明确简洁且受限的选项

需要用户进行回答时,应该给到非常清晰简洁且范围受限的回答范围,以避免用户进行开放式回答。如果是进行选项引导时,应该严格控制选项内容及数量。

反面示例

技能:欢迎来到奇幻探险...请问接下来你将想要走那条路径?

正面示例

技能:欢迎来到奇幻探险...一共有三条路供你选择,分别是:花园、森林、古堡,请选择你要去的路径

多轮对话中的友好引导

  • 句尾引导:多轮对话中,技能播报话术末尾必须包含明确的问询或者引导,告知用户接下来的多轮应该怎样与技能交互。

反面示例

用户:我的手机不见了
技能:好的,你可以通过我来找到你的手机

正面示例

用户:我的手机不见了
技能:好的,请说你的电话号码

  • 多次问询引导:当用户的回复没有命中意图时,应该明确告知用户没有理解,并且进行更清晰明确的引导话术。

反面示例

用户:我的手机不见了
技能:好的,请说你的电话号码
用户:还行还行
技能:请说你的电话号码

正面示例

用户:我的手机不见了
技能:好的,请说你的电话号码
用户:还行还行
技能:没有理解,请依次说出电话号码数字

  • 多次未命中的退出引导:当用户连续多次回复没有命中意图时,在告知没有理解并且进行更清晰引导的同时,需要明确告知用户应该怎样退出技能或主动为用户退出当前技能。

反面示例

用户:我的手机不见了
技能:好的,请说你的电话号码
用户:还行还行
技能:请说你的电话号码
用户:还行还行
技能:请说你的电话号码

正面示例

用户:我的手机不见了
技能:好的,请说你的电话号码
用户:还行还行
技能:没有理解,请依次说出电话号码数字
用户:还行还行
技能:没有理解,你可以表达退出来关闭当前技能。请依次说出电话号码数字,以便于查找你的手机

技能满足设计

支持满足多样丰富表达

尽可能穷举用户可能的多样的口语化表达方式,并对此进行满足。

反面示例

用户1:帮我找手机
技能:好的,请说你的电话号码

用户2:我的手机不见了
技能:不能理解

用户3:拨打一下我的电话
技能:不能理解

正面示例

用户1:帮我找手机
技能:好的,请说你的电话号码

用户2:我的手机不见了
技能:好的,请说你的电话号码

用户3:拨打一下我的电话
技能:好的,请说你的电话号码

提供简洁清晰的反馈

可以通过“好的”、“收到”、“谢谢”等简洁的反馈话术,来告知用户已经收到并且理解了用户表达。

反面示例

技能:请问出发城市是北京吗
用户:是的
技能:请说目的地城市
用户:上海
技能:请说起飞日期

正面示例

技能:请问出发城市是北京吗
用户:是的
技能:好的,请说目的地城市
用户:上海
技能:收到,请说起飞日期

处理潜在通用需求

需要考虑技能内各个场景下的潜在通用表达需求,示例通用表达场景:

  • 在等待用户回答选项时,应该能够友好处理用户的回放需求,例如“再说一遍”、“我没听清”等等。
  • 游戏类技能应该能够满足用户的常见帮助需求,例如“我该做什么”、“你能做什么”、“这个怎么玩”等等。
  • 在游戏技能开头播放复杂的玩法介绍时,应该能友好处理用户多次使用后的跳过需求,例如“跳过”、“跳过介绍”等等。

反面示例1

技能:欢迎来到奇幻探险...一共有三条路供你选择,分别是:花园、森林、古堡,请选择你要去的路径
用户:再说一遍
技能:对不起,不能理解

正面示例1

技能:欢迎来到奇幻探险...一共有三条路供你选择,分别是:花园、森林、古堡,请选择你要去的路径
用户:再说一遍
技能:好的,请选择你要去的路径,分别是:花园、森林、古堡

反面示例2

技能:欢迎来到奇幻探险,在这里,你可以...
用户:这个游戏怎么玩
技能:对不起,不能理解

正面示例2

技能:欢迎来到奇幻探险,在这里,你可以...
用户:这个游戏怎么玩
技能:你可以对我说...

多个信息同时传递话术

应该尽可能避免同时传递多个信息。当必须要传递时,应该在多个信息之间通过“第一步”、“第二步”、“首先”、“然后”、“最后”等简洁的序列话术,使用户更自然轻松的理解。

反面示例

用户:打开小白食谱,蛋炒饭怎么做
技能:将辣椒和火腿肠切丁,鸡蛋打散,倒入米饭并均匀搅拌,锅内放油,热后转中火并将米饭倒入,筷子搅拌至米饭颗粒分明。

正面示例

用户:打开小白食谱,蛋炒饭怎么做
技能:首先,将辣椒和火腿肠切丁。第二步,鸡蛋打散,倒入米饭并均匀搅拌。第三步,锅内放油,热后转中火并将米饭倒入。最后,筷子搅拌至米饭颗粒分明。

合理处理同音词

对话式交互可能会出现同音词,需要合理处理同音词问题,以避免理解歧义。

反面示例

技能:请说你的城市
用户:fuzhou
技能:福州市当前..

正面示例

技能:请说你的城市
用户:fuzhou
技能:请问是福建省的福州市还是江西省的抚州市?
用户:江西省的抚州市
技能:抚州市当前..

合理处理同义词

通过满足常用名称的同义词,将会满足用户更加自由的表达,以获得超出预期的 用户体验。

反面示例

用户:打开芒果台
技能:对不起,不能理解

正面示例

用户:打开芒果台
技能:已为你切换到湖南卫视

重要信息二次确认

因为可能缺少视觉辅助,重要信息或通过对话表达易于出错的信息应该进行二次确认以保证信息正确。

反面示例

用户:我的手机不见了
技能:好的,请说你的电话号码
用户:188xxxx2958
技能:正在为你拨打。

正面示例

用户:我的手机不见了
技能:好的,请说你的电话号码
用户:188xxxx2958
技能:请问是要找188xxxx2958的手机吗。
用户:是的
技能:正在为你拨打。
(*说明:电话号码数字较长且信息关键,在用户表达后,应该进行二次确认)

记录用户重要信息

可通过记录用户之前表达的重要信息,例如技能功能相关信息、游戏进度等,以降低用户的交互成本,并传递友好贴心的使用体验。

反面示例

用户(第二次使用):我的手机不见了
技能:好的,请说你的电话号码
用户:188xxxx2958
技能:请问是要找188xxxx2958的手机吗。
用户:是的
技能:正在为你拨打。

正面示例

用户(第二次使用):我的手机不见了
技能:请问是要找尾号2958的手机吗
用户:是的
技能:正在为你拨打。
(*说明:通过记录用户上次使用的电话号码,避免用户二次输入)

覆盖所有分支

除了能覆盖用户最常用的表达外,也需要尽可能周全完善地设计技能场景范围内所有可能遇到的分支流程,并给到对应的满足策略。

反面示例

用户:我的手机不见了
技能:请问是要找尾号2958的手机吗
用户:我要拨打188xxxx2978
技能:对不起,不能理解,请问是要找尾号2958的手机吗

正面示例

用户:我的手机不见了
技能:请问是要找尾号2958的手机吗
用户:我要拨打188xxxx2978
技能:好的,请问是要找188xxxx2978的手机吗。
(*说明:当前场景下,用户最常用的表达可能)

无响应主动退出

多轮对话中,用户面对问询或者引导无任何响应连续超过2次时,建议应该主动退出技能并告知用户已主动退出。

反面示例

用户:我的手机不见了
技能:好的,请说你的电话号码
用户:(无响应)
技能:请说你的电话号码
用户:(无响应)
技能:请说你的电话号码

正面示例

用户:我的手机不见了
技能:好的,请说你的电话号码
用户:(无响应)
技能:没有听清,需要依次说出电话号码数字,以便于查找你的手机
用户:(无响应)
技能:已退出小白手机,欢迎再次使用

结束时汇总反馈

在多次信息问询完成后,结束时应该汇总用户在各轮回答的信息字段并反馈告知用户确认。

反面示例

技能:请问出发城市是北京吗
用户:是的
技能:好的,请说目的地城市
用户:上海
技能:收到,请说起飞日期
用户:2月16日
技能:好的,请说起飞时段
用户:17点之后
技能:好的,为你找到...

正面示例

技能:请问出发城市是北京吗
用户:是的
技能:好的,请说目的地城市
用户:上海
技能:收到,请说起飞日期
用户:2月16日
技能:好的,请说起飞时段
用户:17点之后
技能:请问你要预订的是2月16日、17点之后、从北京飞往上海的航班吗
用户:对
技能:好的,为你找到...

技能发布上线

技能服务稳定可靠

应该严格保证技能的后端服务稳定可靠,快速响应用户请求,达到用户良好的使用预期。

技能信息有标识度

通过定义清晰独立而有差异化的技能功能、选择不易于混淆的技能调用名称等技能信息,让用户在众多技能中能快速的区分出你的技能并乐于选择使用。

技能描述简洁易懂

尽可能完善技能的描述信息,也可以在描述信息中提供更多技能内的常用表达示例,为用户快速了解技能功能。