在微信公众号管理平台,开发 - 基本配置,复制开发者 ID(AppID),设置为 config 的 appid 的值
在微信公众号管理平台,开发 - 基本配置 - 修改配置,设置 token,设置为 config 的 token 的值
在微信公众号管理平台,开发 - 基本配置 - 修改配置,设置 encodingAESKey,设置为 config 的 encodingAESKey 的值
解压 ngrok, 进入目录,执行命令:ngrok.exe http 4000
隧道服务,生成公网地址,指向本地地址
把 https 公网地址填入 URL 处
app.js
const EXPRESS = require('express');
const WECHAT = require('wechat');
const MYSQL = require('mysql');
let app = new EXPRESS();
app.use(EXPRESS.query());
let config = {
appid: 'wxd29115390c39d130',
token: 'weixin',
encodingAESKey: 'cYle8mum9YiDwC1C3y1QcJDW24Vc4Z9OWNVSm3nuEyV',
checkSignature: true
};
let pool = MYSQL.createPool({
user: 'root'
});
app.use('/', WECHAT(config, (req, res) => {
let message = req.weixin;
let content = message.Content;
console.log(content);
//core sql
let sql = `SELECT * FROM db.chat WHERE ? LIKE concat('%',question,'%')`;
pool.query(sql, [content], (err, results) => {
if (results.length === 1) {
res.reply(results[0].answer);
} else {
res.reply('你在说什么?我听不懂。。。');
}
});
}));
app.listen(4000);// E_ADDR_IN_USE
在微信公众号管理平台,开发 - 基本配置 - 修改配置,提交
启用开发模式
查看端口号:netstat -ano | findstr 4000
终止进程:taskkill /f /pid <进程 ID>
服务器返回响应消息
res.replay({});
聊天机器人
在 server-official-account/ 下,npm i -S mysql
DROP DATABASE IF EXISTS db;
CREATE DATABASE db CHARACTER SET utf8;
DROP TABLE IF EXISTS db.chat;
CREATE TABLE db.chat(
id INT AUTO_INCREMENT PRIMARY KEY COMMENT 'id PK',
question TEXT NOT NULL COMMENT '问题',
answer TEXT NOT NULL COMMENT '回答'
)COMMENT '聊天表';
INSERT INTO db.chat VALUE(NULL, '你好', '您好!');
INSERT INTO db.chat VALUE(NULL, '你是谁?', '我是聊天机器人');
INSERT INTO db.chat VALUE(NULL, '再见', '再见!');
SELECT *
FROM db.chat;