案例:垃圾分类技能

本案例讲解了无激活词的任务型技能配置方法

效果展示

rusbinskillSelect

步骤一:创建技能

垃圾分类查询是一个高级的任务型技能,机器人回答需要用到服务接口调用,因此我们在机器人设置-对话配置-高级技能面板创建一个高级技能。

rusbinskillSelect

步骤二:意图配置

在垃圾分类查询的对话情景下,我们推测用户可能有下列几种意图:

1.询问“机器人”是否/能否可以进行“垃圾分类查询”

2.直接询问“某种垃圾是什么垃圾”,例:询问“苹果是什么垃圾”

3.在一轮对话(查询)结束后选择继续追问查询

对应上述三种情景我们需创建三种意图,下面我们将介绍配置这三种意图所用到的概念及配置方法。

rusbinskillSelect

一、 询问“机器人”是否/能否可以进行“垃圾分类查询”-----意图【垃圾分类-无语义槽】

用户问法: 在第一期文章中我们介绍了用规则符号来泛化更多的用户问法,以提高配置效率。根据平台问法规则,我们可以配置以下用户问法: rusbinskillSelect

语义槽设置及追问话术: 配置如上图所示的用户问法后,我们已知用户想要进行垃圾分类查询的意图,但不能精准知道用户想要查询哪种垃圾。因此,我们需要了解【语义槽】、【词典】及【追问话术】等概念,来完善我们的配置。

1.【语义槽】是用户说法中所包含的关键字,语义槽可以帮助系统准确识别用户意图。如:“今天双子座的运势如何”中,语义槽为#时间#、#星座#及#运势#。语义槽通常与词典一起使用,一个语义槽可以同多个词典进行绑定,同样,一个词典也可以与不同的语义槽进行关联。

2.【词典】是一个规范的自然语言短语集合,通常定义为应用所在领域的术语的集合,可用于用户说法中的关键信息提取和语义槽调用。例如“刮风”、“降雨”属于“天气”这个词典,“跑步”、“游泳”属于“运动”这个词典。每个词典均可在多个技能中重复使用。平台现支持的词典可分为两类:系统词典和自定义词典。自定义词典的创建方法可参考平台说明文档—基本概念—词典

3.【追问话术】平台支持对语义槽设置“是否立即追问”。如果我们打开开启按钮,则需要给语义槽配置相应的追问话术(可配置多条,追问时随机选取)。当用户问法中没有提供对话所必须的语义槽值时,机器人会对其自动发起追问。

例如,在【垃圾分类查询】技能下,若用户问法为“我要查询垃圾分类”,并没有给出具体的垃圾类型,该对话无法继续进行。此时,我们如果配置追问话术,系统会自动向用户发送追问语句以获取该语义槽值。

(注:此处的语义槽“结果”,为API调用输出结果回填,API调用请参考后文【机器人回答】) rusbinskillSelect

由于我们配置的用户问法中没有出现意图需要的语义槽信息【垃圾名称】,需要手动配置才能实现垃圾分类的查询,配置步骤如下:

  • 点击添加一条语义槽,在语义槽弹窗处填写语义槽的名称-【垃圾名称】,点击确定后,语义槽设置中会显示语义槽的名称信息;
  • 在词典列,点击设置词典,在词典设置弹窗页勾选我们需要的词典-【垃圾名称】词典(该词典为自定义词典); rusbinskillSelect
  • 开启立即追问按钮,设置追问语句(可添加多条)。配置完成后,在用户问法没有获取到必需的“垃圾名称”信息后,系统会自动发出“请说出您要查询的垃圾名称”的追问。 rusbinskillSelect

二、在一轮对话(查询)结束后选择继续追问查询——意图【继续追问】

根据用户言语习惯,我们可知在完成一轮垃圾分类查询时,用户常使用反问句“那[垃圾名称](是什么垃圾)呢?”追问进行第二轮问答。在配置用户问法时,“那苹果呢”、“那土豆呢“为同一种句式。因此,我们可将如上句式中的关键词[垃圾名称]使用槽位代替,并配置以下用户问法: 在这里我们可以发现,如果在用户问法中添加了语义槽,语义槽设置中会自动出现该条语义槽的名称,这时候需要我们为语义槽关联上对应的词典,系统语义槽已自动关联词典,无需再配置,当然我们也可以根据需要修改关联的词典。 rusbinskillSelect

考虑到用户问法中已经明确引用语义槽【垃圾名称】,因此这个意图下的语义槽也就不需要配置【追问话术】了。 rusbinskillSelect

三、直接询问“某种垃圾是什么垃圾”,例:询问“苹果是什么垃圾”——意图【垃圾分类-有语义槽】

这是一种完整理想的用户表达方法,参考以上意图的配置方法和用户表达习惯,该意图下的用户问法可进行如下配置: rusbinskillSelect

步骤三:配置机器人回复

在前两篇文章中我们介绍了配置机器人回答的两种操作“不使用API资源”以及“机器人提问”。在本技能的机器人回答配置中,我们选用“调用API资源”的方式。这种操作适用于回复内容需要使用外部资源,或回复内容跟随用户语义槽的值而变动的情况。平台系统提供一些常用的API接口,如:地址查询、邮政编码查询、快递查询等,供开发者免费使用。例如:“垃圾分类”这个意图,就需要调用API接口,才能针对不同类型的垃圾进行分类,给出明确的回复。

  • 我们首先在回复类型处选择【服务接口调用】,下拉选择【垃圾分类】: rusbinskillSelect
  • 点击【接口配置】,将输入参数与语义槽对应起来,保持语义槽的传递。 这里的输出参数不需要开发者配置,系统会对其自动建槽,并关联接口回填词典。如果想要更改,我们也可以删除系统填写的语义槽名称,重新定义新的语义槽名称。点击确定后,语义槽设置中即会显示输出参数对应的语义槽名称。 rusbinskillSelect
  • 设置好接口后,我们还可以在API配置中进行接口调试,参看API是否有效。在调试页面输入想要查询的垃圾名称,即可查看返回的结果状态。 rusbinskillSelect
  • 完成配置后,我们就可以在返回的每个查询状态下,配置相应的回复结果。 rusbinskillSelect

如果系统API不能满足技能开发需要,平台也支持开发者上传自定义API。开发者可以点击【自定义接口】>>【创建自定义接口】,填写接口名称、URL、输入/输出参数、返回状态即可。 rusbinskillSelect

步骤四:开启多轮对话

如果用户问题、指令或请求较为复杂,需要进行多轮对话才能完成时,我们可以在配置完机器人回答后,通过【是否结束对话】-【不结束对话】-选择承接的意图(可选择多个),来实现意图之间的跳转。

例如:我们在配置“垃圾分类”技能下三个意图的【机器人回答】后,在【是否结束对话】下,选择跳转到“继续追问”这个意图,就组成了一个关于垃圾分类查询的多轮对话,第一轮对话为“请帮我查询XX是什么垃圾”,第二轮对话为“那XX(是什么垃圾)呢?”。 同时为了保证与上下意图的衔接,开发者需要在跳转的意图上方选择【是否承接对话】-承接对话。开启【承接对话】的设置后,只有用户说法与上一轮意图吻合时,系统才会进入当前意图;否则意图问法将不能被系统语义解析。 多轮对话配置更多案例请见【案例:球鞋价格查询(多轮对话)】一节。 rusbinskillSelect rusbinskillSelect

步骤五:调试发布

在最后进行【机器人调试】,配置完整的“垃圾分类技能”就可以同步发布至你的小程序及公众号了。