企业微信 AI 机器人
基于企业微信自建应用搭建的零成本 AI 机器人,支持定时推送和交互式卡片消息。
项目简介
这是一个基于企业微信自建应用(非 Webhook 群机器人)搭建的智能助手,支持两类部署模式:
- Cloudflare Workers — 零成本 Serverless 部署,利用 Cron Trigger 定时推送 + KV 存储反馈数据
- Node.js + PM2 — 自有服务器部署,Nginx 反代 + SQLite 本地数据库
相比 Webhook 群机器人,自建应用可以收发交互式卡片消息(带按钮),支持用户点赞 / 踩 / 刷新,并在后台记录反馈统计。
架构
模式一:Cloudflare Workers
企业微信 ←→ Cloudflare Workers ←→ KV 存储
↑
Cron Trigger (09:00)模式二:自有服务器
企业微信 ←→ Nginx (HTTPS) ←→ Node.js ←→ SQLite
↑
定时任务 (09:00)技术栈
| 技术 | 说明 |
|---|---|
| TypeScript | 开发语言 |
| Cloudflare Workers | Serverless 运行环境(模式一) |
| KV Storage | 存储 access_token 缓存 + 用户反馈 |
| Cron Trigger | 定时任务触发器 |
| Node.js + PM2 | 自有服务器运行环境(模式二) |
| Nginx | HTTPS 反代 |
| SQLite(sql.js) | 纯 JS 实现的本地数据库 |
| dotenv | 环境变量管理 |
功能
- 📤 定时推送:每天 09:00 自动通过 Cron Trigger(或 PM2 定时任务)推送消息卡片
- 🔘 按钮交互:支持
template_card交互按钮(点赞 / 踩 / 刷新),用户点击后回调处理 - 📊 反馈统计:记录用户互动数据,支持查询统计信息
- 🔐 安全验证:企业微信标准 SHA1 + AES-256-CBC 回调签名验证
- 🧠 AI 能力:集成 AI 服务生成智能回复内容
API 路由
| 方法 | 路径 | 说明 |
|---|---|---|
POST | /test | 发送测试消息 |
POST | /push | 手动触发推送 |
GET | /stats | 查看反馈统计 |
GET | /callback | 微信回调 URL 验证 |
POST | /callback | 微信回调事件处理 |
GET | / | 健康检查 |
项目结构
qywx-bot/
├── src/
│ ├── index.ts # Cloudflare Workers 入口
│ ├── server.ts # Node.js 入口
│ ├── config.ts # 配置常量
│ ├── routes/
│ │ ├── callback.ts # 企业微信回调处理
│ │ ├── push.ts # 推送路由
│ │ └── admin.ts # 管理接口
│ ├── services/
│ │ ├── wecom.ts # 企业微信 API 封装
│ │ ├── card.ts # 消息卡片构建
│ │ ├── fetcher.ts # 数据源获取
│ │ └── ai.ts # AI 服务集成
│ ├── storage/
│ │ ├── kv.ts # KV 存储(CF Workers)
│ │ └── sqlite.ts # SQLite 存储(自部署)
│ └── utils/
│ └── env.ts # 环境变量
├── ecosystem.config.js # PM2 配置
├── nginx.conf # Nginx 配置
├── wrangler.toml # Cloudflare Workers 配置
├── .env.example # 环境变量模板
└── scripts/
├── setup.sh # 服务器安装脚本
└── deploy.sh # 部署脚本部署步骤(自有服务器)
1. 环境安装
bash
# 安装 Node.js + Nginx + PM2 + SQLite
curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo yum install -y nodejs nginx sqlite sqlite-devel
sudo npm install -g pm22. 配置并启动
bash
cd /opt/qywx-bot
cp .env.example .env # 填写企业微信参数
npm install --production
npm run build
# 配置 Nginx + HTTPS
sudo cp nginx.conf /etc/nginx/conf.d/qywx-bot.conf
sudo certbot --nginx -d your-domain.com
sudo nginx -s reload
# 启动服务
pm2 start ecosystem.config.js
pm2 save
pm2 startup3. 企业微信后台
进入 应用管理 → 你的应用 → 接收消息 → 设置 API 接收,URL 填 https://your-domain.com/callback,Token / EncodingAESKey 与 .env 一致即可。
企业微信配置项
| 变量 | 说明 |
|---|---|
WECOM_CORP_ID | 企业 ID(ww 开头) |
WECOM_CORP_SECRET | 应用 Secret |
WECOM_AGENT_ID | 应用 AgentID |
WECOM_TOKEN | 回调验证 Token |
WECOM_ENCODING_AES_KEY | 回调加密密钥(43 位) |
WECOM_TO_USER | 消息接收人(@all 表示全员) |
CALLBACK_URL | 回调地址 |
参考资料
项目路径
C:\Users\zhuonian\WorkBuddy\qywx