Skip to content

企业微信 AI 机器人

基于企业微信自建应用搭建的零成本 AI 机器人,支持定时推送和交互式卡片消息。

项目简介

这是一个基于企业微信自建应用(非 Webhook 群机器人)搭建的智能助手,支持两类部署模式:

  1. Cloudflare Workers — 零成本 Serverless 部署,利用 Cron Trigger 定时推送 + KV 存储反馈数据
  2. Node.js + PM2 — 自有服务器部署,Nginx 反代 + SQLite 本地数据库

相比 Webhook 群机器人,自建应用可以收发交互式卡片消息(带按钮),支持用户点赞 / 踩 / 刷新,并在后台记录反馈统计。

架构

模式一:Cloudflare Workers

企业微信 ←→ Cloudflare Workers ←→ KV 存储

           Cron Trigger (09:00)

模式二:自有服务器

企业微信 ←→ Nginx (HTTPS) ←→ Node.js ←→ SQLite

                          定时任务 (09:00)

技术栈

技术说明
TypeScript开发语言
Cloudflare WorkersServerless 运行环境(模式一)
KV Storage存储 access_token 缓存 + 用户反馈
Cron Trigger定时任务触发器
Node.js + PM2自有服务器运行环境(模式二)
NginxHTTPS 反代
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 pm2

2. 配置并启动

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 startup

3. 企业微信后台

进入 应用管理 → 你的应用 → 接收消息 → 设置 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