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开发者社区】
 
附上产品经理给的初期的草图(具体实现和草图有些偏差):
 
 
路漫漫其修远兮,吾将上下而求索!
 
待续。。。

Rokid开发者社区skill之【历史上的今天】之简介+玩法+设计+实现+心得的更多相关文章

  1. Rokid开发者社区skill之【历史上的今天】

    技能名称:历史上的今天 入口词:打开历史上的今天 语音交互:(有些是先写上) { "intents": [ { "intent": "PAUSE_HI ...

  2. sae-v2ex 一个运行在SAE上的类似v2ex的轻型python论坛 - 技术讨论 - 云计算开发者社区 - Powered by Discuz!

    sae-v2ex 一个运行在SAE上的类似v2ex的轻型python论坛 - 技术讨论 - 云计算开发者社区 - Powered by Discuz! sae-v2ex 一个运行在SAE上的类似v2e ...

  3. 为什么开发者热衷在Stack Overflow上查阅API文档?

    摘要:一项新研究跟踪了Android开发者的访问历史,发现开发者多达二分之一的文档是从Stack Overflow上获取到的,而Stack Overflow上的示例也多于官方指南,开发者通过搜索更多时 ...

  4. 国内首个微信小程序开发者社区www.mntuku.cn

    微信小程序开发者社区-微信小程序开发教程-微信小程序最新资讯 - www.mntuku.cn .本站作为专业的微信小程序开发者社区为大家提供:微信小程序开发者交流平台,微信小程序开发教程,微信小程序定 ...

  5. 移动端IM开发者必读(二):史上最全移动弱网络优化方法总结

    1.前言 本文接上篇<移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”>,关于移动网络的主要特性,在上篇中已进行过详细地阐述,本文将针对上篇中提到的特性,结合我们的实践经 ...

  6. go, iris , nuxt, 服务端渲染等技术在helloworld开发者社区中的应用与实践

    大家好,helloworld.net 上线已经有近半年的时间了,转眼过的好快,在这半年的时间里,迭代了近10多个版本,优化了很多的体验,交互上的不足之处,同时也上线了我们的安卓 app, 苹果的因为还 ...

  7. Linux历史上线程的3种实现模型

    一.概述                                                   这里以Linux为例.Linux历史上,最开始使用的线程是LinuxThreads,但Li ...

  8. UWP Windows历史上最漂亮的UWP框架出炉!!!

    UWP Windows历史上最漂亮的UWP框架出炉!!! 本框架基于微软的开源项目WTS开发,并在其基础上增加了FDS(流畅设计元素,高光.亚克力等).多语言系统.沉浸式体验(扩展内容到标题栏) 同时 ...

  9. 未来-IOT-Aliyun:阿里云 IOT - 开发者社区

    ylbtech-未来-IOT-Aliyun:阿里云 IOT - 开发者社区 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 1. https://dev.iot. ...

随机推荐

  1. Java之异常机制(1) - 高效处理异常

    Java开发人员做出的有关架构的最重要的决定之一便是如何使用Java异常模型.Java异常处理成为社区中讨论最多的话题之一.一些人认为Java语 言中的已检查异常(Checked Exceptions ...

  2. maven 将jar包添加到本地仓库

      maven  如何将jar包添加到本地仓库 CreateTime--2018年4月19日12:50:50 Author:Marydon 情景描述:当项目所需的jar包,maven中央仓库中没有该j ...

  3. 〖Windows〗zigbee实验之cygwin编译TestSimpleMac出错的解决方法

    1. 错误代码如下: ... C51 COMPILER V8. - SN: K1CMC-IEYCYC COPYRIGHT KEIL ELEKTRONIK GmbH - *** ERROR C141 I ...

  4. fread与read的差别(文件io补充)

    这里有一个我们常常提出的问题就是fread,read的差别.(当然这两个分别代表了操作文件系统的两套不同的函数,包含open,read, write, seek 等). 一.他们的差别就是一个(rea ...

  5. JDBC实例--工具类升级,使用Apache DBCP连接池重构DBUtility,让连接数据库更有效,更安全

    直接使用JDBC访问数据库时,需要避免以下隐患: 1. 每一次数据操作请求都需要建立数据库连接.打开连接.存取数据和关闭连接等步骤.而建立和打开数据库连接是一件既耗资源又费时的过程,如果频繁发生这种数 ...

  6. 微信小程序裁剪图片成圆形

    代码地址如下:http://www.demodashi.com/demo/14453.html 前言 最近在开发小程序,产品经理提了一个需求,要求微信小程序换头像,用户剪裁图片必须是圆形,也在gith ...

  7. Centos定时执行python脚本

    其实就是linux的定时任务.老记不住参数,这次写下来,省着老百度.本文没有技术含量,请大家不要吐槽. ================================================ ...

  8. Setting up a static IP address in Ubuntu

    sudo gedit /etc/network/interfaces Change the line iface eth0 inet dhcp to iface eth0 inet static an ...

  9. python学习笔记011——内置函数__sizeof__()

    1 描述 __sizeof__() : 打印系统分配空间的大小 2 示例 def fun(): pass print(fun.__sizeof__()) 运行 112

  10. Spring.net(一)----Spring.NET框架简介及模块说明

    简介:    Spring.NET框架包括很多功能,Spring.NET 1.0包括完整的IoC容器和AOP类库.1.1版加入Web.ORM和数据模块.Spring.NET的下载包中并不包含与其它类库 ...