所有分类
  • 所有分类
  • AI工具
  • AI提示词
  • AI培训视频教程

N8N Code 节点:如何解析 Webhook Payload 并自定义 Lock Key 变量 (Webhook 数据解析与变量声明指南)

热门教程(视频)

配置目的

在自动化流程中,我们经常通过 Webhook 接收外部系统(如 Slack、CRM、订单系统)发来的数据。

这些数据通常是JSON格式,我们需要从中提取关键信息,例如用户ID、订单号等。

本教程旨在教会你使用 Code 节点,解析这些数据,并创建一个唯一的“分布式锁”标识(Lock Key)。

这能确保同一任务(如处理某个用户的请求)不会被重复执行,保证流程的稳定和准确。

前置条件

在开始之前,请确保你已完成 N8N 和 Redis 的基本连接配置。

本教程专注于 Code 节点的代码逻辑,不会涉及 Redis 连接的具体步骤。

账号与平台准备

你需要清楚地了解你的 Webhook 平台发送的 JSON 数据是什么样的。

如何查看?

最简单的方法是,在 Webhook 节点后连接一个 NoOp 节点,然后触发一次 Webhook,在 NoOp 节点的输入(Input)中查看完整的数据结构。

例如,一个来自 Slack 的数据可能长这样:

{"body":{"user_id":"U123ABC","channel_id":"C456DEF","text":"你好"}}

你需要记下那个能唯一标识一次任务的字段名,比如这里的 `user_id`。

关键配置步骤

现在,我们一步步来配置 Code 节点。

添加并打开Code节点

在你的 Webhook 节点之后,点击 + 号,搜索并添加一个 Code 节点。

保持语言设置为默认的 JavaScript 即可。

编写核心代码

将以下代码模板粘贴到 Code 节点的代码区域:

// Webhook收到的数据通常在$json.body中,且为字符串格式
const payload = JSON.parse($json.body);

// 从数据中提取你需要的唯一标识符
// 请将 'user_id' 替换成你数据中的实际字段名
const uniqueId = payload.user_id;
// 你也可以提取多个字段来组合
const channelId = payload.channel_id;

// 定义一个用于分布式锁的Lock Key
// 格式可以自定义,但必须保证唯一性
const lockKey = `n8n-lock:${channelId}:${uniqueId}`;

// 返回所有数据,并附加上我们新创建的变量
return [{
json: {
...$json, // 保留从Webhook收到的所有原始数据
lockKey: lockKey // 添加我们自定义的lockKey变量
}
}];

如何修改代码

这段代码的核心是解析和提取,你需要根据你的实际情况修改它。

1. 修改 `JSON.parse()` 语句

代码中的 $json.body 指的是上一个节点(Webhook)输出数据中的 `body` 字段。如果你的数据在其他字段,比如 `data`,你需要把它改成 JSON.parse($json.data)

2. 修改 `payload.var1`

代码中的 payload.user_id 是一个示例。你需要查看你的实际数据,找到那个独一无二的字段。

  • 如果你的唯一ID字段是 `orderNumber`,就改成 payload.orderNumber
  • 如果数据嵌套很深,比如在 `customer.id` 中,就改成 payload.customer.id

简单说,就是把示例代码中的 `user_id` 和 `channel_id` 换成你自己的“钥匙”。

常见错误与排查

新手最容易遇到两个问题,别担心,很容易解决。

错误:payload is not defined

这个错误通常意味着 JSON.parse($json.body) 这一行出了问题。

原因: Webhook 传来的数据可能不在 $json.body 里,或者它根本不是一个 JSON 字符串。

解决方法: 回到上一个节点,仔细检查输出数据的结构,确认包含 JSON 字符串的准确字段路径,并修改代码。

错误:Key 值生成为空

如果你发现生成的 lockKey 变量是空的,或者像 `n8n-lock::` 这样缺少了关键部分。

原因: 很可能是因为 payload.user_id 这样的表达式没有取到值(结果是 undefined)。

解决方法: 仔细检查你的字段名,包括大小写和拼写,是否和原始数据中的完全一致。一个小小的拼写错误就会导致取值失败。

探索更多 AI,让你的效率与认知全面升级
0
精选 AI 培训教程 · 商业技能教程 · 高质量 AI 提示词
升级VIP,戳我👉【注册学习卡】
显示验证码
没有账号?注册  忘记密码?