基于 Cloudflare Worker 构建的微信客服智能机器人,集成 OpenAI 兼容 API,支持多轮对话、管理后台、关键词 Webhook 触发等功能。
- 基于 Cloudflare Worker,无需服务器,全球边缘部署
- 集成 OpenAI 兼容 API(支持 GPT、DeepSeek、Claude 等任何兼容接口)
- 微信客服消息接收与自动回复,支持多轮对话上下文
- 内置消息加解密,完整对接企业微信回调
- 使用 Cloudflare KV 存储会话历史和配置
- 可视化管理后台(客服帐号、会话、消息、统计、系统设置)
- 关键词匹配触发 Webhook(支持精确/包含/正则,自定义请求体和变量替换)
- AI 模型/Base URL/API Key 可在管理后台动态配置,无需重新部署
| 项目 | 说明 |
|---|---|
| Cloudflare 账号 | 最好已绑定可用域名(免费的 eu.org 也行) |
| GitHub 账号 | 用于一键部署,需关联上述 Cloudflare 账号 |
| 企业微信 | 你是该企业的管理员(无需认证) |
| OpenAI 兼容接口 | 支持 /v1/chat/completions 的任意服务(官方、第三方、new-api 均可) |
| Deno 账号(可选) | 用于部署加解密服务,也可直接使用公共服务 |
1. 部署加解密服务(Deno Deploy) → 拿到 CRYPTO_SERVICE_URL
2. 一键部署到 Cloudflare Workers → 配置环境变量与 KV
3. 企业微信获取 CORP_ID、生成 Token 和 EncodingAESKey → 回填到 Workers
4. 企业微信完成回调 URL 验证 → 获取 Secret → 回填到 Workers
5. 验证对话功能
如果不想自己部署,可直接使用公共服务:
https://wecom-crypto.deno.dev
- 打开项目中的
wecom_crypto_deno.ts,复制全部内容 - 打开 Deno Deploy 控制台
- 点击 New Playground,将脚本内容粘贴进去,点击部署
- 记录右上角的 Deno URL(例如
https://your-name.deno.dev) - 访问该 URL 确认可达(返回
Method not allowed即表示正常)
- 点击本页顶部的 Deploy to Cloudflare Workers 按钮
- 登录 GitHub 和 Cloudflare 账号
- 在部署参数页配置环境变量和 KV 绑定(详见下方参数说明)
- 部署完成后获得两个域名:
- Workers 自带域名:
xxx.workers.dev(国内访问不稳定,不建议作为主入口) - 自定义域名(强烈建议绑定,例如
kf.yourdomain.com)
- Workers 自带域名:
git clone https://github.com/bestK/wxkfbot.git
cd wxkfbot
npm install创建 KV 命名空间:
wrangler kv:namespace create "CONVERSATIONS"
wrangler kv:namespace create "MESSAGE_TRACKER"复制 wrangler.toml.example 为 wrangler.toml,填入配置后部署:
wrangler deploy手机企业微信 → 工作台 → 管理企业 → 企业信息 → 复制企业 ID
- 打开微信客服管理后台
- 左侧进入「开发配置 → API 配置」
- 点击生成 Token 和 EncodingAESKey
- 复制这两个值,回到 Cloudflare Workers 填入对应变量
- 回调地址填写你的自定义域名 +
/callback- 例如:
https://kf.yourdomain.com/callback ⚠️ 不建议使用workers.dev域名,国内验证大概率失败
- 例如:
- 点击保存/验证
- 验证成功后会显示 Secret,将其填入 Workers 的
WECHAT_KF_SECRET变量 - 重新部署 Workers
部署完成后,有两种方式发起对话:
微信扫码体验:客服后台 → 开始接入 → 在微信内其他场景接入 → 扫码体验
外部链接接入:客服后台 → 在微信外 App/网页中接入 → 复制客服链接,在微信中打开
| 变量名 | 说明 | 必填 | 示例 |
|---|---|---|---|
| WECHAT_CORP_ID | 企业微信企业 ID | 是 | wwxxxxxxxxx |
| WECHAT_KF_SECRET | 客服 Secret(回调验证通过后获取) | 是 | |
| WECHAT_KF_TOKEN | 消息校验 Token | 是 | |
| WECHAT_KF_ENCODING_AES_KEY | 消息加解密 Key | 是 | |
| OPENAI_API_KEY | API 密钥 | 是 | sk-xxx |
| OPENAI_BASE_URL | API 地址,只填到根路径 | 否 | https://api.openai.com |
| OPENAI_MODEL | 模型名称 | 否 | gpt-4o |
| OPENAI_TIMEOUT | 请求超时 ms | 否 | 30000 |
| SYSTEM_PROMPT | AI 系统提示词 | 否 | |
| CRYPTO_SERVICE_URL | 加解密服务地址 | 是 | https://wecom-crypto.deno.dev |
| ADMIN_KEY | 管理后台访问密钥 | 否 |
注意:
OPENAI_BASE_URL只填到根路径,不要带/v1/chat/completions。例如 API 请求地址是https://api.example.com/v1/chat/completions,这里就填https://api.example.com。
AI 模型、Base URL、API Key、系统提示词均可在管理后台动态修改,KV 中的配置优先于环境变量。
| 绑定名称 | 用途 | 说明 |
|---|---|---|
| CONVERSATIONS | 会话存储 | 存储对话历史和动态配置 |
| MESSAGE_TRACKER | 消息去重/追踪 | 防止重复处理消息 |
两个 KV 命名空间必须是不同的实例,不能共用。
部署后访问 https://your-domain.com/admin 即可使用。
功能模块:
- 客服帐号 — 查看、添加、修改、删除微信客服帐号,获取客服链接
- 会话管理 — 实时查看会话列表,聊天窗口支持富媒体消息(图片/语音/视频/文件/链接/位置),支持手动回复和消息撤回
- 消息同步 — 同步微信客服历史消息
- 统计数据 — 按客服帐号查看统计
- 系统设置 — AI 模型配置、系统提示词、关键词 Webhook 规则
在管理后台「系统设置」中配置关键词触发规则:
- 匹配方式:精确匹配、包含、正则表达式
- 请求方法:GET / POST
- Content-Type:JSON / Form
- 自定义请求体模板,支持变量替换
可用变量:
| 变量 | 说明 |
|---|---|
{{content}} |
用户消息内容 |
{{external_userid}} |
用户 ID |
{{open_kfid}} |
客服 ID |
{{msgid}} |
消息 ID |
{{keyword}} |
匹配的关键词 |
{{timestamp}} |
触发时间戳 |
GET 请求时变量可用于 URL 参数,POST 请求时用于请求体模板。
- Workers 日志无请求记录:域名不可达或被墙。不要用
workers.dev,改用自定义域名 - 有日志但报错:检查
WECHAT_KF_TOKEN和WECHAT_KF_ENCODING_AES_KEY是否与企业微信后台一致 - 确认回调 URL(
https://your-domain.com/callback)可公网访问,TLS 正常
- 检查
OPENAI_BASE_URL是否只填到根路径(不要带/v1/chat/completions) - 检查
OPENAI_API_KEY是否正确 - 检查
OPENAI_MODEL名称是否正确 - 在 Cloudflare Workers 控制台查看实时日志排查
在 Workers 控制台开启 Logs,重新触发一条消息查看请求链路。
wxkfbot/
├── index.js # 主入口,路由和业务逻辑
├── config.js # AI 配置管理
├── clients.js # OpenAI / 微信 API 客户端
├── conversation.js # 多轮对话管理
├── crypto.js # 消息加解密
├── message-tracker.js # 消息去重跟踪
├── response.js # 统一响应格式
├── kf-management.js # 微信客服管理 API 封装
├── kf-routes.js # 客服管理路由处理
├── admin.js # 管理后台(构建产物)
├── admin/ # 管理后台源码(Vue 3 + Element Plus)
└── scripts/
└── build-admin.mjs # 前端构建脚本
# 前端开发
cd admin && npm run dev
# Worker 本地调试
wrangler dev
# 构建管理后台
cd admin && npm run build && cd .. && node scripts/build-admin.mjs
# 部署
wrangler deployMIT License
- 项目地址:github.com/bestK/wxkfbot
- 部署教程:linux.do 社区帖
- 问题反馈:Issues