企业微信与飞书Webhook机器人打通:周五下午自动推送提醒
·
企业微信与飞书Webhook机器人打通:周五下午自动推送提醒

在推广周报生成器的过程中,许多担任 Team Lead 或敏捷 Scrum Master 的用户反馈了一个最令人头疼的管理痛点:
“每到周五下午 16:00,组长就得在企业微信群或飞书群里一遍又一遍地人工艾特全员‘大家记得写周报’;然而群消息经常被刷过去,到了 18:00 还是有一半人没交,催周报的过程既尴尬又消耗精力。”
为了让团队周报的收集流程实现**“零人工催办、自动化群播报、一键直达成品生成”**,我在周报生成器中设计并上线了 企业微信(WeCom)与飞书(Feishu/Lark)自定义 Webhook 机器人通知中枢。
本文分享如何利用标准 Webhook 协议与定时调度任务,打造一套高触达、高颜值的团队周报自动化催办机器人。
自动化协同流程设计
┌─────────────────────────────────────────────────────────────┐
│ 自动化周五催办与提交推送时序 │
└──────────────────────────────┬──────────────────────────────┘
│
┌───────────────────────┴───────────────────────┐
▼ (时段 1: 每周五 16:30 自动触发) ▼ (时段 2: 成员提交后实时触发)
┌───────────────────────────┐ ┌───────────────────────────┐
│ 定时 Cron 触发催办 Job │ │ 成员 A 刚完成了周报生成 │
│ 机器人向群内推送【富文本卡片│ │ 机器人群内播报: │
│ 包含直达工作台免密链接】 │ │ "成员 A 已提交本周工作成果│
└───────────────────────────┘ │ 当前团队完成度: 6/8 人" │
└───────────────────────────┘
核心实现一:企业微信机器人 Markdown 卡片消息发送器
企业微信群机器人支持标准的 Markdown 语法(支持绿色/灰色字体标记与直达超链接):
// src/integrations/wecomBot.ts
import axios from 'axios';
export interface WecomMarkdownMessage {
title: string;
submittedCount: number;
totalMembers: number;
dashboardUrl: string;
}
export async function sendWecomWeeklyReminder(
webhookUrl: string,
data: WecomMarkdownMessage
): Promise<boolean> {
const percentage = Math.round((data.submittedCount / data.totalMembers) * 100);
const markdownContent = `
### 📢 <font color="info">【周五研发周报提交通知】</font>
各位同学,本周工作即将进入收尾阶段,请及时总结本周技术攻坚成果!
> 📊 **当前收集进度**:<font color="warning">${data.submittedCount} / ${data.totalMembers} 人 (${percentage}%)</font>
> 🚀 **AI 极速生成**:已接入 Git Commit 自动分析,一分钟搞定专业周报
👉 [点击一键生成并提交本周周报](${data.dashboardUrl})
`;
try {
const response = await axios.post(webhookUrl, {
msgtype: 'markdown',
markdown: {
content: markdownContent.trim()
}
});
return response.data.errcode === 0;
} catch (err) {
console.error('[WecomBot] 发送企微群通知失败:', err);
return false;
}
}
核心实现二:飞书(Lark)交互式富文本卡片(Interactive Card)
飞书的“交互式消息卡片”在视觉美感和点击交互上支持更强烈的排版质感:
// src/integrations/feishuBot.ts
import axios from 'axios';
export async function sendFeishuWeeklyCard(webhookUrl: string, data: any): Promise<boolean> {
const cardPayload = {
msg_type: 'interactive',
card: {
header: {
template: 'blue',
title: {
tag: 'plain_text',
content: '🚀 本周研发周报收集与提交通知'
}
},
elements: [
{
tag: 'div',
text: {
tag: 'lark_md',
content: `**本周研发推进已进入总结阶段!**\n团队周报完成进度:**${data.submittedCount} / ${data.totalMembers} 人**`
}
},
{
tag: 'action',
actions: [
{
tag: 'button',
text: {
tag: 'plain_text',
content: '⚡ 前往工作台一键生成周报'
},
type: 'primary',
url: data.dashboardUrl
}
]
}
]
}
};
const response = await axios.post(webhookUrl, cardPayload);
return response.data.code === 0 || response.data.StatusCode === 0;
}
核心实现三:定时调度系统(Cron Job)与防重复触发
在服务端使用轻量的 cron 模块,配置每周五下午定时分发:
// src/jobs/weeklyReminderScheduler.ts
import { CronJob } from 'cron';
import { db } from '../db';
import { teams } from '../db/schema';
import { sendWecomWeeklyReminder } from '../integrations/wecomBot';
// 每周五下午 16:30 准时触发 (秒 分 时 日 月 星期)
export const reminderCronJob = new CronJob('0 30 16 * * 5', async () => {
console.log('⏰ [Cron] 触发周五周报自动提醒任务...');
// 1. 查询所有配置了 Webhook 的活跃团队
const activeTeams = await db.query.teams.findMany({
where: (teams, { isNotNull }) => isNotNull(teams.webhookUrl)
});
for (const team of activeTeams) {
if (!team.webhookUrl) continue;
// 2. 统计当前团队提交进度
const stats = await getTeamSubmissionStats(team.id);
// 3. 触发推送
await sendWecomWeeklyReminder(team.webhookUrl, {
title: `${team.name} 周五周报提醒`,
submittedCount: stats.submittedCount,
totalMembers: stats.totalMembers,
dashboardUrl: `https://weekly-report.example.com/team/${team.id}`
});
}
});
团队客户反馈与业务收益
企微与飞书机器人打通后:
- 组长再也不用在周五充当“催交员”,机器人定点推送极大地降低了人际摩擦成本;
- 团队整体周报按时提交率从过去的 55% 飙升至 92%;
- 这一特性直接推动了 3 家中型技术团队从个人版升级为每年 399 元的团队企业版,成为了撬动 B 端转化的关键钥匙。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)