意图

概述

用户的每一轮对话,都可以认为是一个意图。每一个意图都是为了实现用户进行这轮对话的目的。如意图【查询天气】,用户的目的就是为了查询某天某地的天气状况。
一个任务,需要用户进行一轮或者多轮对话。用户的每一轮对话,都可以认为是一个意图
Minion在一个意图中,系统会把用户的说法,和开发者提供的服务/功能关联起来;一个意图包含以下的模块:
1.用户说法
2.语义槽
3.控件选择
4.资源调用
5.对话回复

类型

在每个任务中,意图主要分成自定义意图、内置意图。

自定义意图

进入任务编辑页后,开发者可以通过“添加意图”的按钮,添加自定义意图。
Minion

内置意图

DUI为开发者提供了【sys.确认】、【sys.取消】以及【sys.用户选择】这三个内置意图,这三个意图在每个任务中只能出现一次。

【sys.确认】和【sys.取消】

开发者可以自己创建这两个内置意图。
Minion
意图确认(取消)的定制界面已经预设了常见的确认和取消说法,开发者不需要重新标注,可以在用户说法框对说法进行测试和自行标注。其中内置的说法以及开发者添加的说法,都是弱说法

Minion

【sys.用户选择】

【sys.用户选择】内置了常用的选择和翻页说法,例如“第一个”“下一页”等,供用户在列表控件进行选择的时候使用。需要注意的是,这些说法都是弱说法。这个意图在开发者添加列表控件的时候会自动创建,无法手动创建。


分词选择
用户除了可以说“第一个”进行选择,也能直接说出结果的关键词进行选择。例如搜索地址的API返回多个“深圳大学”结果,用户可以说北门选中“深圳大学北门”的选项。此外,在列表选择的界面,对话优先根据语义结果进行选择,如果没有选择结果才会跳转意图。

case 1
前提条件:开发者在导航意图中标注了说法:去#地址#
user:导航去深圳大学
sys:找到10个深圳大学相关的结果,请选择
user:去地铁站
sys:即将为你导航去深圳大学地铁站

在上面的例子中,第二轮对话返回的的语义解析是:地址 = 地铁站,对话会用关键字【地铁站】进行选择,如果列表中有【地铁站】的选项,就会选中并执行导航操作。


case 2
user:导航去深圳大学
sys:找到10个深圳大学相关的结果,请选择
user:去世界之窗
sys:找到10个世界之窗相关的结果,请选择

在第二个例子中,对话同样会用语义解析的结果【世界之窗】作为关键字进行选择。但是在列表中没有找到相应的选项,则对话会进入这个说法的意图即【导航】,重新以【世界之窗】作为关键字进行搜索。

添加量词

sys.用户选择的意图,内置常见的选择说法,包括“第一个”“第一首“”第一集”。默认仅支持上述三个量词,你可以在词库页面找到【sys.序列号量词】词库的页面,为不同的场景添加更多量词。

Minion


打断

在支持回声消除的设备,用户可以在列表选择的时候打断TTS播报进行进行,例如
user:导航去深圳大学
sys:找到10个深圳(没播报完就被用户打断)
user:第一个
打断词支持“第一个”“第二个”的选择说法,以及选项的关键词

意图自动触发机制

通过语义发起的对话,是用户主动发起的对话,但是有些对话可以由程序主动发起。例如在导航过程中,在快要到达目的地的时候,主动询问用户「为你找到终点附近的五个停车场,请问你要去最近的停车场吗?」
要实现主动发起的对话,就需要本地客户端通过触发事件的方式发起对话;开发者可以在添加意图中创建事件,定制事件触发的输出。目前支持Android系统的自动触发机制。
客户端具体开发详见《Android SDK集成•触发指定意图》