Gå til hovedinnhold

[Ordremottak – GCW] Introduksjon til mal-mappere

Juliana Maciel Maruri da Cunha avatar
Skrevet av Juliana Maciel Maruri da Cunha
Oppdatert for over 3 uker siden

Hva er mal-mappere?

Mal-mappere i GelatoConnect er kraftfulle verktøy som gjør det enkelt å oversette data mellom formatet til systemet ditt og GelatoConnect sitt format. De fungerer som oversettere og sørger for at informasjon flyter sømløst mellom ulike systemer, uansett hvordan hvert system organiserer dataene sine.

Enten du sender inn bestillinger til GelatoConnect eller får oppdateringer om endringer i ordrestatus, gjør mal-mappere det mulig å endre dataformater uten at du må endre systemene du allerede bruker.


Hvorfor velge malmapper?

Mal-mappere løser flere vanlige utfordringer med integrasjoner:

  1. Ulike datastrukturer: Systemet ditt og GelatoConnect kan ha hver sin måte å organisere den samme informasjonen på.

  2. Ulike navn på felter: Systemet ditt kan kalle en leveringsadresse for «delivery_address», mens GelatoConnect bruker «shippingAddress».

  3. Formatkonverteringer: Noen ganger må du endre dataformater, for eksempel bytte datoformat eller gjøre om måleenheter.

  4. Selektiv feltkobling: Noen ganger vil du kanskje bare ta med bestemte felt fra dataene dine når du sender til GelatoConnect.

  5. Betinget logikk: Noen ganger må du kanskje bruke ulike regler for mapping, avhengig av for eksempel ordretype eller hvilket land bestillingen skal til.

Slik fungerer mal-mappere

GelatoConnect bruker Jinja2-malspråket for sine malmapper. Dette kraftige og fleksible språket gir deg muligheten til å:

  1. Hent ut verdier: Ta ut data fra innformatet ditt

  2. Transformer data: Bruk funksjoner og logikk for å endre dataene

  3. Bygg resultat: Lag det endelige resultatet i formatet GelatoConnect forventer

En mal-mapper tar inn dataene dine og lager et resultat (data som passer med GelatoConnect) basert på reglene du selv setter opp for hvordan dataene skal endres.

Komponenter for maltilordning

En vanlig mal-mapper i GelatoConnect består av disse delene:

1. Inndata

Dette er utgangspunktet du vil gjøre om. Det kan for eksempel være:

  • Bestillingsdata fra nettbutikken din

  • Kundeinformasjon fra CRM-en din

  • Produktdetaljer fra katalogen din

2. Maldefinisjon

Her bestemmer du hvordan du vil endre inn-dataene. Med Jinja2-syntaks kan du angi:

  • Hvilke felt du vil hente ut fra innholdet

  • Eventuelle endringer som skal gjøres

  • Slik er oppsettet på resultatet

3. Slik gjør du det

Resultatet av malbehandlingen, vanligvis i JSON-format som følger GelatoConnect sine API-krav.

Grunnleggende eksempel på mal-tilordning

La oss ta et enkelt eksempel som viser hvordan du kan gjøre om en ordre fra systemet ditt til GelatoConnect sitt format:

Ordredataene fra systemet ditt:

{"order_id": "ORD-12345","customer": {"name": "John Doe","email": "[email protected]"},"delivery": {"street": "Hovedgata 123","city": "New York","zip": "10001","country": "US"},"produkter": [{"sku": "POSTER-A4-MATTE","qty": 2,"image_url": "https://example.com/images/poster1.jpg"}]}

Mal-oversikt:

{"orderReferenceId": "####{{ order_id }}","orderType": "ordre","currency": "USD","shippingAddress": {"firstName": "####{{ customer.name.split(' ')[0] }}","lastName": "####{{ customer.name.split(' ')[1] }}","addressLine1": "####{{ delivery.street }}","city": "####{{ delivery.city }}","postCode": "####{{ delivery.zip }}","country": "####{{ delivery.country }}","email": "####{{ customer.email }}","phone": "+1234567890"},"items": [{% for product in products %}{"itemReferenceId": "####{{ order_id }}-####{{ loop.index }}","productUid": "####{{ lookups({'sku': product.sku}, strict=False, default='') }}","quantity": ####{{ product.qty }},"filer": [{"type": "standard","url": "####{{ product.image_url }}"}]}{% if not loop.last %},{% endif %}{% endfor %}]}

Resultatet er en ordre som fungerer med GelatoConnect:

{"orderReferenceId": "ORD-12345","orderType": "ordre","currency": "USD","shippingAddress": {"firstName": "John","lastName": "Doe","addressLine1": "123 Main St","city": "New York","postCode": "10001","country": "US","email": "[email protected]","telefon": "+1234567890"},"items": [{"itemReferenceId": "ORD-12345-1","productUid": "flat_product_pf_a4_pt_200-g-m2-ubestrøket_cl_4-0_ct_none_prt_none_sft_none_set_none_hor","antall": 2,"filer": [{"type": "standard","url": "https://example.com/images/plakat1.jpg"}]}]}

Viktige funksjoner i mal-mapperen

Variabelinnsetting

Bruk doble krøllparenteser for å sette inn verdier fra inndata:

jinja"orderReferenceId": "####{{ order_id }}"

Filtre

Bruk filtre (markert med loddrett strek) for å endre verdier:

jinja"firstName": "####{{ customer.name | title }}"

Vanlige filtre er for eksempel:

  • upper: Gjør om til store bokstaver

  • lower: Gjør om til små bokstaver

  • title: Skriv første bokstav i hvert ord med stor forbokstav

  • trim: Fjern mellomrom fra starten og slutten

  • default: Bruk en standardverdi hvis variabelen ikke er definert

  • js: Sørg for at verdien er riktig formatert for JSON

Kontrollstrukturer

Bruk logikk for å vise innhold etter behov eller gå gjennom lister:

{% for product in products %}// Gå gjennom hvert produkt{% endfor %}{% if customer.type == "business" %}// Inkluder felt som er spesifikke for virksomheten{% ellers %}// Inkluder felt for hver enkelt kunde{% endif %}

Oppslag

Bruk lookups()-funksjonen for å koble verdier mellom systemer, for eksempel når du vil gjøre om produkt-SKU-er til GelatoConnect produkt-UID-er:

jinja"productUid": "####{{ lookups({'SKU': product.sku}, strict=False, default='') }}"

Oppslagsfunksjonen krever at du setter opp oppslagstabeller i GelatoConnect. Disse tabellene kobler verdiene i systemet ditt til verdiene i GelatoConnect.

Lage og teste malmapperne

GelatoConnect gir deg et brukervennlig grensesnitt for å lage og teste malmapper:

  1. Lag en mal: Gå til maler og lag en ny mal.

  2. Velg maltype: Velg den maltypen som passer best (for eksempel bestillingsforespørsel eller bekreftelse på mottatt bestilling).

  3. Lag malen: Skriv Jinja2-malen din i redigeringsverktøyet.

  4. Test med eksempeldata: Legg inn eksempeldata og vis malen for å se resultatet.

  5. Test og forbedre: Juster malen din etter behov når du ser hvordan resultatet blir.

  6. Lagre og aktiver: Når malen din fungerer som den skal, kan du lagre den og bruke den i integrasjonen din.

Vanlige måter å bruke mal-mappere på

1. Kartlegging av ordreinnsending

Gjør om bestillinger fra systemet ditt til GelatoConnect sitt API-format.

2. Varsler om statusoppdatering

Lag maler for ulike ordrestatushendelser (mottatt, sendt, levert) slik at systemene dine får beskjed.

3. Personlig tilpassede Webhooker

Formater data for å sende til tredjepartssystemer når bestemte hendelser skjer.

4. Datatilpasning

Gjør data fra flere kilder like før du behandler dem.

Gode tips for deg som lager maler

  1. Start enkelt: Velg en grunnmal og bygg videre etter hvert.

  2. Bruk kommentarer: Legg til kommentarer for å gjøre vanskelige endringer lettere å forstå.

    jinja{# Dette henter ut fornavn og etternavn fra fullt navn #}
  3. Håndter manglende data: Sørg alltid for å ha standardverdier eller sjekk for valgfrie felt.

    jinja"additionalInfo": "####{{ customer.notes | default('') }}"
  4. Test grenser og unntak: Sjekk at malene dine takler uventede formater eller verdier.

  5. Bruk oppslag for avanserte koblinger: I stedet for å legge inn koblinger direkte i malen, kan du bruke oppslagsfunksjonen.

  6. Hold malene enkle: Lag egne maler for hvert formål i stedet for én stor og komplisert mal.

  7. Sjekk resultatet: Pass alltid på at malen din oppfyller kravene til GelatoConnect sitt API.

Smarte teknikker for maltilpasning

Når du blir tryggere på malmapperne, kan du ta i bruk flere avanserte funksjoner:

Makroer

Lag gjenbrukbare blokker med mal-kode:

{% macro format_address(address) %}{"addressLine1": "####{{ address.street }}","city": "####{{ address.city }}","postCode": "####{{ address.zip }}","country": "####{{ address.country }}"}{% endmacro %}// Sånn bruker du det:"shippingAddress": ####{{ format_address(delivery) }}

Angi uttalelser

Lag variabler i malen din:

{% set full_name = customer.firstName + ' ' + customer.lastName %}"recipientName": "####{{ full_name }}"

Personlig tilpassede filtre og funksjoner

GelatoConnect støtter flere personlig tilpassede filtre og funksjoner i tillegg til de vanlige i Jinja2:

  • lookups(): For å koble sammen ulike verdisystemer

  • js: For korrekt JSON-escaping

  • Ulike funksjoner for datoformatering


Vil du vite mer?

Nå som du har fått oversikt over det grunnleggende med Template Mappers i GelatoConnect, er du klar til å:

Svarte dette på spørsmålet?