Dataformater og oppdeling av matriser

Dataformater og oppdeling av matriser

Kopier side

Workflow Webhooks analyserer JSON-, skjema-kodede, multipart- og XML-innhold, og kan utløse én Shopify Flow-kjøring for hvert element i en matrise.

Ikke alle systemer sender JSON, og ikke alle forespørsler gjelder én enkelt ting. To innstillinger dekker begge tilfellene.

Kroppsformater

Formatet hentes fra forespørselens Content-Type-overskrift. Uansett hvilket format det er, bruker feltkartleggingen dine de samme punktbanene.

Innholdstype Analysert som Typiske avsendere
application/json JSON De fleste API-er, n8n, Make, Zapier
application/x-www-form-urlencoded Skjemafelt Twilio, PayPal IPN, vanlige HTML-skjemaer
multipart/form-data Skjemafelt og fildeler blir til filnavnet Skjemageneratorer, opplastingsendepunkter
text/xml, application/xml, *+xml XML Eldre ERP- og transportørsystemer

To ting det er verdt å vite:

  • Et innhold som er gyldig JSON, tolkes alltid som JSON, selv om avsenderen merker det som noe annet. Mange verktøy sender JSON med innholdstypen «form», og dette sikrer at de fortsatt fungerer.
  • Form- og XML-innhold kan inneholde felt som du ikke har tilordnet. Det er ikke noe problem: avsenderen bestemmer selv strukturen, så dette innholdet unngår den strenge kontrollen som gjelder for JSON-data du har kontroll over.
A form-encoded webhook (for example Twilio)bash
curl -X POST https://your-app-url/webhook/ab12cd34 \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -H "X-Api-Key: your-token" \
  --data-urlencode "From=+15551234567" \
  --data-urlencode "Body=Where is my order?"

# Map fieldOne to: From
# Map fieldTwo to: Body

XML-attributter

Et XML-attributt er tilgjengelig under navnet sitt med prefiks @_, så <order id="7"> blir tilordnet som order.@_id, og <order><name>Bob</name></order> blir order.name. Verdiene leveres som tekst, noe som sikrer at lange ID-er gjengis nøyaktig.

Oppdeling av matriser i sekvenser

Når en forespørsel inneholder en liste - for eksempel 20 bestillinger fra et ERP-system eller en serie lageroppdateringer - vil man vanligvis at arbeidsflyten skal kjøre én gang per element, ikke én gang for hele serien.

Under Avanserte innstillinger -> Del matriser i serier angir du stien til matrisen:

Sti Bruk når
items Matrisen er et felt på øverste nivå: { "items": [ ... ] }
data.orders Den er nestet: { "data": { "orders": [ ... ] } }
$ Selve kroppen er en matrise: [ { ... }, { ... } ]
(tom) Av. Én kjøring per forespørsel - standardinnstillingen.

Hvert element blir en egen kjøring med det aktuelle elementet som nyttelast, så tilordningsstiene er relative til det enkelte elementet: tilordne sku, ikke items.0.sku.

One request, three Flow runsjson
{
  "items": [
    { "sku": "ABC-1", "qty": 2 },
    { "sku": "ABC-2", "qty": 1 },
    { "sku": "ABC-3", "qty": 7 }
  ]
}

// Split path: items
// Map fieldOne to: sku
// Map fieldTwo to: qty
// Response: { "runs": 3, "blocked": 0 }

Regler og begrensninger

  • Høyst 100 elementer per forespørsel. Større partier avvises, slik at en uønsket avsender ikke kan oversvømme arbeidsflyten din.
  • Hvis et element mangler et tilordnet felt eller er for stort for Shopify Flow, blir hele forespørselen avvist og ingenting sendes, og posisjonen til det feilaktige elementet angis i feilmeldingen. Dette sikrer at en batch behandles enten i sin helhet eller ikke i det hele tatt, i stedet for at den blir delvis behandlet.
  • Elementer som er enkle verdier og ikke objekter, vises som { "value": ... }.
  • Oppdeling kan ikke kombineres med et synkront svar: én innringer kan ikke besvares av flere kjøringer. Se Synkron respons.
  • Når man spiller av et tidligere løp fra «Historikk», sendes kun det enkelte elementet på nytt, ikke hele batchen.

I historie

Hvert element er en egen oppføring, slik at du kan se, prøve på nytt og spille av hvert enkelt element for seg.