企微 API 开发:朋友圈手动发太麻烦?用接口定时自动发布客户朋友圈
企业微信有个功能叫"客户朋友圈",员工可以发朋友圈,客户在微信里能看到。很多公司拿它做产品推荐、活动预告、节日问候、客户案例分享。
但真用起来会发现一个很现实的问题:发朋友圈太耗时间。
运营写好文案,发给销售,销售再手动复制粘贴到企微里发出去。一个销售名下几百个客户,发一次还好,每天发、每周发、每个节假日发,光这一件事就能占掉不少时间。更别提如果公司有 50 个销售,运营要把同一条朋友圈内容分别推给 50 个人去手动发,那场面相当崩溃。
更麻烦的是,手动发很容易出错。有人忘了发,有人发晚了,有人复制的时候漏了链接,有人图片传错了。发完之后还没法统计谁发了、谁没发、客户有没有互动。
所以,朋友圈这件事,最好用接口自动发。
企业微信朋友圈接口能做什么
企业微信开放了客户朋友圈相关接口,支持用程序化的方式发朋友圈,不用人工一条一条操作。
发表朋友圈:通过接口指定员工,发送文字、图片、链接等类型的朋友圈内容。客户在微信朋友圈里就能看到。
指定可见范围:可以指定这条朋友圈哪些客户能看到,哪些客户看不到。比如只给"高意向"客户看,或者只给"未成交"客户看。
获取朋友圈发表记录:通过接口拉取某个员工发过哪些朋友圈,发表时间、内容、可见范围都能查到。
获取客户互动数据:客户有没有点赞、有没有评论,接口可以拉到互动记录,方便统计朋友圈效果。
获取员工执行情况:运营下发一条朋友圈任务后,可以查哪些员工已经发了、哪些还没发。
常用接口整理如下:
| 接口 | 作用 |
|---|---|
| 发表朋友圈内容 | 指定员工发表文字、图片、链接朋友圈 |
| 获取朋友圈发表记录 | 拉取员工历史朋友圈列表 |
| 获取朋友圈互动数据 | 查询客户点赞、评论记录 |
| 获取员工朋友圈执行情况 | 查询任务下发后哪些员工已执行 |
有了这些接口,朋友圈就能从"运营催销售手动发"变成"运营在后台配好内容,系统到点自动发"。
示例代码:定时自动发朋友圈
下面用 Node.js 写一个完整示例,包含任务管理和定时发表两个核心模块。
const axios = require('axios'); const CORP_ID = '你的企业ID'; const SECRET = '你的应用Secret'; const AGENT_ID = 1000005; const BASE_URL = 'https://qyapi.weixin.qq.com/cgi-bin'; // access_token 缓存 let tokenCache = { token: '', expireTime: 0 }; async function getAccessToken() { if (tokenCache.token && Date.now() < tokenCache.expireTime) { return tokenCache.token; } const res = await axios.get(`${BASE_URL}/gettoken`, { params: { corpid: CORP_ID, corpsecret: SECRET } }); if (res.data.errcode !== 0) { throw new Error(`获取 token 失败:${res.data.errmsg}`); } tokenCache = { token: res.data.access_token, expireTime: Date.now() + (res.data.expires_in - 300) * 1000 }; return tokenCache.token; } // 待发朋友圈任务列表(实际项目用数据库) const pendingTasks = [ { taskId: 'task_001', userid: 'zhangsan', content: '新品上市!限时 8 折优惠,点击链接抢先体验 👉 https://example.com/new-product', scheduledTime: new Date('2026-08-05T10:00:00+08:00').getTime(), status: 'pending' }, { taskId: 'task_002', userid: 'lisi', content: '感谢客户支持!本周精选案例分享,看看同行怎么用我们的产品降本增效。', scheduledTime: new Date('2026-08-05T10:00:00+08:00').getTime(), status: 'pending' } ]; // 发表朋友圈 async function postMoment(accessToken, task) { const res = await axios.post( `${BASE_URL}/externalcontact/add_moment_task`, { text: { content: task.content }, visible_range: { sender_list: { user_list: [task.userid] } } }, { params: { access_token: accessToken } } ); if (res.data.errcode !== 0) { throw new Error(`发朋友圈失败:${res.data.errmsg}`); } return res.data; } // 检查并执行到点任务 async function runScheduledMoments() { const now = Date.now(); const token = await getAccessToken(); for (const task of pendingTasks) { if (task.status !== 'pending') continue; if (now >= task.scheduledTime) { try { console.log(`开始执行任务:${task.taskId},员工:${task.userid}`); const result = await postMoment(token, task); task.status = 'success'; task.result = result; console.log(`任务 ${task.taskId} 执行成功`); } catch (err) { task.status = 'failed'; task.error = err.message; console.error(`任务 ${task.taskId} 执行失败:${err.message}`); } } } } // 每分钟检查一次待发任务 setInterval(() => { runScheduledMoments().catch(console.error); }, 60 * 1000); console.log('朋友圈定时发表服务已启动'); // 也可以手动触发一次测试 runScheduledMoments().catch(console.error);运行后,系统会每分钟检查一次待发任务列表。到点的任务自动调用朋友圈接口发表,发表结果记录在任务对象里。
实际项目里,pendingTasks应该换成数据库查询。运营在后台配置好内容、员工列表、发表时间后,写入任务表。定时任务从表里拉取待发任务,逐条执行。
客户朋友圈是企业微信里很重要的一个触达渠道,但手动发太耗人力。
用接口自动发,核心就三步:
- 运营配置朋友圈内容和发表时间
- 定时任务到点调用接口发表
- 发表后记录结果并统计执行情况
这样做的好处很直接:运营不用催销售,销售不用手动发,发完后还能统计谁发了、客户有没有互动。
后面再接入内容审批、分人群发送、节日自动问候、互动数据统计,就能把朋友圈从"手动复制粘贴"升级成"运营配好内容,系统自动执行,数据自动汇总"。
