Skip to content

OpenClaw 企业微信机器人接入实战:办公自动化全攻略

2026年4月8日

OpenClaw 企业微信机器人接入实战:办公自动化全攻略

企业微信是办公场景的核心工具。把 OpenClaw 接入企业微信,实现消息自动推送、审批流程自动化、智能提醒,让企业办公效率提升 3 倍。

接入方式对比

方式特点适用场景
群机器人简单快速,30秒创建群内通知、提醒
企业应用功能完整,需开发深度定制、内部系统
小程序用户友好,交互丰富复杂业务流程

方式一:群机器人(推荐入门)

创建群机器人

1. 打开企业微信群聊
2. 点击群设置(右上角)
3. 选择「群机器人」
4. 点击「添加机器人」
5. 填写机器人名称
6. 复制 Webhook 地址

地址格式:
https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx-xxx-xxx

发送消息

javascript
const axios = require('axios');

// 发送文本消息
async function sendTextMessage(webhookUrl, content) {
  await axios.post(webhookUrl, {
    msgtype: 'text',
    text: {
      content: content,
      mentioned_list: ['@all'],  // @所有人
    }
  });
}

// 发送 Markdown 消息
async function sendMarkdownMessage(webhookUrl, content) {
  await axios.post(webhookUrl, {
    msgtype: 'markdown',
    markdown: {
      content: content
    }
  });
}

// 发送图文消息
async function sendNewsMessage(webhookUrl, articles) {
  await axios.post(webhookUrl, {
    msgtype: 'news',
    news: {
      articles: articles
    }
  });
}

消息模板示例

javascript
// 任务完成通知
const message = `### 任务完成通知
> 任务名称:数据抓取
> 状态:<font color="info">SUCCESS</font>
> 耗时:2分30秒
> 详情:[点击查看](https://example.com/task/123)`;

// 系统告警通知
const alert = `### ⚠️ 系统告警
> 服务器:production-server-01
> 指标:CPU 使用率
> 当前值:<font color="warning">87%</font>
> 时间:${new Date().toLocaleString()}
> 请及时处理!`;

// 发送示例
await sendMarkdownMessage(webhookUrl, message);

方式二:企业应用(深度定制)

创建企业应用

1. 登录企业微信管理后台:https://work.weixin.qq.com
2. 进入「应用管理」
3. 点击「创建应用」
4. 填写应用信息
5. 记录 AgentId 和 Secret

获取 Access Token

javascript
class QywxTokenManager {
  constructor(corpId, corpSecret) {
    this.corpId = corpId;
    this.corpSecret = corpSecret;
    this.token = null;
    this.expiresAt = 0;
  }

  async getToken() {
    if (this.token && Date.now() < this.expiresAt) {
      return this.token;
    }

    const response = await axios.get(
      `https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${this.corpId}&corpsecret=${this.corpSecret}`
    );

    this.token = response.data.access_token;
    this.expiresAt = Date.now() + response.data.expires_in * 1000 - 300000;

    return this.token;
  }
}

发送应用消息

javascript
// 发送文本卡片消息
async function sendTextCard(userId, title, description, url) {
  const token = await tokenManager.getToken();

  await axios.post(
    `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${token}`,
    {
      touser: userId,
      msgtype: 'textcard',
      agentid: AGENT_ID,
      textcard: {
        title: title,
        description: description,
        url: url,
        btntxt: '查看详情'
      }
    }
  );
}

// 发送模板卡片消息
async function sendTemplateCard(userId, templateId, data) {
  const token = await tokenManager.getToken();

  await axios.post(
    `https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${token}`,
    {
      touser: userId,
      msgtype: 'template_card',
      agentid: AGENT_ID,
      template_card: {
        template_id: templateId,
        data: data
      }
    }
  );
}

审批流程自动化

创建审批流程

javascript
// 提交审批申请
async function submitApproval(userId, templateId, formData) {
  const token = await tokenManager.getToken();

  const response = await axios.post(
    `https://qyapi.weixin.qq.com/cgi-bin/oa/applyevent?access_token=${token}`,
    {
      creator_userid: userId,
      template_id: templateId,
      apply_data: formData
    }
  );

  return response.data;
}

// 审批状态查询
async function getApprovalStatus(spNo) {
  const token = await tokenManager.getToken();

  const response = await axios.post(
    `https://qyapi.weixin.qq.com/cgi-bin/oa/getapprovalinfo?access_token=${token}`,
    { sp_no: spNo }
  );

  return response.data;
}

审批回调处理

javascript
// 处理审批回调
router.post('/qywx/callback', async (req, res) => {
  const { UserId, SpStatus, SpNo } = parseCallback(req.body);

  if (SpStatus === 2) {
    // 审批通过
    await handleApprovalApproved(SpNo);
  } else if (SpStatus === 3) {
    // 审批驳回
    await handleApprovalRejected(SpNo);
  }

  res.send('success');
});

定时提醒

配置定时任务

javascript
const cron = require('node-cron');

// 每天早上 9 点发送日报提醒
cron.schedule('0 9 * * *', async () => {
  const users = await getReportNotSubmittedUsers();
  
  for (const user of users) {
    await sendTextCard(
      user.id,
      '日报提醒',
      '请及时提交今日工作日报',
      'https://work.example.com/daily'
    );
  }
});

// 每周五下午 5 点发送周报提醒
cron.schedule('0 17 * * 5', async () => {
  await sendTextMessage(
    webhookUrl,
    '📅 温馨提醒:本周工作即将结束,请及时提交周报!'
  );
});

// 每月 1 号发送月报提醒
cron.schedule('0 9 1 * *', async () => {
  await sendMarkdownMessage(
    webhookUrl,
    '### 📊 月报提醒\n> 新的一月开始了,请及时提交上月工作月报!'
  );
});

系统告警集成

监控告警推送

javascript
// 监控系统告警
async function sendSystemAlert(alert) {
  const message = `### ⚠️ ${alert.level}级告警

> **服务名称**:${alert.service}
> **告警指标**:${alert.metric}
> **当前值**:<font color="warning">${alert.value}</font>
> **阈值**:${alert.threshold}
> **时间**:${alert.time}
> **持续时间**:${alert.duration}

[查看详情](https://monitor.example.com/alert/${alert.id})`;

  await sendMarkdownMessage(webhookUrl, message);
}

// 自动故障处理
async function handleAutoFix(alert) {
  const result = await openclaw.chat({
    message: `系统告警:${alert.message},请分析并提供解决方案`
  });

  // 发送 AI 分析结果
  await sendMarkdownMessage(
    webhookUrl,
    `### 🤖 AI 故障分析\n\n${result}`
  );
}

智能客服

企业微信客服机器人

javascript
// OpenClaw 配置企业微信客服
async function createCustomerService() {
  const token = await tokenManager.getToken();

  // 创建客服账号
  await axios.post(
    `https://qyapi.weixin.qq.com/cgi-bin/kf/account/add?access_token=${token}`,
    {
      name: 'OpenClaw智能客服',
      media_id: 'MEDIA_ID'
    }
  );
}

// 处理客服消息
async function handleCustomerMessage(msg) {
  // 调用 OpenClaw 生成回复
  const reply = await openclaw.chat({
    userId: msg.external_userid,
    message: msg.text.content
  });

  // 发送回复
  await axios.post(
    `https://qyapi.weixin.qq.com/cgi-bin/kf/send_msg?access_token=${token}`,
    {
      touser: msg.external_userid,
      open_kfid: msg.open_kfid,
      msgtype: 'text',
      text: {
        content: reply
      }
    }
  );
}

实战案例

案例:自动化部署通知

javascript
// CI/CD 流程通知
async function notifyDeployment(deploy) {
  const { project, env, status, time, logs } = deploy;

  const message = `### 🚀 部署通知

> **项目**:${project}
> **环境**:<font color="info">${env}</font>
> **状态**:<font color="${status === 'SUCCESS' ? 'info' : 'warning'}">${status}</font>
> **耗时**:${time}
> **执行人**:${deploy.user}

${logs ? `[查看日志](${logs})` : ''}`;

  await sendMarkdownMessage(webhookUrl, message);
}

// 使用示例
await notifyDeployment({
  project: 'OpenClaw Web',
  env: 'production',
  status: 'SUCCESS',
  time: '2分30秒',
  user: '张三',
  logs: 'https://ci.example.com/logs/123'
});

案例:日报生成与提醒

javascript
// 自动生成日报并发送
cron.schedule('0 18 * * *', async () => {
  // 获取今日工作数据
  const stats = await getTodayStats();

  // AI 生成日报摘要
  const summary = await openclaw.chat({
    message: `根据以下数据生成工作日报摘要:\n${JSON.stringify(stats)}`
  });

  // 发送日报
  await sendMarkdownMessage(
    webhookUrl,
    `### 📊 今日工作日报\n\n${summary}`
  );
});

最佳实践

消息推送原则

原则说明
重要性分级根据重要程度选择推送方式
避免打扰非紧急消息避免 @all
内容简洁核心信息优先展示
可操作性提供明确的下一步操作

配置清单

□ 群机器人配置
  □ Webhook 地址保存
  □ 测试消息发送

□ 企业应用配置
  □ 创建应用并获取凭证
  □ 配置可信域名
  □ 设置 IP 白名单

□ 审批流程配置
  □ 创建审批模板
  □ 配置审批规则
  □ 设置审批人

□ 定时任务配置
  □ 提醒任务创建
  □ 工作时间设置
  □ 接收人员配置

总结

功能实现难度应用场景
群机器人消息★☆☆通知推送
企业应用消息★★☆用户触达
审批流程★★★办公自动化
定时提醒★★☆工作提醒
系统告警★★☆运维监控

企业微信接入核心:

  • 群机器人最简单,30秒上手
  • 企业应用功能更完整
  • 结合 OpenClaw 实现智能化
  • 合理使用定时任务提升效率

企业微信 + OpenClaw,打造企业办公自动化中枢,让重复工作自动化,让团队协作更高效。

不要孤军奋战啦!

加入微信群一起学习交流 AI

与大神一起使用 OpenClaw、Hermes、Claude Code、Seedance 2.0、GPT-Image-2 等

微信公众号

扫码关注微信公众号
私信 "加群",将自动获取微信群二维码

探索 AI 世界,掌握智能未来