负载映射和流变量

Shopify Flow 触发字段是平面字符串。而您的负载很可能不是。映射就是您从传入的请求中挑选工作流程所需部分的方式。

四个领域

每个 Webhook 都会向 Shopify Flow 暴露四个字段:fieldOne、fieldTwo、fieldThree、fieldFour。在**“高级设置**”下,将每个字段分别映射到负载中的一个键。

假设请求正文如下:

“高级设置”选项卡中,字段 1 至字段 4 分别映射为 orderId、status、total 和 note
高级设置:最多可从请求正文中映射四个值。这些值将作为 fieldOne 至 fieldFour 传入 Shopify Flow。
Shopify Flow 中“Webhook 触发器”的“添加变量”面板,列出了 webhookId 以及 fieldOne 至 fieldFour,并附有来自最近一次请求的示例值
触发器向您的工作流程传递的内容:Webhook ID 以及您映射的四个字段,下图显示了最近一次请求的值。
json
{
  "orderId": "1001",
  "customer": { "email": "someone@example.com", "name": "Alex" },
  "note": "gift wrap"
}
字段 映射到 达到“Shopify Flow”状态的价值
fieldOne orderId 1001
fieldTwo customer.email someone@example.com
fieldThree customer.name Alex
fieldFour note gift wrap

嵌套值使用点表示法(customer.email)。数组元素使用索引(items.0.sku)。

在 Shopify Flow 中,您将它们分别称为{{fieldOne}}、{{fieldTwo}}等。

对象和数组

如果映射的值本身是一个对象或数组,我们会自动将其转换为 JSON 字符串,因为 Shopify Flow 变量无法存储结构体。将上例中的 fieldOne 映射到 customer 后,Shopify Flow 中的代码如下:

text
{"email":"someone@example.com","name":"Alex"}

当你需要重新使用这些片段时,请在 Shopify Flow 的**“运行代码**”操作中对其进行解析。

当四个字段不够用时

四个命名字段可覆盖大多数集成场景。如果无法覆盖,您还有三个可选开关,均位于**“高级设置**”下,且默认均为关闭状态:

设置 Shopify Flow 接收的内容 流动中的田野
允许自定义请求正文 接受任何体型,无需严格验证 -
运用全身 整个请求正文作为 JSON 字符串 rawBody
包含请求头 请求头作为键值对列表 requestHeaders
包含查询参数 URL 查询字符串作为键值对列表 queryParams

requestHeaders queryParams 以列表形式返回 - - 在“运行代码”操作中遍历 requestHeaders.items,其中每个条目都是 { key, value }。

请控制在50KB以内

Shopify Flow 将每次触发器的运行上限设为 50KB。我们会先通过 payload_too_large 测量实际要发送的有效负载大小,并直接拒绝任何超过该大小的请求,这样您就能立即收到明确的错误提示,而非在后续工作流程中才出现失败。

如果出现该问题,请发送较小的请求主体,或者关闭“使用完整请求主体”、“包含请求头”和“包含查询参数”选项 - - 这些通常就是导致问题的原因。

头部信息和查询始终会被记录下来

这些启用开关仅控制转发到 Shopify Flow 的内容。调用历史记录会始终记录请求头和查询字符串(其中敏感值已被屏蔽),因此您无需将所有内容发送至工作流程,即可对请求进行调试。