2018/1/17 更新:olami更新了新版sdk,支持了新的接口,所以不再需要自己编译sdk了,相关的改动已经更新到了码云。
最近olami平台做了一次重大更新,增加了对上下文的支持,这里就研究一下如何用新的方式实现之前提到的上下文功能。
简介
这次更新的主要内容是osl语言中增加了一种特殊的grammar:context grammar。根据文档介绍,context grammar是一种特殊的grammar,作用是补充grammar的功能,通常被用来实现上下文。可以看出,要实现上一篇做到的上下文功能不再需要那么繁琐的方式。接下来就可以一步一步实现上下文功能。
编写grammar
首先,和前面例子类似,新建两个语法模块,为了和之前的区分,一个叫weather2,一个叫navi2。分别给他们加上slot和grammar,这样它们就有了查天气和导航的基本功能:
weather2
// time slot类型为datetime,place slot类型为ext,最短2最长10,高级设置中验证类别选为城市和区县
天气1: <time>的天气<{@=query}>
天气2: <place>的天气<{@=query}>
天气3: (<time><place>|<place><time>)的天气<{@=query}>
navi2
// from和to两个slot设置和weather2中的place相同(不是必须相同)
导航1: 导航去<to><{@=navi}>
导航2: (导航从<from>|从<from>导航)(去|到|至)<to><{@=navi}>