有效載荷映射與 Shopify Flow 變數

Shopify Flow 觸發欄位是平面的字串。您的有效載荷很可能並非如此。映射就是用來挑選傳入請求中,您的工作流程所需的那些部分。

四大領域

每個 Webhook 都會向 Shopify Flow 公開四個欄位:fieldOne、fieldTwo、fieldThree、fieldFour。請在「進階設定」中,將每個欄位對應至您有效載荷中的鍵。

假設有以下請求正文:

「進階設定」分頁中,欄位 1 至欄位 4 分別對應至 orderId、status、total 及 note
進階設定:最多可從請求正文中映射四個值。這些值會以 fieldOne 至 fieldFour 的形式傳入 `Shopify Flow`。
Shopify Flow
觸發器會傳遞哪些資料至您的工作流程: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 收到的內容 Shopify Flow 中的欄位
允許自訂請求正文 接受任何體型,無需嚴格驗證 -
運用全身 整個請求正文作為一個 JSON 字串 rawBody
包含請求標頭 請求的標頭以鍵值對清單的形式呈現 requestHeaders
包含查詢參數 URL 查詢字串作為鍵值對清單 queryParams

requestHeaders 而 queryParams 會以清單形式傳入 - - 請在「執行程式碼」動作中迭代 requestHeaders.items,其中每個項目皆為 { key, value }。

請將檔案大小控制在 50KB 以下

Shopify Flow 將每次觸發執行限制在 50KB 內。我們會先測量實際要傳送的有效載荷大小,並透過 payload_too_large 預先拒絕任何超過此限制的內容,如此一來,您就能獲得明確的錯誤訊息,而非在後續工作流程中才發生失敗。

若遇到此問題,請傳送較小的正文,或關閉「使用完整正文」、「包含請求標頭」及「包含查詢參數」這幾項設定 - - 這些通常就是導致問題的元兇。

標頭和查詢內容會被始終記錄下來

這些「選擇加入」開關僅控制會**轉發至 Shopify Flow **的內容。呼叫記錄會始終記錄標頭和查詢字串(其中敏感值已進行遮罩處理),因此您無需將所有資料傳送至工作流程,即可對請求進行除錯。