title: OpenCLAW 对接微信公众号 - 从零开始配置指南 tags: [微信公众号, 配置, 入门]


OpenCLAW 对接微信公众号 - 从零开始配置指南

手把手教你如何将 OpenCLAW 与微信公众号对接,实现自动化运营和智能回复。

微信公众号对接概述

通过 OpenCLAW 对接微信公众号,你可以实现:

  • 自动回复 - 智能回复用户消息
  • 内容发布 - 自动推送文章到公众号
  • 用户管理 - 自动处理新关注、取消关注
  • 数据分析 - 统计用户行为数据
  • 客服集成 - 转接人工客服

对接前准备

1. 微信公众号注册

首先需要有一个微信公众号:

  1. 访问微信公众平台 https://mp.weixin.qq.com/
  2. 注册账号(订阅号/服务号)
  3. 完成认证(可选,但功能更全)

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

步骤三:配置服务器地址

在公众号后台设置服务器配置:

  1. 登录微信公众平台
  2. 进入「设置与开发」→「基本配置」
  3. 点击「修改配置」
┌─────────────────────────────────────────────────┐
│              服务器配置                          │
├─────────────────────────────────────────────────┤
│  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

下一步

配置完成后,你可以:


微信公众号配置系列: - 本文:OpenCLAW 对接微信公众号 - 自动回复配置 - 内容自动发布