Rokid开发者社区skill之【历史上的今天】
技能名称:历史上的今天
入口词:打开历史上的今天
语音交互:(有些是先写上)
- {
- "intents": [
- {
- "intent": "PAUSE_HISTORY_DAY",
- "slots": [],
- "user_says": [
- "暂停",
- "停下"
- ]
- },
- {
- "intent": "EXIT_HISTORY_DAY",
- "slots": [],
- "user_says": [
- "我不想听了",
- "我不想听",
- "我听够了",
- "拜拜",
- "取消"
- ]
- },
- {
- "intent": "HISTORY_DAY",
- "slots": [
- {
- "name": "month",
- "type": "ROKID.NUMBER_ZH"
- },
- {
- "name": "day",
- "type": "ROKID.NUMBER_ZH"
- },
- {
- "name": "oneday",
- "type": "ROKID.DAY_ZH"
- }
- ],
- "user_says": [
- "我要了解$month月$day号",
- "历史上的$month月$day日",
- "我想听$month月$day号",
- "我想听$month月$day日",
- "我想了解$oneday",
- "我要了解$month月$day日",
- "$month月$day日",
- "$oneday",
- "我要了解$oneday",
- "历史上的$month月$day号",
- "$month月$day号"
- ]
- },
- {
- "intent": "RESUME_HISTORY_DAY",
- "slots": [],
- "user_says": [
- "继续播放",
- "继续"
- ]
- }
- ]
- }
配置采用JS Engine:--增加暂停,继续播放功能
- exports.handler = function(event, context, callback) {
- var rokid = Rokid.handler(event, context,callback);
- rokid.registerHandlers(handlers);
- rokid.execute();
- };
- dictText = {'一':'','二':'','三':'','四':'','五':'','六':'','七':'','八':'','九':'','十':'','十一':'','十二':'','十三':'','十四':'','十五':'','十六':'','十七':'','十八':'','十九':'','二十':'','二十一':'','二十二':'','二十三':'','二十四':'','二十五':'','二十六':'','二十七':'','二十八':'','二十九':'','三十':'','三十一':''};
- onedaydictText = {'今天':,'明天':,'后天':,'大后天':,'大大后天':,'大大大后天':,'昨天':-,'前天':-,'大前天':-,'大大前天':-,'大大大前天':-};
- //如果是6月,返回06
- function formatMonth(monthori){
- if (!isNaN(monthori)) {
- if (parseInt(monthori) < ) {
- monthurl = '' + monthori;
- } else {
- monthurl = monthori;
- }
- } else {
- monthurl = dictText[monthori];
- }
- return monthurl;
- }
- //如果是8号,返回08
- function formatDay(dayori){
- if (!isNaN(dayori)) {
- if (parseInt(dayori) < ) {
- dayurl = '' + dayori;
- } else {
- dayurl = dayori;
- }
- } else {
- dayurl = dictText[dayori];
- }
- return dayurl;
- }
- var handlers = {
- "ROKID.INTENT.WELCOME":function(){
- try{
- this.emit(":tts",{ tts: "欢迎使用历史上的今天这个技能!你可以对我说想了解几月几号。" });
- this.callback(null);
- }catch(e){
- this.callback(e);
- }
- },
- "PAUSE_HISTORY_DAY":function(){
- try{
- this.emit(":tts",{ tts: "",action:"PAUSE" });
- this.callback(null);
- }catch(e){
- this.callback(e);
- }
- },
- "RESUME_HISTORY_DAY":function(){
- try{
- this.emit(":tts",{ tts: "",action:"RESUME" });
- this.callback(null);
- }catch(e){
- this.callback(e);
- }
- },
- "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);
- }
- },
- "EXIT_HISTORY_DAY":function(){
- try{
- this.emit(":tts",{ tts: "好的,已经退出历史上的今天这个技能,再见!如果需要,您可以直接对我说打开历史上的今天。", action:"STOP" });
- this.callback(null);
- }catch(e){
- this.callback(e);
- }
- }
- };
针对上一段的JSEngine2.0实现(主要是数据获取部分的改动,如下):
更新于2017-10-11日下午
- exports.handler = function(event, context, callback) {
- var rokid = Rokid.handler(event, context,callback);
- rokid.registerHandlers(handlers);
- rokid.execute();
- };
- dictText = {'一':'01','二':'02','三':'03','四':'04','五':'05','六':'06','七':'07','八':'08','九':'09','十':'10','十一':'11','十二':'12','十三':'13','十四':'14','十五':'15','十六':'16','十七':'17','十八':'18','十九':'19','二十':'20','二十一':'21','二十二':'22','二十三':'23','二十四':'24','二十五':'25','二十六':'26','二十七':'27','二十八':'28','二十九':'29','三十':'30','三十一':'31'};
- onedaydictText = {'今天':0,'明天':1,'后天':2,'大后天':3,'大大后天':4,'大大大后天':5,'昨天':-1,'前天':-2,'大前天':-3,'大大前天':-4,'大大大前天':-5};
- //如果是6月,返回06
- function formatMonth(monthori){
- if (!isNaN(monthori)) {
- if (parseInt(monthori) < 10) {
- monthurl = '0' + monthori;
- } else {
- monthurl = monthori;
- }
- } else {
- monthurl = dictText[monthori];
- }
- return monthurl;
- }
- //如果是8号,返回08
- function formatDay(dayori){
- if (!isNaN(dayori)) {
- if (parseInt(dayori) < 10) {
- dayurl = '0' + dayori;
- } else {
- dayurl = dayori;
- }
- } else {
- dayurl = dictText[dayori];
- }
- return dayurl;
- }
- var handlers = {
- "ROKID.INTENT.WELCOME":function(){
- try{
- this.emit(":tts",{ tts: "欢迎使用历史上的今天这个技能!你可以对我说想了解几月几号。" });
- this.callback(null);
- }catch(e){
- this.callback(e);
- }
- },
- "PAUSE_HISTORY_DAY":function(){
- try{
- this.emit(":tts",{ tts: "",action:"PAUSE" });
- this.callback(null);
- }catch(e){
- this.callback(e);
- }
- },
- "RESUME_HISTORY_DAY":function(){
- try{
- this.emit(":tts",{ tts: "",action:"RESUME" });
- this.callback(null);
- }catch(e){
- this.callback(e);
- }
- },
- "HISTORY_DAY":function(){
- try{
- var oneday = Rokid.param.request.content.slots.oneday;
- var monthurl = '';
- var dayurl = '';
- if (oneday){
- var dd = new Date();
- dd.setDate(dd.getDate() + onedaydictText[oneday]);
- monthori = dd.getMonth()+1;
- dayori = dd.getDate();
- monthurl = formatMonth(monthori);
- dayurl = formatDay(dayori);
- } else{
var monthori = JSON.parse(Rokid.param.request.content.slots.month).text;
- monthurl = formatMonth(monthori);
- dayurl = formatDay(dayori);
- }
- // result = Rokid.sync_request('GET','https://baike.baidu.com/cms/home/eventsOnHistory/' + monthurl + '.json');
- // result = Rokid.resHandler(result);
- Rokid.request({
- url: 'https://baike.baidu.com/cms/home/eventsOnHistory/' + monthurl + '.json',
- method: "GET",
- headers: {
- 'User-Agent': 'request'
- }
- }, (err, resssssss, body) => {
- if(err) {
- this.emit(":error", err);
- }
- var result = JSON.parse(body);
- var hdori = result[monthurl][monthurl+dayurl];
- var hdorilen = hdori.length;
- var res = '好的,为您播报' + monthori + '月' + dayori + '号' + '的历史。';
- for (var index = hdorilen-1; index >= 0; index --){
- var yearori = hdori[index].year;
- var yearstr = '';
- if (parseInt(yearori) >= 0) {
- 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);
- }
- },
- "EXIT_HISTORY_DAY":function(){
- try{
- this.emit(":tts",{ tts: "好的,已经退出历史上的今天这个技能,再见!如果需要,您可以直接对我说打开历史上的今天。", action:"STOP" });
- this.callback(null);
- }catch(e){
- this.callback(e);
- }
- }
- };
集成测试:
输入语句:历史上的6月8号(或者历史上的六月八号)
- 服务请求:
{- "context": {
- "application": {
- "applicationId": "RE85B257695B46C1A9AC5BDF2EAF0DC3"
- },
- "device": {
- "basic": {
- "locale": "zh-cn",
- "timestamp": 0,
- "vendor": "F934FCE346C64393BEDBF8ECD9672446"
- },
- "location": {},
- "media": {}
- }
- },
- "request": {
- "content": {
- "applicationId": "RE85B257695B46C1A9AC5BDF2EAF0DC3",
- "intent": "history_day",
- "slots": {
- "day": "8",
- "month": "6"
- }
- },
- "reqId": "C92AF2274A634B11B70AB291A324AA0D",
- "reqType": "INTENT"
- },
- "session": {
- "attributes": {},
- "newSession": false
- },
- "version": "2.0.0"
- }
- 服务返回:
{- "appId": "RE85B257695B46C1A9AC5BDF2EAF0DC3",
- "response": {
- "action": {
- "form": "cut",
- "shouldEndSession": true,
- "type": "NORMAL",
- "version": "2.0.0",
- "voice": {
- "behaviour": "APPEND",
- "item": {
- "tts": "好的,为您播报6月8号的历史。2012年上海合作组织北京峰会闭幕。2009年加蓬前总统哈吉奥马尔·邦戈·翁丁巴去世。1995年中国研制出高功率氦氖激光器。1955年互联网之父蒂姆·伯纳斯·李出生。1921年印尼前总统苏哈托诞生。1916年DNA双螺旋结构的发现者之一克里克出生。1876年法国女作家乔治·桑逝世。1867年普鲁士军队吞并荷尔斯泰因公国。1867年美国建筑师弗兰克·劳埃德·赖特诞生。1845年美国第七任总统安德鲁·杰克逊逝世。1824年加拿大批准第一个专利。1810年德国作曲家舒曼诞生。1809年英裔美国政治活动家托马斯·潘恩逝世。1529年中世纪的一次重大宗教战争卡佩尔战争爆发。632年伊斯兰教创立者、政治家、宗教领袖穆罕默德逝世。"
- },
- "needEventCallback": false
- }
- },
- "resType": "INTENT",
- "respId": "C92AF2274A634B11B70AB291A324AA0D"
- },
- "session": {
- "attributes": {}
- },
- "startWithActiveWord": false,
- "version": "2.0.0"
- }
输入语句:我想了解今天
- 服务请求:
{- "context": {
- "application": {
- "applicationId": "RBE99BF67CD644C4BA4E6561833A2ED1"
- },
- "device": {
- "basic": {
- "locale": "zh-cn",
- "timestamp": ,
- "vendor": "7F9EB83B204C42DFB3ABEBA88DAA6237"
- },
- "location": {},
- "media": {}
- },
- "user": {}
- },
- "request": {
- "content": {
- "applicationId": "RBE99BF67CD644C4BA4E6561833A2ED1",
- "intent": "HISTORY_DAY",
- "slots": {
- "oneday": "今天"
- }
- },
- "reqId": "076712871B92414E861831E109206FD5",
- "reqType": "INTENT"
- },
- "session": {
- "attributes": {},
- "newSession": false,
- "sessionId": "F087A392781D409CA8EFBB17CD6FB1ED"
- },
- "version": "2.0.0"
- }
- 服务返回:
{- "appId": "RBE99BF67CD644C4BA4E6561833A2ED1",
- "response": {
- "action": {
- "form": "cut",
- "shouldEndSession": true,
- "type": "NORMAL",
- "version": "2.0.0",
- "voice": {
- "action": "PLAY",
- "item": {
- "tts": "好的,为您播报7月3号的历史。2012年美国著名演员安迪·格里菲斯去世。2005年西班牙正式通过同性婚姻相关法案。1986年美国自由神像矗立纽约100周年。1980年开国上将邓华去世。1969年英国滚石乐队的创始团员布莱恩·琼斯去世。1962年美国电影演员汤姆·克鲁斯出生。1904年同治、光绪皇帝的老师翁同龢去世。1898年有机化学家黄鸣龙去世。1898年京师大学堂成立。1883年奥地利作家卡夫卡出生。1876年中国第一条铁路淞沪铁路正式通车运营。1844年大海雀灭绝。1518年中国明代医学家兼药物学家李时珍出生。1423年法国瓦卢瓦王朝国王路易十一逝世。1062年中国北宋官员包拯去世。7月3号的历史已为您播报完毕,请问您还想了解几月几号的历史呢?"
- }
- }
- },
- "resType": "INTENT",
- "respId": "076712871B92414E861831E109206FD5"
- },
- "session": {},
- "startWithActiveWord": false,
- "version": "2.0.0"
- }
PS:强烈感谢大俊俊提供的JS Engine和各种技术支持,大俊俊贡献了百分之八十。
至此大功告成。。。。
还有一些交互方面的事情需要考虑。。。
此技能Rokid开发者社区skill之【历史上的今天】之简介+玩法+设计+实现+心得,参考http://www.cnblogs.com/zhzhang/p/7136583.html
待续
Rokid开发者社区skill之【历史上的今天】的更多相关文章
- Rokid开发者社区skill之【历史上的今天】之简介+玩法+设计+实现+心得
Skill简介: 来源:好奇心.探索欲.趣味性: 资源:百度百科: 方式:实时获取,自动更新: 技能玩法: 想要进入历史上的今天这个skill,则对若琪说:若琪,打开历史上的今天. 想要了解某天的历史 ...
- sae-v2ex 一个运行在SAE上的类似v2ex的轻型python论坛 - 技术讨论 - 云计算开发者社区 - Powered by Discuz!
sae-v2ex 一个运行在SAE上的类似v2ex的轻型python论坛 - 技术讨论 - 云计算开发者社区 - Powered by Discuz! sae-v2ex 一个运行在SAE上的类似v2e ...
- 为什么开发者热衷在Stack Overflow上查阅API文档?
摘要:一项新研究跟踪了Android开发者的访问历史,发现开发者多达二分之一的文档是从Stack Overflow上获取到的,而Stack Overflow上的示例也多于官方指南,开发者通过搜索更多时 ...
- 国内首个微信小程序开发者社区www.mntuku.cn
微信小程序开发者社区-微信小程序开发教程-微信小程序最新资讯 - www.mntuku.cn .本站作为专业的微信小程序开发者社区为大家提供:微信小程序开发者交流平台,微信小程序开发教程,微信小程序定 ...
- 移动端IM开发者必读(二):史上最全移动弱网络优化方法总结
1.前言 本文接上篇<移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”>,关于移动网络的主要特性,在上篇中已进行过详细地阐述,本文将针对上篇中提到的特性,结合我们的实践经 ...
- go, iris , nuxt, 服务端渲染等技术在helloworld开发者社区中的应用与实践
大家好,helloworld.net 上线已经有近半年的时间了,转眼过的好快,在这半年的时间里,迭代了近10多个版本,优化了很多的体验,交互上的不足之处,同时也上线了我们的安卓 app, 苹果的因为还 ...
- Linux历史上线程的3种实现模型
一.概述 这里以Linux为例.Linux历史上,最开始使用的线程是LinuxThreads,但Li ...
- UWP Windows历史上最漂亮的UWP框架出炉!!!
UWP Windows历史上最漂亮的UWP框架出炉!!! 本框架基于微软的开源项目WTS开发,并在其基础上增加了FDS(流畅设计元素,高光.亚克力等).多语言系统.沉浸式体验(扩展内容到标题栏) 同时 ...
- 未来-IOT-Aliyun:阿里云 IOT - 开发者社区
ylbtech-未来-IOT-Aliyun:阿里云 IOT - 开发者社区 1.返回顶部 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 1. https://dev.iot. ...
随机推荐
- gulp 常用插件汇总
2017-07-26更新:图片压缩插件使用gulp-smushit,gulp-smushit压缩率比较大,gulp-imagemin 图片压缩插件压缩率不明显. 见下图压缩率: 1.gulp安装 参照 ...
- eclipse tomcat路径更改后启动报错
eclipse tomcat路径更改后启动报错 CreateTime--2018年5月3日14:48:22 Author:Marydon 1.情景还原 2.原因 本地的tomcat路径修改后,ec ...
- spring mvc json的输入输出
输入 前台代码: var cfg = { type: 'POST', data: JSON.stringify({userName:'winzip',password:'password',mobil ...
- 在JQuery中获取URL中的参数值
添加一个js文件,代码如下 // * jQuery url get parameters function [获取URL的GET参数值] // *character_set UTF-8 // * au ...
- iOS-仿支付宝刮刮乐效果
概述 仿支付宝刮刮乐效果, 可以按照自己需求更改展示刮出来的效果的view(即刮开后刮刮乐效果展示) 详细 代码下载:http://www.demodashi.com/demo/10673.html ...
- 小白心目中的Java抽象类(abstract class)
在java开发中,我们有时会定义了一个父类,这个父类只有对方法的描述,但却没有在父类中写出对方法的实现,这种被定义的方法称为抽象方法.那么理所当然,含有抽象方法的类就称为抽象类.用关键字abstrac ...
- js createElement appendChild createTextNode用法
xml不支持innerHTML 1 <p id="bj">北京</p> <script type="text/javascript" ...
- HDUOJ--8球胜负
8球胜负 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- HTML:减少页面加载时间的方法
1. 重复的HTTP请求数量应尽量减少 (1)减少调用其他页面.文件的数量. (2)在使用css格式时,常会采用background载入图形文件,而每个background的图像都会产生1次HTTP ...
- Android开发之探秘蓝牙隐藏API
这次讲得深入些,探讨下蓝牙方面的隐藏API.用过Android系统设置(Setting)的人都知道蓝牙搜索之后可以建立配对和解除配对,但是这两项功能的函数没有在SDK中给出,那么如何去使用这两项功能呢 ...