OpenCLAW 对接微信公众号 - 从零开始配置指南
title: OpenCLAW 对接微信公众号 - 从零开始配置指南 tags: [微信公众号, 配置, 入门]
OpenCLAW 对接微信公众号 - 从零开始配置指南
手把手教你如何将 OpenCLAW 与微信公众号对接,实现自动化运营和智能回复。
微信公众号对接概述
通过 OpenCLAW 对接微信公众号,你可以实现:
- 自动回复 - 智能回复用户消息
- 内容发布 - 自动推送文章到公众号
- 用户管理 - 自动处理新关注、取消关注
- 数据分析 - 统计用户行为数据
- 客服集成 - 转接人工客服
对接前准备
1. 微信公众号注册
首先需要有一个微信公众号:
- 访问微信公众平台 https://mp.weixin.qq.com/
- 注册账号(订阅号/服务号)
- 完成认证(可选,但功能更全)
2. 获取必要信息
登录公众号后台,获取以下信息:
┌─────────────────────────────────────────────────┐
│ 公众号开发配置 │
├─────────────────────────────────────────────────┤
│ AppID (应用ID): wx1234567890abcdef │
│ AppSecret (应用密钥): xxxxxxxxxxxxxxxxxxxx │
│ Token (令牌): my_custom_token │
│ EncodingAESKey: abcdefghijklmnopqr... │
└─────────────────────────────────────────────────┘
3. OpenCLAW 环境要求
# 检查 OpenCLAW 版本
openclaw --version
# 确保版本 >= 1.5.0
openclaw version
配置步骤
步骤一:安装微信公众号插件
# 安装微信公众号插件
openclaw plugin install wechat-mp
# 验证安装
openclaw plugin list | grep wechat
步骤二:配置公众号连接
# config/wechat.yaml
wechat:
# 公众号基本信息
app_id: "wx1234567890abcdef"
app_secret: "${WECHAT_APP_SECRET}"
# 服务器配置
server:
host: "0.0.0.0"
port: 8080
# Token 配置
token: "${WECHAT_TOKEN}"
encoding_aes_key: "${WECHAT_ENCODING_AES_KEY}"
# 安全模式
safe_mode: true
步骤三:配置服务器地址
在公众号后台设置服务器配置:
- 登录微信公众平台
- 进入「设置与开发」→「基本配置」
- 点击「修改配置」
┌─────────────────────────────────────────────────┐
│ 服务器配置 │
├─────────────────────────────────────────────────┤
│ URL: https://your-domain.com/wechat │
│ Token: my_custom_token │
│ EncodingAESKey: abcdefghijklmnopqr... │
│ 消息加密方式: 安全模式 │
└─────────────────────────────────────────────────┘
步骤四:启动服务
# 启动微信公众号服务
openclaw wechat start
# 或使用后台运行
openclaw wechat start --daemon
# 查看服务状态
openclaw wechat status
配置详解
完整配置文件
# config/wechat.yaml
wechat:
# ===== 公众号基本信息 =====
app_id: "wx1234567890abcdef"
app_secret: "${WECHAT_APP_SECRET}"
# ===== 服务器配置 =====
server:
host: "0.0.0.0"
port: 8080
ssl:
enabled: true
cert: ./ssl/server.crt
key: ./ssl/server.key
# ===== 消息配置 =====
message:
# 消息处理
handler: agent # agent | webhook | custom
# Agent 配置
agent:
name: wechat-assistant
model: gpt-4
# 自动回复配置
auto_reply:
enabled: true
default_response: "感谢您的消息,我会尽快回复您"
# 关键词回复
keyword_reply:
- keywords: ["hello", "你好"]
response: "你好!有什么可以帮你的?"
- keywords: ["帮助"]
response: "你可以这样使用我..."
# ===== 用户管理 =====
user:
# 新关注自动回复
welcome:
enabled: true
message: |
欢迎关注!
我是 AI 助手,可以帮你解答问题。
输入"帮助"查看更多功能。
# 取消关注处理
unsubscribe:
enabled: true
notify: true
# ===== 菜单配置 =====
menu:
enabled: true
# 自定义菜单
buttons:
- name: "关于"
type: view
url: "https://your-domain.com/about"
- name: "服务"
type: click
key: "MENU_SERVICE"
- name: "联系"
type: sub_button
sub_buttons:
- name: "联系客服"
type: view
url: "https://your-domain.com/contact"
# ===== 日志配置 =====
logging:
enabled: true
level: info
file: ./logs/wechat.log
# ===== 高级配置 =====
advanced:
# 消息限流
rate_limit:
enabled: true
requests_per_minute: 60
# 消息队列
queue:
enabled: true
size: 1000
# 失败重试
retry:
enabled: true
max_attempts: 3
环境变量配置
# .env
WECHAT_APP_SECRET=your_app_secret_here
WECHAT_TOKEN=your_token_here
WECHAT_ENCODING_AES_KEY=your_aes_key_here
Agent 配置
创建公众号助手 Agent
# agents/wechat-assistant.yaml
name: wechat-assistant
description: 微信公众号智能助手
model:
provider: openai
model: gpt-4
temperature: 0.7
system_prompt: |
你是一个微信公众号的智能助手。
你的职责:
1. 友好地回复用户的消息
2. 提供有价值的信息和帮助
3. 引导用户使用公众号功能
回答风格:
- 简洁明了,不超过100字
- 友好亲切
- 适当使用表情
知识截止:2024-01
skills:
- name: file-operations
enabled: true
- name: http-request
enabled: true
Agent 响应处理
# 自定义消息处理器
class WechatMessageHandler:
def __init__(self, agent):
self.agent = agent
async def handle_text(self, message):
"""处理文本消息"""
# 获取用户输入
user_input = message.content
# 调用 Agent 处理
response = await self.agent.chat(user_input)
# 返回响应
return response
async def handle_event(self, event):
"""处理事件消息"""
if event.type == "subscribe":
return self.get_welcome_message()
elif event.type == "unsubscribe":
await self.handle_unsubscribe(event.user)
return None
验证配置
1. 检查服务状态
# 查看服务状态
openclaw wechat status
# 输出示例
# Service: wechat-mp
# Status: running
# Port: 8080
# Messages processed: 1,234
# Errors: 0
2. 测试消息接收
# 发送测试消息
openclaw wechat test send --user openid123 --message "hello"
# 模拟用户关注
openclaw wechat test subscribe --user openid123
3. 查看接收日志
# 实时查看消息日志
openclaw wechat logs --tail 50
# 查看消息处理日志
openclaw wechat logs --level debug
常见问题
Q1: 服务器验证失败
问题:点击提交显示"URL 请求超时"
排查:
# 1. 检查服务是否启动
openclaw wechat status
# 2. 检查端口是否开放
netstat -tlnp | grep 8080
# 3. 测试本地服务
curl -v http://localhost:8080/wechat
# 4. 检查防火墙
firewall-cmd --list-ports
解决方案:
- 确保公网可访问(使用内网穿透或云服务器)
- 检查 URL 是否正确
- 确认 Token 一致
Q2: 消息收不到
问题:用户发送消息没有响应
排查:
# 1. 检查消息日志
openclaw wechat logs | grep "received message"
# 2. 检查 Agent 是否正常
openclaw agent status wechat-assistant
# 3. 检查配置
openclaw wechat config show
Q3: 回复消息失败
问题:无法回复用户消息
解决方案:
# 检查 Access Token
wechat:
access_token:
cache: true
refresh_before_expire: 300
# 检查权限
# 确保公众号已认证,获得接口权限
Q4: 菜单创建失败
问题:自定义菜单创建失败
解决方案:
# 检查菜单配置格式
menu:
buttons:
# 最多3个一级菜单
- name: "菜单1" # 不超过4个汉字
# ...
安全配置
1. IP 白名单
# 只允许微信服务器 IP
security:
ip_whitelist:
- 101.226.103.0/25
- 101.226.64.0/18
# 或禁用(仅开发环境)
ip_whitelist: []
2. 消息签名验证
# 启用消息签名验证
security:
verify_signature: true
# 消息加密
encrypt_messages: true
3. 敏感词过滤
# 敏感词过滤
security:
filter_keywords:
enabled: true
keywords:
- "敏感词1"
- "敏感词2"
action: reject # reject | replace | log
性能优化
1. 消息队列
# 启用消息队列
message:
queue:
enabled: true
size: 1000
workers: 5
# 异步处理
async:
enabled: true
2. Access Token 缓存
# Token 缓存配置
access_token:
cache:
enabled: true
type: redis # redis | file
ttl: 7200 # 2小时
# 自动刷新
auto_refresh:
enabled: true
before_expire: 300
3. 数据库优化
# 消息存储
storage:
database:
enabled: true
type: postgresql
connection: ${DATABASE_URL}
# 消息保留
retention:
days: 30
archive: true
下一步
配置完成后,你可以: