当前位置: 首页 > news >正文

企业微信ClawBot全链路部署详细过程

企业微信 ClawBot 全链路部署详细过程

目标:把自研的 AI 聊天机器人(ClawBot)接入企业微信,让员工可以在企业微信里跟 AI 对话。

核心问题:企业微信要求回调地址必须是「已备案的企业域名 + HTTPS」,不能直接用 IP 或内网地址。

⚠️ 本文所有 IP、域名、API Key 均为示例,请替换为你自己的实际信息。


一、整体架构

你发消息 → 企业微信服务器 → 你的备案域名(your-domain.com)↓Nginx (反向代理)↓ClawBot (FastAPI + DeepSeek AI)↓回复 → 企业微信 → 你

为什么需要这些组件?

组件 为什么需要
备案域名 (your-domain.com) 企业微信强制要求,不能用 IP
Nginx 负责 HTTPS 加密 + 把请求转发给后端程序
ClawBot 你写的 Python 程序,处理消息并调用 AI
DeepSeek API AI 大脑,真正理解并回复消息

二、云服务器准备

2.1 购买腾讯云轻量服务器

为什么需要服务器? 你的 ClawBot 程序需要 24 小时在线运行,不能用你家里的电脑(断电断网就没了)。

在腾讯云买一台轻量应用服务器(最低配 2核2G 就行),系统选 Ubuntu 24.04

2.2 配置安全组(防火墙)

腾讯云有层额外的防火墙叫「安全组」,默认只开了 22 端口(SSH 登录用)。

需要手动开放:

端口 用途
80 HTTP(用于 Let's Encrypt 验证域名)
443 HTTPS(企业微信要求加密通信)

操作路径:腾讯云控制台 → 你的服务器 → 防火墙 → 添加规则

2.3 SSH 密钥登录

# 在本地电脑生成密钥对
ssh-keygen -t ed25519 -f ~/.ssh/clawbot_deploy# 把公钥内容加到服务器的 ~/.ssh/authorized_keys 里
# 这样后面可以用 ssh -i 密钥 登录

三、域名配置

3.1 为什么需要域名?

企业微信回调地址不能是 IP(如 http://YOUR_SERVER_IP/xxx),必须是域名。而且这个域名必须:

  • 做了 ICP 备案(中国大陆法规要求)
  • 能解析到你的服务器 IP

3.2 购买 + 备案

在腾讯云买域名(your-domain.com,1元/年),然后提交 ICP 备案申请(1-20天)。

3.3 DNS 解析

备案通过后,去腾讯云 DNSPod 添加一条 A 记录

记录类型: A
主机记录: @
记录值: YOUR_SERVER_IP  (你的服务器公网IP)
TTL: 600

这样别人访问 your-domain.com 就会找到你的服务器。


四、部署 ClawBot

4.1 项目结构

clawbot/
├── app/
│   ├── main.py          # FastAPI 入口
│   ├── config.py        # 配置管理
│   ├── channel/
│   │   └── wecom.py     # 企业微信回调处理
│   ├── agent/
│   │   ├── engine.py    # AI 对话引擎
│   │   ├── prompts.py   # AI 人设 Prompt
│   │   └── tools.py     # AI 可用工具定义
│   ├── storage/         # 数据库
│   ├── scheduler/       # 定时任务
│   └── webui/           # 管理后台
├── run.py               # 启动文件
├── .env                 # 配置文件(API Key等敏感信息)
└── requirements.txt     # Python 依赖

4.2 上传代码到服务器

scp -r clawbot/* ubuntu@YOUR_SERVER_IP:~/clawbot/

4.3 安装 Python 依赖

cd ~/clawbot
python3 -m venv venv               # 创建虚拟环境(隔离 Python 包)
source venv/bin/activate            # 激活虚拟环境
pip install -r requirements.txt     # 安装所有依赖

为什么用虚拟环境? 不同项目可能需要不同版本的 Python 包,虚拟环境让它们互不干扰。

4.4 配置 .env 文件

.env 存放所有敏感配置,相当于程序的「钥匙串」:

# AI 模型 (ClawBot 的大脑)
LLM_API_KEY=YOUR_DEEPSEEK_API_KEY
LLM_BASE_URL=https://api.deepseek.com/anthropic  # DeepSeek 的 Anthropic 兼容接口
LLM_MODEL=deepseek-v4-pro# 企业微信应用配置
WECOM_CORP_ID=YOUR_CORP_ID      # 企业 ID(以 ww 开头)
WECOM_AGENT_SECRET=YOUR_AGENT_SECRET  # 应用 Secret
WECOM_AGENT_ID=YOUR_AGENT_ID     # 应用 AgentID
WECOM_TOKEN=YOUR_CALLBACK_TOKEN  # 回调 Token(自己定,3-32位字符)
WECOM_ENCODING_AES_KEY=YOUR_AES_KEY  # 回调加密 Key(43位)# 服务
HOST=0.0.0.0                  # 监听所有网卡(让 Nginx 能访问)
PORT=8000

4.5 配置 Nginx 反向代理

Nginx 是什么? 一个高性能的 Web 服务器,这里用它做两件事:

  1. HTTPS 加密 — 让通信安全
  2. 反向代理 — 把外部请求转发给 ClawBot(跑在 8000 端口)

创建 /etc/nginx/sites-available/clawbot

server {listen 80;server_name your-domain.com;location / {proxy_pass http://127.0.0.1:8000;  # 转发到 ClawBotproxy_set_header Host $host;}location /wecom/ {proxy_pass http://127.0.0.1:8000;proxy_set_header Host $host;proxy_buffering off;  # 企业微信回调需要实时响应}
}

然后启用:

sudo ln -s /etc/nginx/sites-available/clawbot /etc/nginx/sites-enabled/
sudo nginx -t         # 测试配置是否正确
sudo systemctl reload nginx  # 重载配置

4.6 配置 HTTPS(SSL 证书)

用 Certbot 免费申请 Let's Encrypt 证书(有效期3个月,自动续期):

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com

执行后 Certbot 会自动:

  1. 验证你对域名的控制权(访问 http://your-domain.com/.well-known/...
  2. 申请证书
  3. 自动修改 Nginx 配置加上 SSL

Nginx 配置会变成:

server {listen 443 ssl;server_name your-domain.com;ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;# ... 原来配置不变
}server {listen 80;server_name your-domain.com;return 301 https://$host$request_uri;  # HTTP 自动跳转 HTTPS
}

4.7 配置 systemd 开机自启

为什么需要? 服务器重启后,ClawBot 程序要自动跑起来,不能每次手动启动。

创建 /etc/systemd/system/clawbot.service

[Unit]
Description=ClawBot - AI 研究助手
After=network.target[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/clawbot
ExecStart=/home/ubuntu/clawbot/venv/bin/python run.py
Restart=always        # 挂了自动重启
RestartSec=5[Install]
WantedBy=multi-user.target

启动并启用:

sudo systemctl enable clawbot   # 开机自启
sudo systemctl start clawbot    # 立即启动
sudo systemctl status clawbot   # 查看状态

五、企业微信配置

5.1 创建自建应用

登录 企业微信管理后台 → 应用管理自建创建应用

创建后会拿到:

  • AgentID(应用编号)
  • Secret(应用密码,调用企业微信 API 用)

5.2 配置回调地址

在企业微信管理后台 → 你的应用接收消息设置接收消息

填写:

字段
URL https://your-domain.com/wecom/callback
Token .env 里的 WECOM_TOKEN 一致
EncodingAESKey .env 里的 WECOM_ENCODING_AES_KEY 一致

点击保存时,企业微信会发一个 GET 请求到你的 URL 做验证:

https://your-domain.com/wecom/callback?msg_signature=xxx&timestamp=xxx&nonce=xxx&echostr=xxx

ClawBot 的 wecom.py 里用 WeChatCrypto.check_signature() 验证签名 → 解密 echostr → 返回解密后的字符串 → 验证通过。

5.3 添加 IP 白名单

企业微信限制了哪些 IP 可以调用它的 API 发消息。你的服务器 IP 必须加进去:

应用管理 → 你的应用 → 企业可信IP → 添加 YOUR_SERVER_IP

如果不加,ClawBot 能收到消息但发不出去,会报错:

Error code: 60020 - not allow to access from your ip

六、完整数据流

你在企业微信发:你好│▼
企业微信服务器收到消息│ 根据回调 URL 配置,把消息加密后 POST 到▼
https://your-domain.com/wecom/callback?msg_signature=xxx&timestamp=xxx&nonce=xxx│▼
Nginx (443端口) → 转发到 127.0.0.1:8000│▼
ClawBot (wecom.py)│ 1. 用 WeChatCrypto.decrypt_message() 解密消息│ 2. 解析 XML,取出用户ID和消息内容│ 3. 把消息存入 SQLite 数据库│ 4. 调用 AI 引擎处理▼
AI 引擎 (engine.py)│ 1. 组装消息为 DeepSeek API 格式│ 2. 调用 https://api.deepseek.com/chat/completions│ 3. DeepSeek 返回回复文本▼
ClawBot 收到回复│ 1. 把回复存入数据库│ 2. 调用企业微信 API 发消息给用户▼
企业微信服务器 → 你手机 → 弹窗显示回复

七、遇到的问题 & 解决方案

问题 原因 解决
本地电脑没有公网 IP 家庭宽带没有固定公网 IP 部署到腾讯云服务器
企业微信回调验证失败 ngrok/cpolar 域名不是企业主体 购买备案域名 your-domain.com
HTTPS 证书 需要加密通信 Let's Encrypt 免费证书
DeepSeek API 403 拒绝 API Key 错误或过期 换新 Key
搜索失败 DuckDuckGo 从国内无法访问 改用 Bing 搜索
消息发送失败 60020 服务器 IP 不在白名单 企业微信后台添加可信 IP
回复格式显示 ## 等符号 企业微信不渲染 Markdown 改用纯文本 + emoji 格式

总结:整个部署的核心就是搞明白「消息怎么从用户手机出发,经过哪些环节,到达 AI,再返回」这条链路。每个环节都有特定的要求(域名要备案、通信要加密、IP 要白名单),一个一个满足就行了。

http://www.gsyq.cn/news/1516877.html

相关文章:

  • 无人配送车全解析:从技术原理到未来市场,一篇读懂
  • 5分钟掌握WaveTools:解锁《鸣潮》游戏性能的终极指南
  • Tabletop Simulator备份指南:如何用TTS-Backup保护你的桌游数据安全
  • i.MX23 USB控制器寄存器与PHY配置实战指南
  • 郑州市2026叛逆少年学校口碑排名 哪家信誉度高?选校避坑与真实测评 - 善良的阿良
  • 你家的小爱音箱,真的够“聪明“吗?3个步骤让它秒变AI学霸
  • TranslucentTB透明任务栏美化指南:3分钟打造Windows桌面新体验
  • 深度解析constexpr-8cc架构:从ELVM IR到编译时计算
  • 洛雪音乐音源终极指南:5步获取全网无损音乐的完整解决方案
  • Protobuf Any类型实战避坑:从类型混淆到内存泄漏,我的C++项目踩坑记录
  • 郴州市2026年市民高频选择的5家实体黄金回收白银回收铂金回收门店实地测评整理 - 干豆腐啊
  • CANoe日志瘦身进阶:巧用DBC过滤与自动化脚本,批量处理ASC/BLF文件
  • 终极NSC_BUILDER使用指南:Switch文件批量处理与格式转换完全手册
  • 终极指南:如何让你的老款Mac免费升级到最新macOS系统
  • Maya到glTF转换终极指南:5个高效导出技巧让你的3D资产飞起来![特殊字符]
  • 【10 分钟完成配置】 Win10 系统 OpenClaw v2.7.9 安装详解(包含安装包)
  • 湛江市2026年上门黄金回收白银回收铂金回收测评,五家全城可上门实体店整理 - 凯撒是大帝
  • 终极解决方案:专业高效导出完整微信聊天记录的开源工具WeChatExporter
  • Flutter Windows桌面应用:保姆级教程教你替换图标和自定义窗口(附中文乱码解决方案)
  • 终极AMD Ryzen SDT调试工具指南:专家级硬件性能调优教程
  • 丽水青田县黄金回收报价多少?当前金价行情与避坑指南 - 专业黄金回收
  • 2026年6月最新|绍兴洁净室设计施工公司推荐 生物医药净化车间资质齐全 - 商业新知
  • 遗传算法实战精调:参数、编码与终止条件的工程化指南
  • 贵港市2026年市民高频选择的5家实体黄金回收白银回收铂金回收门店实地测评整理 - 干豆腐啊
  • 新手友好 Hermes Agent Windows 本地部署完整攻略(含安装包)
  • 毕业 5年发现档案找不到,教你怎么查个人档案!学员案例 - 慧办好
  • 贵阳市2026年市民高频选择的5家实体黄金回收白银回收铂金回收门店实地测评整理 - 干豆腐啊
  • 抖音无水印批量下载:douyin-downloader 技术实现与应用实践
  • 百色市2026年黄金回收白银回收铂金回收变卖,5 家靠谱贵金属门店实地测评汇总 - 凯撒是大帝
  • LAV Filters技术架构解析:构建高性能DirectShow媒体处理流水线