第 10 章

飞书/企业微信/钉钉机器人

Ch10 飞书 / 企业微信 / 钉钉机器人

国内企业协作工具三巨头——飞书、企业微信、钉钉——都支持通过 Webhook 机器人向群聊推送消息。n8n 用 HTTP Request 节点即可对接全部三种平台,无需安装任何插件。本章从零配置每个平台的机器人,深入讲解飞书卡片消息 JSON 结构,实现带按钮的双向交互,最后构建一个每日业务数据播报机器人。

飞书 Webhook 机器人

创建机器人并获取 Webhook URL

  1. 打开飞书群聊,点击右上角"⋯"→"群设置"→"群机器人"→"添加机器人"
  2. 选择"自定义机器人",填写名称和描述,点击"添加"
  3. 复制 Webhook 地址(形如 https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxx
  4. 如需安全校验,勾选"签名校验"并记录 Secret Key

三种消息类型

文本消息(text):最简单,直接传字符串。

富文本消息(post):支持加粗、斜体、行内代码、超链接,适合格式化通知。

交互卡片(interactive):飞书最强大的消息格式,支持按钮、下拉选择、表单输入,可触发回调——本章重点。

飞书卡片消息 JSON 结构详解

飞书卡片(Card)采用 JSON DSL 描述界面,由 configheaderelements 三个顶级字段组成。

// 飞书卡片消息完整示例(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。

企业微信群机器人

接入配置

  1. 企业微信群聊 → 右上角"⋯"→"添加群机器人"→ 填写名称 → 复制 Webhook URL
  2. 在 n8n 中新建 HTTP Request 节点,Method 选 POST,URL 填写机器人 Webhook
  3. Headers 添加 Content-Type: application/json
  4. 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 的请求才能成功推送。

加签计算步骤

  1. 获取当前 Unix 时间戳(毫秒):timestamp
  2. 拼接字符串:timestamp + "\n" + secret
  3. 用 HMAC-SHA256 以 secret 为密钥对上述字符串做签名
  4. 对签名结果做 Base64 编码,再做 URL encode
  5. timestampsign 作为查询参数附加到 Webhook URL

在 n8n 中实现这一流程:先用 Code 节点计算签名,再在 HTTP Request 节点的 URL 中引用计算结果。

双向交互:用户点击卡片按钮触发工作流

飞书交互卡片的按钮支持两种触发方式:

Webhook 机器人的局限: 群 Webhook 机器人只能推送消息、无法接收消息。若需要真正的双向对话(用户在群内输入触发工作流),需要改用飞书开放平台创建"自建应用",并配置事件订阅来接收群消息事件。

实战:每日业务数据播报机器人

目标:每天早上 9:00 自动从数据库查询当日业务数据,生成飞书卡片消息推送到运营群。

工作流节点链

  1. Cron 触发器:配置 0 9 * * 1-5(工作日早 9 点)
  2. MySQL 节点(Execute Query):查询当日订单数、GMV、新增用户数、退款金额
  3. Code 节点:格式化数字(千位分隔符、保留两位小数),计算环比变化率,生成变化趋势 emoji(↑ / ↓)
  4. HTTP Request 节点:POST 到飞书群 Webhook,Body 为组装好的卡片 JSON
  5. IF 节点(错误处理):检查响应 code 是否为 0,若非 0 则向告警群推送失败通知

这个工作流完全在 n8n 内完成,不需要编写任何后端服务代码。定时触发、数据库查询、格式化、消息推送,每一步都可视化配置,改动即时生效。

本章评分
4.5  / 5  (31 评分)

💬 留言讨论