飞书/企业微信/钉钉机器人
Ch10 飞书 / 企业微信 / 钉钉机器人
国内企业协作工具三巨头——飞书、企业微信、钉钉——都支持通过 Webhook 机器人向群聊推送消息。n8n 用 HTTP Request 节点即可对接全部三种平台,无需安装任何插件。本章从零配置每个平台的机器人,深入讲解飞书卡片消息 JSON 结构,实现带按钮的双向交互,最后构建一个每日业务数据播报机器人。
飞书 Webhook 机器人
创建机器人并获取 Webhook URL
- 打开飞书群聊,点击右上角"⋯"→"群设置"→"群机器人"→"添加机器人"
- 选择"自定义机器人",填写名称和描述,点击"添加"
- 复制 Webhook 地址(形如
https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx) - 如需安全校验,勾选"签名校验"并记录 Secret Key
三种消息类型
文本消息(text):最简单,直接传字符串。
富文本消息(post):支持加粗、斜体、行内代码、超链接,适合格式化通知。
交互卡片(interactive):飞书最强大的消息格式,支持按钮、下拉选择、表单输入,可触发回调——本章重点。
飞书卡片消息 JSON 结构详解
飞书卡片(Card)采用 JSON DSL 描述界面,由 config、header、elements 三个顶级字段组成。
// 飞书卡片消息完整示例(HTTP Request Body)
{
"msg_type": "interactive",
"card": {
"config": { "wide_screen_mode": true },
"header": {
"title": { "tag": "plain_text", "content": "今日业务数据播报" },
"template": "blue"
},
"elements": [
{
"tag": "div",
"fields": [
{
"is_short": true,
"text": { "tag": "lark_md",
"content": "**今日订单**\n{{ $json.orders }} 单" }
},
{
"is_short": true,
"text": { "tag": "lark_md",
"content": "**今日 GMV**\n¥{{ $json.gmv }}" }
}
]
},
{ "tag": "hr" },
{
"tag": "action",
"actions": [{
"tag": "button",
"text": { "tag": "plain_text", "content": "查看详情" },
"type": "primary",
"url": "https://dashboard.example.com/today"
}]
}
]
}
}
常用 template 颜色值:blue(信息)、green(成功)、yellow(警告)、red(告警)、grey(中性)。lark_md 支持 Markdown 语法,是飞书卡片内容格式化的首选 tag。
卡片消息调试工具: 飞书开放平台提供"消息卡片搭建工具"(card.feishu.cn),可以在线可视化编辑卡片 JSON 并实时预览渲染效果,强烈建议先在这里调好样式再粘贴到 n8n。
企业微信群机器人
接入配置
- 企业微信群聊 → 右上角"⋯"→"添加群机器人"→ 填写名称 → 复制 Webhook URL
- 在 n8n 中新建 HTTP Request 节点,Method 选 POST,URL 填写机器人 Webhook
- Headers 添加
Content-Type: application/json - Body 填写消息 JSON
// 企业微信 Markdown 消息(支持简化版 Markdown)
{
"msgtype": "markdown",
"markdown": {
"content": "## 告警通知\n> 服务器 **{{ $json.host }}** CPU 使用率超过 90%\n\n当前值:<font color='warning'>{{ $json.cpu }}%</font>\n\n请及时处理!"
}
}
企业微信支持的消息类型:text(纯文本,可 @成员)、markdown(Markdown,带颜色标签)、image(图片 base64)、news(图文卡片)。企业微信群机器人不支持双向交互按钮,如需用户回复请改用"应用消息"接口。
钉钉自定义机器人:加签安全配置
钉钉机器人提供三种安全模式:关键词过滤、IP 白名单、加签(HMAC-SHA256)。生产环境强烈建议使用加签模式——只有持有 Secret 的请求才能成功推送。
加签计算步骤
- 获取当前 Unix 时间戳(毫秒):
timestamp - 拼接字符串:
timestamp + "\n" + secret - 用 HMAC-SHA256 以
secret为密钥对上述字符串做签名 - 对签名结果做 Base64 编码,再做 URL encode
- 将
timestamp和sign作为查询参数附加到 Webhook URL
在 n8n 中实现这一流程:先用 Code 节点计算签名,再在 HTTP Request 节点的 URL 中引用计算结果。
双向交互:用户点击卡片按钮触发工作流
飞书交互卡片的按钮支持两种触发方式:
- url 类型:点击直接打开链接——最简单,把 n8n Wait 节点的回调 URL 作为按钮链接,用户点击即触发工作流恢复。
- callback 类型:用户点击后飞书服务器向你的 Callback URL 发送 POST 请求,携带用户 ID、按钮值等上下文——适合需要验证身份的场景,需在飞书开放平台配置应用并通过审核。
Webhook 机器人的局限: 群 Webhook 机器人只能推送消息、无法接收消息。若需要真正的双向对话(用户在群内输入触发工作流),需要改用飞书开放平台创建"自建应用",并配置事件订阅来接收群消息事件。
实战:每日业务数据播报机器人
目标:每天早上 9:00 自动从数据库查询当日业务数据,生成飞书卡片消息推送到运营群。
工作流节点链
- Cron 触发器:配置
0 9 * * 1-5(工作日早 9 点) - MySQL 节点(Execute Query):查询当日订单数、GMV、新增用户数、退款金额
- Code 节点:格式化数字(千位分隔符、保留两位小数),计算环比变化率,生成变化趋势 emoji(↑ / ↓)
- HTTP Request 节点:POST 到飞书群 Webhook,Body 为组装好的卡片 JSON
- IF 节点(错误处理):检查响应
code是否为 0,若非 0 则向告警群推送失败通知
这个工作流完全在 n8n 内完成,不需要编写任何后端服务代码。定时触发、数据库查询、格式化、消息推送,每一步都可视化配置,改动即时生效。