微信小程序实战——智能秘籍“远程知识”来源分享(基于olami的语义理解).
这篇文章的原地址是:http://blog.csdn.net/happycxz/article/details/75432928.
“远程知识”微信小程序所有源代码打包下载:http://download.csdn.net/download/happycxz/9905134
微信小程序智能生活小秘书开发详解
实现了智能生活信息查询的小秘书功能,支持天气、新闻、日历、汇率、笑话、故事、百科、诗歌、邮政编码、区号、菜谱、股票、节目预告等,还支持聊天、24点计数、数学计算、单位换算、购物、搜索等功能。
有三种使用方法:摇动、点击界面按钮和手动输入。
欢迎转载
实现功能
扫码试用(左右皆可)
免费开放语义接口平台olami.ai微信小程序平台JS,CSS
界面展示
基本上扩展了正式案例的目录结构和命名。index.xx是与首页相关的代码,logs.xx是与日志页相关的代码。
比官方目录结构多两个文件:
config.js
因为使用了一些配置,所以最好将其打包。js。
pics/bg.jpg
小程序背景图,在开发环境中加载本地文件作为背景图是有效的,但是在预览体验时效果不佳。网上有人说不支持本地文件,所以这里这张图其实是不用的,只是暂时保存。
开发资源
源码分析
提供了两个公共接口,分别是获取用户微信账号的昵称和位置,以及获取当前地理位置。
const corpusList=require('。/config ')。corpusvar UTIL=require('。/utils/util . js ');App({ onshow : function(){ util . log(' App Show ')},onhide : function(){ util . log(' App Hide ')},onlaunch : function(){ util . log(' App Launch ')this . updateuser location()},updateuser location : function()}
var that = this wx.getLocation({ //type: 'wgs84', // gps原始坐标 type: 'gcj02', //国家标准加密坐标 success: function (res) { that.globalData.latitude = res.latitude that.globalData.longitude = res.longitude that.globalData.speed = res.speed //var accuracy = res.accuracy UTIL.log('REFRESH LOCATION: ' + that.globalData.latitude + ' | ' + that.globalData.longitude + ' , speed: ' + that.globalData.speed) }, fail: function(res) { UTIL.log('REFRESH LOCATION FAILED...') } }) }, getUserInfo:function(cb){ var that = this if(this.globalData.userInfo){ typeof cb == "function" && cb(this.globalData.userInfo) }else{ //调用登录接口 wx.login({ success: function () { wx.getUserInfo({ success: function (res) { that.globalData.userInfo = res.userInfo that.globalData.custId = UTIL.getUserUnique(that.globalData.userInfo); typeof cb == "function" && cb(that.globalData.userInfo) } }) }, fail: function () { UTIL.log('登录WX失败了!') } }) } }, clearUserInfo: function() { var that = this that.globalData.userInfo = null; that.globalData.hasLogin = false; }, globalData:{ userInfo:null, corpus: corpusList, custId: '', latitude: 0.0, longitude: 0.0, speed: 0, }})app.json
配置小程序窗体相关属性:标题名称,背景色,网络超时等。
配置首页面为pages/index/index。
{ "pages": [ "pages/index/index", "pages/logs/logs" ], "window": { "backgroundTextStyle": "black", "navigationBarBackgroundColor": "#F8F8F8", "navigationBarTitleText": "遥知之 -- olami语义支持", "navigationBarTextStyle": "black", "backgroundColor": "#F8F8F8" }, "networkTimeout": { "request": 10000, "connectSocket": 10000, "uploadFile": 10000, "downloadFile": 10000 }}
app.wxss
配置了“遥知之”小程序container全局样式
/**app.wxss**/.container { height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; box-sizing: border-box;}
配置文件:config.js
保存一些配置信息,包括NLI的key和secret,还有小程序中预置的语料集合。
module.exports = { //NLI appkey appkey: `b4118cd178064b45b7c8f1242bcde31f`, //NLI appsecret appsecret: `7908028332a64e47b8336d71ad3ce9ab`, corpus: [ // '闲聊', // '天气', // '诗词', // '单位换算', // '新闻', // '算24点', // '菜谱', // '汇率', // '邮编', // '区号', // '股票', // '日历', // '节目预告', // '笑话', // '故事', // '购物', // '数学运算', // '百科', // '搜索', '你今年多大啦', '上海今天天气如何', '北京的呢', '李白写过什么诗', '我要听李白的静夜思', '背一首将进酒', '一公里等于多少英尺', '我要看体育新闻', '4567算24点', '红烧肉的做法', '1美元能换算多少人民币', '查一下南昌的邮编', '郑州的区号是多少', '中国石油的股价', '今年中秋节是哪一天', '明晚湖南卫视放什么节目', '来个笑话', '讲个故事听听', '我要买电脑', '1加到100等于多少', '黄山有多高', '百度搜一下薛之谦的照片', ]};
utils目录文件:GUID.js, MD5.js, NLI.js, util.js
获取随机GUID:GUID.js
//表示全局唯一标识符 (GUID)。function Guid(g) { var arr = new Array(); //存放32位数值的数组 if (typeof (g) == "string") { //如果构造函数的参数为字符串 InitByString(arr, g); } else { InitByOther(arr); } //返回一个值,该值指示 Guid 的两个实例是否表示同一个值。 this.Equals = function (o) { if (o && o.IsGuid) { return this.ToString() == o.ToString(); } else { return false; } } //Guid对象的标记 this.IsGuid = function () { } //返回 Guid 类的此实例值的 String 表示形式。 this.ToString = function (format) { if (typeof (format) == "string") { if (format == "N" || format == "D" || format == "B" || format == "P") { return ToStringWithFormat(arr, format); } else { return ToStringWithFormat(arr, "D"); } } else { return ToStringWithFormat(arr, "D"); } } //由字符串加载 function InitByString(arr, g) { g = g.replace(/\{|\(|\)|\}|-/g, ""); g = g.toLowerCase(); if (g.length != 32 || g.search(/[^0-9,a-f]/i) != -1) { InitByOther(arr); } else { for (var i = 0; i < g.length; i++) { arr.push(g[i]); }
版权声明:微信小程序实战——智能秘籍“远程知识”来源分享(基于olami的语义理解).是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。