跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScriptNode.jsSaaS算法

n8n 集成飞书机器人:Webhook 签名与 Crypto 节点配置实战

n8n 飞书 Webhook 配置详解,重点解决签名校验问题。针对飞书特殊的签名算法——将时间戳与密钥拼接作为 HMAC 的 Key,而非标准用法,提供 n8n Crypto 节点的具体配置方案。涵盖 Set 节点生成时间戳、Crypto 节点计算签名及 HTTP Request 节点发送流程,并整理常见错误排查方法。

橘子海发布于 2026/3/30更新于 2026/10/2196 浏览
n8n 集成飞书机器人:Webhook 签名与 Crypto 节点配置实战

n8n 集成飞书机器人:Webhook 签名与 Crypto 节点配置实战

在自动化流程中,向飞书推送消息时,开启签名校验是保障安全的关键。很多开发者在 n8n 中直接使用标准的 HMAC 逻辑会失败,因为飞书的签名算法比较特殊。本文将拆解如何在 n8n 中正确配置 Crypto 节点来完成签名,并实现稳定的消息推送。

飞书侧准备

首先需要在飞书群聊中添加自定义机器人。进入群组设置 -> 群机器人 -> 添加自定义机器人。获取 Webhook 地址后,务必开启'签名校验'功能,复制生成的密钥。

注意:自定义机器人仅限当前群聊使用,频率限制为单租户单机器人 100 次/分钟。发送请求体大小不能超过 20 KB。

n8n 核心配置

1. 生成时间戳

飞书要求签名中的时间戳必须是当前 Unix 时间戳(秒级)。我们使用 Edit Fields 节点来生成。

{{ Math.round(new Date().getTime() / 1000) }}

2. 计算签名(关键步骤)

这是最容易出错的地方。飞书的签名算法并非标准的 hmac(key, message),而是将 timestamp 和 secret 拼接作为 Key,空字符串作为 Message。

在 Crypto 节点中配置如下:

  • Action: hmac
  • Type: SHA256
  • Value: (留空)
  • Secret: ={{ $json.timestamp + '\n' + '你的飞书密钥' }}
  • Encoding: base64

这里利用了 n8n 的表达式引擎,动态拼接了时间戳和换行符。标准 HMAC 用法通常是 key=secret, msg=data,但飞书文档示例显示第一个参数 key 变成了 timestamp 和 secret 的拼接(用换行符),第二个参数 msg 为空。

3. 发送请求

最后通过 HTTP Request 节点调用 Webhook。Payload 需要包含 timestamp 和 sign 字段。

{
  "timestamp": "{{ $json.timestamp }}",
  "sign": "{{ $json.sign }}",
  "msg_type": "text",
  "content": {
    "text": "测试消息"
  }
}

消息类型支持

除了文本消息,飞书还支持富文本(Post)和卡片(Interactive)。

  • 文本消息:适合简单通知,支持 <at> 标签 @用户。
  • 富文本消息:支持超链接和 @用户,结构较复杂,需嵌套 JSON。
  • 卡片消息:可交互性强,但需注意仅支持 URL 跳转,不支持回调。

常见问题排查

  • 签名校验失败:检查服务器时间与标准时间是否偏差过大,确保时间戳在 1 小时内。错误码通常为 19021。
  • 关键词校验失败:如果开启了关键词过滤,请确保消息内容包含指定词。错误码通常为 19024。
  • IP 白名单:若启用了 IP 白名单,请确认 n8n 运行环境的出口 IP 已加入。错误码通常为 19022。

通过以上配置,即可在 n8n 中安全、稳定地对接飞书机器人。

目录

  1. n8n 集成飞书机器人:Webhook 签名与 Crypto 节点配置实战
  2. 飞书侧准备
  3. n8n 核心配置
  4. 1. 生成时间戳
  5. 2. 计算签名(关键步骤)
  6. 3. 发送请求
  7. 消息类型支持
  8. 常见问题排查

更多推荐文章

查看全部
  • 程序员与管理者进阶必读的 5 本经典好书
  • 选择排序详解:直接、树形与堆排序实战
  • 解析 skill-creator:如何编写高质量 AI Skill
  • Flutter Clean Architecture 架构设计实践
  • LLama-Factory 实战:基于自建数据集微调 Qwen7B 模型
  • C# 多线程同步机制:Mutex 与 Semaphore 详解
  • 大模型私有化部署:清华智谱 GLM 大模型部署与使用指南
  • IPIDEA 网页抓取 API 实战:eBay 商品数据采集与 Python 接入
  • Python 实现月相计算与可视化效果展示
  • Python 调用高德地图 MCP 服务查询天气示例
  • MyBatisPlus 与 Thymeleaf 全栈分页实战指南
  • PHP PDO SQL Server 分页 SQL 实现方案
  • 大模型零基础入门到精通:转行全攻略与学习路径
  • Python 安装与环境配置完整指南
  • IntelliJ IDEA 切换 Git 用户配置方法
  • AR 健身教练“形随心动”:基于 Rokid CXR-M SDK 的实战开发
  • 基于 Java 的无人共享宠物洗澡物联网系统设计与实现
  • 数学建模:无人机烟幕遮蔽导弹时间优化算法
  • 融合大模型与遥感技术:人工智能基础模型综述
  • 算法进阶:前缀和的应用场景与细节

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online