
企业微信与飞书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 ): Promiseboolean { const percentage Math.round((data.submittedCount / data.totalMembers) * 100); const markdownContent ### font colorinfo【周五研发周报提交通知】/font 各位同学本周工作即将进入收尾阶段请及时总结本周技术攻坚成果 **当前收集进度**font colorwarning${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): Promiseboolean { 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 端转化的关键钥匙。