Skill简介:
  来源:好奇心、探索欲、趣味性;
  资源:百度百科;
  方式:实时获取,自动更新;
技能玩法:
  想要进入历史上的今天这个skill,则对若琪说:若琪,打开历史上的今天。
  想要了解某天的历史,则对若琪说:若琪,我想了解6月8号,若琪便会回复历史上6月8号的历史。
  由于每天的历史相对较长,如果过程中需要暂停,则对若琪说:若琪,暂停。
  如果想要继续播放,则对若琪说:若琪,继续播放。
  如果想退出这个技能,则对若琪说:若琪,我不想听了。
语音交互的设计:
  主要有以下几个意图(intent):历史上的今天HISTORY_DAY、暂停PAUSE_HISTORY_DAY、继续播放RESUME_HISTORY_DAY、退出EXIT_HISTORY_DAY;
  以历史上的今天这个意图为例:
    需要设计的为:几月、几号、今天或明天等;
    几月和几号,对应预定义词表类型ROKID.NUMBER_ZH;
      如果想识别用户对话“我想了解6月8号”中的“6”和“8”,则需要对slots作设计:
              {
"name": "month",
"type": "ROKID.NUMBER_ZH"
},
{
"name": "day",
"type": "ROKID.NUMBER_ZH"
}
    今天明天,对应预定义词表中的ROKID.DAY_ZH    
      如果想识别用户对话“我想了解今天”中的“今天”,则需要对slots做设计:
          {
"name": "oneday",
"type": "ROKID.DAY_ZH"
}
JS Engine的使用:
  简介:使用JS脚本更快速的开发技能,同事可以避免不必要的复杂性。
  优势有二:
    其一,无需服务器,开发者不需要服务器去提供服务;
    其二,无需https服务,开发者不需要自己搭建复杂的https服务。
  我们通过Rokid对象封装了供大家使用的工具(开放平台中模板已经自动写好):
    首先,通过Rokid.handler(event, context, callback)来使用Rokid-sdk。
    接下来,我们需要处理我们技能意图(intent),通过rokid.registerHandlers()以简单来注册您所需的技能意图。
    最后通过rokid.execute()触发技能意图。
    需要开发者编写的核心代码,是大家所要写的意图技能处理函数位于handlers中。
  关于JS Engine的详细说明参考Rokid官方文档中的Rokid JS Engine使用指南
  针对HISTORY_DAY这个intent,阐述一下使用方法:
  语音交互中设置了HISTORY_DAY这个intent,此处针对这个intent做一下数据获取的实现。
  因为JS Engine模板中已经默认自动写好了执行架构,进行了handlers的注册,故我们只需在handlers中编写实现函数即可。
编写"HISTORY_DAY":function(){
try{
var res = "xxx"; // 需要若琪读出的文字内容
this.emit(":tts",{ tts: res }); // 正常完成意图函数时callback
this.callback(null);
}catch(e){
this.callback(e); // 报错时callback错误
}
}
  需实现
    代码详情如下:
   "HISTORY_DAY":function(){
try{
var oneday = Rokid.param.request.content.slots.oneday;
var monthori = Rokid.param.request.content.slots.month;
var dayori = Rokid.param.request.content.slots.day;
var monthurl = '';
var dayurl = '';
if (oneday){
var dd = new Date();
dd.setDate(dd.getDate() + onedaydictText[oneday]);
monthori = dd.getMonth()+;
dayori = dd.getDate(); monthurl = formatMonth(monthori);
dayurl = formatDay(dayori);
} else{
monthurl = formatMonth(monthori);
dayurl = formatDay(dayori);
} result = Rokid.sync_request('GET','https://baike.baidu.com/cms/home/eventsOnHistory/' + monthurl + '.json');
result = Rokid.resHandler(result); var hdori = result[monthurl][monthurl+dayurl];
var hdorilen = hdori.length;
var res = '好的,为您播报' + monthori + '月' + dayori + '号' + '的历史。';
for (var index = hdorilen-; index >= ; index --){
var yearori = hdori[index].year;
var yearstr = '';
if (parseInt(yearori) >= ) {
yearstr = yearori + '年';
}else{
yearstr = '公元前' + Math.abs(yearori) + '年';
}
var title = hdori[index].title.replace(/<.*?>/ig,"").replace("\n","").replace("。","");
res += yearstr + title + '。';
}
res += monthori + '月' + dayori + '号' + '的历史已为您播报完毕,请问您还想了解几月几号的历史呢?';
this.emit(":tts",{ tts: res });
this.callback(null);
}catch(e){
this.callback(e);
}
}
心得体会:
  初期需要对skill技能开发有一些基大概的认识,比如intent、slots等;
  通过设计较简单的语音交互,首先实现JS Engine核心代码,再反过来完善语音交互;
  针对一些具体的实现,可参考Rokid开放平台官方文档;
 
更多详情和玩法,请移步【Rokid开发者社区】
 
附上产品经理给的初期的草图(具体实现和草图有些偏差):
 
 
路漫漫其修远兮,吾将上下而求索!
 
待续。。。

最新文章

  1. MVC View中获取action、controller、area名称
  2. Spring4读书笔记(2)- 使用场景
  3. npm 安装本地包
  4. 图解NodeJS【基于事件、回调的单线程高性能服务器】原理
  5. 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3
  6. 01-08-01【Nhibernate (版本3.3.1.4000) 出入江湖】NHibernate中的一级缓存
  7. HDU5479 Colmerauer 单调栈+暴力优化
  8. 基于u-boot源码的简单shell软件实现
  9. 你好,C++(18) 到底要不要买这个西瓜?4.1.6 操作符之间的优先顺序
  10. BufferedInputStream实现原理分析
  11. Qt容器类的对象模型及应用(线性结构篇)(好多图,比较清楚)
  12. codefroce D. Powerful array[初识块状数组]
  13. Win10《芒果TV》商店版更新v3.4.0:率先支持创意者画中画,工作娱乐两不误
  14. Tomcat常用操作
  15. Java 实现32位MD5加密
  16. Android进阶 | 摆脱斗图 | 行业交流 | 深度学习 | 付费
  17. Spring Cloud Alibaba正式入驻Spring Cloud官方孵化器
  18. How to Configure Email Notification in Jenkins
  19. 最新更新的Windows 10切换蓝牙连接开关会导致蓝屏死机
  20. Windows不能在本地计算机启动MongoDB,错误代码 100

热门文章

  1. 微信小程序+PHP:动态显示项目倒计时(格式:4天7小时58分钟39秒)
  2. 查看sqlserver的端口号[转]
  3. 【jQuery】网上看到一个不错的登陆界面
  4. 字符串 - KMP模式匹配
  5. Facade - 外观模式
  6. 红黑树 - C++代码实现
  7. Concurrency Managed Workqueue(四)workqueue如何处理work
  8. 在Debug模式下中断, 在Release模式下跳出当前函数的断言
  9. debian更新源时找不到公钥的解决办法
  10. 修改oracle数据库的编码为utf-8