a simple chat robert

在微信公众号管理平台,开发 - 基本配置,复制开发者 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;

你可能感兴趣的:(a simple chat robert)