首先,感谢腾讯云赠送本人一台云服务器。
有公网IP的云服务器 系统版本:CentOS 7.6
登录自己的服务器,运行下面的命令,等待安装。
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
若出现下图的结果,代表宝塔Linux面板安装成功。
express-generator
npm i express-generator -g
weixin
的工程express -e weixin
cd weixin
npm install --registry=https://registry.npm.taobao.org
npm start
我这里分享一个免费的机器人API:点我获取~
axios xml2js
模块npm i axios xml2js
/routers/index.js
中的代码const express = require('express');
const router = express.Router();
const axios = require('axios');
router.get("/", function (req, res, next) {
const token = "填写微信公众平台后台的token";
//1.获取微信服务器Get请求的参数 signature、timestamp、nonce、echostr
let signature = req.query.signature, //微信加密签名
timestamp = req.query.timestamp, //时间戳
nonce = req.query.nonce, //随机数
echostr = req.query.echostr; //随机字符串
//2.将token、timestamp、nonce三个参数进行字典序排序
let array = [token, timestamp, nonce];
array.sort();
//3.将三个参数字符串拼接成一个字符串进行sha1加密
let tempStr = array.join("");
let shaObj = new jsSHA("SHA-1", "TEXT");
shaObj.update(tempStr);
let scyptoString = shaObj.getHash("HEX");
//4.开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if (signature === scyptoString) {
console.log("验证成功");
res.send(echostr);
} else {
console.log("验证失败");
res.send("验证失败");
}
});
// 响应用户发送来的消息
const xml2js = require('xml2js');
router.post('/', (req, res) => {
let xml = ''
req.on('data', (chunk) => {
xml += chunk
})
req.on('end', () => {
//将接受到的xml数据转化为json
xml2js.parseString(xml, {explicitArray: false}, function (err, json) {
const backTime = new Date().getTime(); //创建发送时间,整数
if (json.xml.MsgType === 'event') { //消息为事件类型
if (json.xml.EventKey === 'clickEvent') {
res.send(getXml(json, backTime, '你戳我干啥...')) //回复用户的消息
}
} else if (json.xml.MsgType === 'text') { //消息为文字类型
const key = "填写机器人APIKEY"
const url = "http://api.tianapi.com/robot/index?key=" + key + "&question=" + encodeURI(json.xml.Content);
axios.get(url)
.then(function (response) {
res.send(getXml(json, backTime, response.data.newslist[0].reply)) //回复用户的消息
});
}
});
})
function getXml(json, backTime, word) {
return `<xml>
<ToUserName><![CDATA[${json.xml.FromUserName}]]></ToUserName>
<FromUserName><![CDATA[${json.xml.ToUserName}]]></FromUserName>
<CreateTime>${backTime}</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[${word}]]></Content>
</xml>`;
}
})
module.exports = router;
注意:你需要将上述代码中的token和机器的APIKEY替换成自己的。
安装Nginx
安装Node.js
注意:registry源选择淘宝源
,版本最好选稳定版。
注意:此处的token与代码中的token应该保持一致。消息加密方式选兼容模式
。填写好相关配置后记得保存,别忘了还要点一下启动!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。