上下文语境

多轮对话可以分为两种:一种是填槽型的多轮,这种对话都是以向用户收集更多的信息来完成一项具体的任务,比如:打车、订票等。对用户的询问发起,都是由技能来触发,按照事先设计好的顺序来询问用户。这种也称为"线性"多轮,按步骤,一步步的引导用户回答问题,进而完成意图和槽位的识别,对话的主导权在技能。

还一种是自由对话的多轮,也可以称为"非线性"多轮。这种对话的发起由用户来主导,比如:查天气、听音乐。以查询天气为例,用户提供一些查询的属性,比如用户说“查询北京明天的天气”,技能需要根据北京和明天来查询天气;然后,用户还可能说“那后天的呢”,这句话是在一个上文的基础上发出的,因此隐含的是说查询北京后天的天气,单独说"后天呢"没有任何意义。DuerOS支持这种由用户发起的多轮。

上下文(context),指用户说话的语境。这里语境是指综合对话中上下文关键信息(如槽位值),是关键信息的传递。语境就像一个连接点,把上文(前一个意图)和下文(后一个意图)连接起来。 任何一个意图都是一种语境,DuerOS通过定义这样的"语境",并且将"语境"作为另外一个意图的"输入语境"的方式完成"非线性"多轮技能的开发。

输出语境

任何自定义意图,都可以定义一个或者多个"输出语境"。不同输出语境标识名不同,并且还可以规定每个语境的生效轮数(生效轮数功能即将面世,敬请期待)。

输入语境

每个意图都可以引用当前技能里定义的任意一个"输出语境",作为本意图的"输入语境"。如果意图订阅了“输入语境”,那么这个意图的生效必须满足上文语境与订阅的相符,如果不相符,即使用户的请求与该意图的用户表达一致也不会触发。 意图可以订阅多个输入语境,这些语境是或的关系,只要满足其中一个语境即可。

继承槽位

如果意图有输入语境,在配置完输入语境后,需要配置输入语境中意图的槽位信息。这种槽位称为继承槽位。在满足当前意图的情况下,DuerOS可以将输入语境的一些槽位与当前意图的槽位一起发送给技能。

继承槽位配置时,需要先新增一个槽位,然后在"值"这列点击,选中输入语境的名字,二级菜单选择需要的槽位。然后在槽位类型中选择对应的槽位类型。另外,注意槽位的名字请不要与本意图的槽位名重复。