Commit 4c13991d by wildworker

修改为iot-cloud-core

parent cc6fb592
{
"presets": [
["env", {
"targets": {
"node": true
}
}]
],
"plugins": ["transform-decorators-legacy"]
}
node_modules
FROM node:alpine FROM registry.cn-hangzhou.aliyuncs.com/ugen-app/ugen-core:4.2.2
WORKDIR /data WORKDIR /data
COPY ./package.json . #COPY ./package.json .
RUN yarn #RUN yarn add --registry=http://company.u-gen.net:7001
COPY . . COPY . .
CMD ["node","app.js"] CMD ["node","start.js"]
const Provider = require('iot-cloud-core').BASE.Provider;
const public_class = require('./Public');
class TESTProvider extends Provider{
constructor(){
super("ApiSign");
this.setPublicClass(public_class);
}
}
module.exports = TESTProvider;
const PublicFunBase = require('iot-cloud-core').BASE.PublicFunBase;
const replyFunc = require('./replyFunc.js');
class Public extends PublicFunBase{
async reply(data) {
// console.log(data.params);
return {
sourceData: true,
data: replyFunc(data.params)
};
}
}
module.exports = Public;
const path = require('path');
module.exports = { module.exports = {
helpText:{ port: 3000,
"use": "欢迎使用智能锁,我是您的客服机器人小凯,您可以问我“设备配网”、“添加钥匙”、“临时密码”,请告诉我您的需要吧。", provider: require('./Provider'),
"bind": "第一步:请在智能锁上按“*#”键进入管理模式,初始密码为“123456” 第二步:根据语音提示,按“4键进入网络设置”再按“1键连接网络” 第三步:对着天猫精灵说“天猫精灵,找队友”,根据天猫精灵提示进行回复,随后您将听到“设备连接成功”。", needLog: false,
"addKey": "第一步:请打开“天猫精灵”APP进入智能锁操作界面,点击“钥匙管理”按钮,再点击“添加钥匙”按钮 第二步:手机靠近门锁,根据页面设置完成后点击“确定”按钮 第三步:根据门锁语音提示录入钥匙,直到APP页面提示“钥匙添加成功”", componentName: "ai",
"tempKey": "第一步:请打开“天猫精灵”APP进入智能锁操作界面,点击“临时密码”按钮 第二步:选择密码有效时间,并根据提示完成门锁上的操作,APP将随机生成临时密码。第三步:将密码告知访客,访客可在设定有效时间内开门。", customUrl: "ai",
}, communications:[
prefix:{ 'HTTPCOM',
//成功语气词 ]
successParticle: "啦啦啦",
//失败语气词
failParticle: ["呜呜呜","嘤嘤嘤","呀呀呀"],
//称呼
call: "主人",
//自称
selfNamed: "小凯",
successNext: ["已找到您要的使用帮助","找到了您要的内容"],
failNext: ["还不会啦","还在努力学习","请以后教教我"]
}
}; };
...@@ -8,11 +8,11 @@ services: ...@@ -8,11 +8,11 @@ services:
networks: networks:
- ioclubs - ioclubs
expose: expose:
- 8000 - 3000
environment: environment:
VIRTUAL_HOST: pub.ioclubs.com,aligenie.ioclubs.com VIRTUAL_HOST: ali.ioclubs.com
HTTPS_METHOD: nohttps HTTPS_METHOD: nohttps
VIRTUAL_PORT: 8000 VIRTUAL_PORT: 3000
volumes: volumes:
- ./static:/data/static - ./static:/data/static
- ./help.js:/data/help.js - ./help.js:/data/help.js
......
module.exports = {
helpText:{
"use": "欢迎使用智能锁,我是您的客服机器人小凯,您可以问我“设备配网”、“添加钥匙”、“临时密码”,请告诉我您的需要吧。",
"bind": "第一步:请在智能锁上按“*#”键进入管理模式,初始密码为“123456” 第二步:根据语音提示,按“4键进入网络设置”再按“1键连接网络” 第三步:对着天猫精灵说“天猫精灵,找队友”,根据天猫精灵提示进行回复,随后您将听到“设备连接成功”。",
"addKey": "第一步:请打开“天猫精灵”APP进入智能锁操作界面,点击“钥匙管理”按钮,再点击“添加钥匙”按钮 第二步:手机靠近门锁,根据页面设置完成后点击“确定”按钮 第三步:根据门锁语音提示录入钥匙,直到APP页面提示“钥匙添加成功”",
"tempKey": "第一步:请打开“天猫精灵”APP进入智能锁操作界面,点击“临时密码”按钮 第二步:选择密码有效时间,并根据提示完成门锁上的操作,APP将随机生成临时密码。第三步:将密码告知访客,访客可在设定有效时间内开门。",
},
prefix:{
//成功语气词
successParticle: "啦啦啦",
//失败语气词
failParticle: ["呜呜呜","嘤嘤嘤","呀呀呀"],
//称呼
call: "主人",
//自称
selfNamed: "小凯",
successNext: ["已找到您要的使用帮助","找到了您要的内容"],
failNext: ["还不会啦","还在努力学习","请以后教教我"]
}
};
...@@ -6,13 +6,10 @@ ...@@ -6,13 +6,10 @@
"scripts": { "scripts": {
"test": "echo \"Error: no test specified\" && exit 1" "test": "echo \"Error: no test specified\" && exit 1"
}, },
"keywords": [],
"author": "", "author": "",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"koa": "^2.11.0", "babel-plugin-transform-decorators-legacy": "^1.3.5",
"koa-bodyparser": "^4.2.1", "iot-cloud-core": "^4.3.3"
"koa-router": "^8.0.8",
"koa-static-router": "^1.3.0"
} }
} }
需要新建static目录,存放天猫精灵的认证文件 ## 安装依赖
公网环境
yarn --registry=http://company.u-gen.net:7001
## 注意事项
// 导入koa,和koa 1.x不同,在koa2中,我们导入的是一个class,因此用大写的Koa表示: // const helpText = require('./config').helpText;
const Koa = require('koa'); // const prefix = require('./config').prefix;
const Router = require('koa-router'); const { helpText, prefix } = require('./help.js');
const static = require('koa-static-router');
// 创建一个Koa对象表示web app本身:
const app = new Koa();
const router = new Router();
const bodyParser = require('koa-bodyparser');
app.use(static({
dir: './static', //静态资源目录对于相对入口文件index.js的路径
router: 'aligenie' //路由命名
}));
app.use(bodyParser());
const helpText = require('./config').helpText;
const prefix = require('./config').prefix;
/** /**
* 从多个字符集里随机抽取一个字符 * 从多个字符集里随机抽取一个字符
...@@ -37,6 +21,10 @@ const addPrefix = (text)=>{ ...@@ -37,6 +21,10 @@ const addPrefix = (text)=>{
return prefix.successParticle + ' ' + prefix.call + ' ' + prefix.selfNamed + ' ' + randomText(prefix.successNext) + ' ' + text; return prefix.successParticle + ' ' + prefix.call + ' ' + prefix.selfNamed + ' ' + randomText(prefix.successNext) + ' ' + text;
}; };
/**
* 增加失败语气前缀
* @returns {string} 添加语气前缀后的语句
*/
const errorReply = ()=>{ const errorReply = ()=>{
return randomText(prefix.failParticle) + ' ' + prefix.call + ' ' + prefix.selfNamed + ' ' + randomText(prefix.failNext) + ' ' + '您可以说“如何使用智能锁”' return randomText(prefix.failParticle) + ' ' + prefix.call + ' ' + prefix.selfNamed + ' ' + randomText(prefix.failNext) + ' ' + '您可以说“如何使用智能锁”'
}; };
...@@ -48,7 +36,7 @@ const errorReply = ()=>{ ...@@ -48,7 +36,7 @@ const errorReply = ()=>{
* @param msg 播报语句 * @param msg 播报语句
* @returns {{returnCode: string, returnValue: {executeCode: string, reply: *, resultType: *, msgInfo: string}, returnMessage: string, returnErrorSolution: string}} * @returns {{returnCode: string, returnValue: {executeCode: string, reply: *, resultType: *, msgInfo: string}, returnMessage: string, returnErrorSolution: string}}
*/ */
const replyBody = (type,msg)=>{ const replyBody = (type, msg)=>{
return { return {
"returnCode": "0", "returnCode": "0",
"returnErrorSolution": "", "returnErrorSolution": "",
...@@ -68,7 +56,11 @@ const replyBody = (type,msg)=>{ ...@@ -68,7 +56,11 @@ const replyBody = (type,msg)=>{
* @param slotEntities 包含实体 * @param slotEntities 包含实体
* @returns {{returnCode: string, returnValue: {executeCode: string, reply: *, resultType: *, msgInfo: string}, returnMessage: string, returnErrorSolution: string}} * @returns {{returnCode: string, returnValue: {executeCode: string, reply: *, resultType: *, msgInfo: string}, returnMessage: string, returnErrorSolution: string}}
*/ */
const reply = (sessionId,slotEntities)=>{ const replyFunc = (params)=>{
const {sessionId,slotEntities} = params;
if(!sessionId || !slotEntities){
return replyBody('ASK_INF', errorReply())
}
let nowParam, nowValue; let nowParam, nowValue;
for(let slotEntity of slotEntities){ for(let slotEntity of slotEntities){
if(slotEntity.liveTime === 0){ if(slotEntity.liveTime === 0){
...@@ -88,26 +80,5 @@ const reply = (sessionId,slotEntities)=>{ ...@@ -88,26 +80,5 @@ const reply = (sessionId,slotEntities)=>{
} }
}; };
/** module.exports = replyFunc;
* ai语音助手WEBHOOK
*/
router.post('/aiReply', async (ctx) => {
const params = ctx.request.body;
console.log(params);
if(params.utterance.substring(0,2) === '打开'){
ctx.response.body = replyBody('ASK_INF','欢迎使用智能锁,您可以问我“如何使用智能锁”')
}else{
ctx.response.body = reply(params.sessionId,params.slotEntities);
}
});
// 加载路由中间件
//解释:app.use 加载用于处理http請求的middleware(中间件),当一个请求来的时候,会依次被这些 middlewares处理。
app.use(router.routes());
// 在端口3000监听:
app.listen(8000, () => {
console.log('server start at port 8000')
});
// require("babel-register");
require("babel-register")({
ignore: /node_modules\/(?!iot-cloud-publicAPI)/
});
const config = require('./config.js');
const SuperServer = require('iot-cloud-core').SERVER.SuperServer;
new SuperServer(config).start();
const funcStr = "(a,b)=>a+b";
// const func = eval(funcStr);
console.log(eval(funcStr)(2,4));
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment