Mallar är viktiga byggstenar i GelatoConnect som hanterar både inkommande och utgående dataflöden. De omvandlar kunddata till format som ditt arbetsflöde kan använda, och de anpassar utgående data från GelatoConnect så att de passar dina kunders system. I den här guiden får du steg för steg lära dig hur du skapar, testar och använder mallar för att hantera data åt båda hållen i dina orderflöden.
Förstå mallar i GelatoConnect
Mallar i GelatoConnect fungerar som ritningar som visar hur data ska struktureras, hanteras och presenteras. De tar hand om två viktiga dataflöden:
Inkommande datamallar
Dessa mallar omvandlar data från dina kunders system till format som GelatoConnect kan bearbeta:
Orderförfrågan: Konverterar kundens orderdata till GelatoConnects interna format
Avbryt begäran: Gör avbokningsförfrågningar tydliga för GelatoConnect
Utgående datamall
Dessa mallar bestämmer hur data från GelatoConnect skickas tillbaka till dina kunder eller deras system:
Svarsmallar: Bygger upp API-svar när en order skickas in eller avbryts
Händelsenotiser: Skapar standardiserade meddelanden för uppdateringar av orderstatus
Postbacks: Formaterar data som skickas till externa system när orderstatus ändras
Alla mallar använder Jinja2-templatspråket, som ger dig smarta verktyg för att omvandla data, styra innehåll och skapa dynamiska lösningar.
Typer av mallar du kan skapa
GelatoConnect stöder flera olika malltyper för olika dataflödesriktningar:
Inkommande datamall (Kund → GelatoConnect)
Beställningsförfrågan: Omvandlar kundens beställningsdata till GelatoConnects format
Avbryt begäran: Omvandlar kunders avbokningsbegäran till GelatoConnects format
Utgående datamall (GelatoConnect → Kund)
Skicka svar: Formaterar svar som skickas tillbaka efter orderläggning
Avbryt svar: Formaterar svar som skickas tillbaka efter att en avbokning har begärts
Webhook: Skapar JSON-nyttolaster för aviseringar till externa system vid ändringar av orderstatus
E-post: Skapar e-postnotiser för olika orderhändelser
Riktningen på dataflödet är avgörande att förstå när du skapar mallar, eftersom det avgör vilken data som är tillgänglig och hur den bör struktureras.
Steg-för-steg-guide för att skapa en mall
1. Gå till avsnittet för mallar
Logga in på ditt GelatoConnect-konto
Gå till Arbetsflöde > Orderintag > Mallar
Klicka på Lägg till mall för att börja skapa en ny mall
2. Välj vilken typ av mall du vill ha
Välj vilken typ av mall du vill skapa:
För API-integrationer behöver du vanligtvis mallar för Order Submit Request, Submit Response och Cancel Response
För notifikationer, välj Webhook eller E-post
3. Bestäm formatet för mallen
Välj format för din mall:
JSON: Vanligast för API-integrationer och webhooks
XML: Används för vissa äldre system
Vanlig text: Används oftast för e-postmallar
4. Generera en exempelpayload för indata
För att skapa en effektiv mall behöver du förstå vilken data som kommer att finnas tillgänglig:
Klicka på knappen Skapa mall
Välj Lägg till exempeldata för att lägga in testdata
Välj lämplig händelsetyp från rullgardinsmenyn:
Order mottagen
Beställningen misslyckades
Beställning annullerad
Ordern har kommit tillbaka
Ordern är klar
Beställningen är framme
Beställning skickad
Beställning på väg
Systemet kommer att fylla i en exempellast med typisk data för den händelsen, som du kan använda som referens när du skapar din mall.
5. Skapa din mallkarta
I Template Mapper bestämmer du hur data ska omvandlas mellan olika format:
I avsnittet Template Mapper skriver du din mall med Jinja2-syntax
Hämta referensdata från indata med dubbla måsvingar:
####{{ variable }}
Lägg till formateringsfilter med pipe-symbolen:
####{{ variable|js }}
(filtretjs
gör strängar säkra för JSON)Använd kontrollstrukturer som
{% if %}
,{% for %}
och{% set %}
för villkorsstyrd logik och loopar
Överväganden för mallriktning
Innehållet i din mall kommer att variera beroende på om du hanterar inkommande eller utgående data:
För inkommande datamall (Kund → GelatoConnect):
Fokusera på att extrahera data från kundspecifika format
Matcha egna fältnamn med GelatoConnects standardfältnamn
Kolla och anpassa data så att det funkar med GelatoConnects krav
Ta hand om särskilda format eller omvandlingar av data
För utgående datamallar (GelatoConnect → kund):
Bygg upp datan så att den passar kundens system
Ta med alla obligatoriska fält för kundens integration
Anpassa datum, valutavärden och annan data efter vad kunden föredrar
Lägg till kundunika ID:n eller referenser
Exempel: mall för mottagen order Webhook
Här är ett exempel på en mall för en "Order Received" Webhook:
{ "event": "Beställning mottagen", "orderId": "####{{ orderId }}", "orderReferenceId": "####{{ orderReferenceId }}", "timestamp": "####{{ created }}", "status": "####{{ fulfillmentStatus }}", "items": [ {% for item in items %} { "itemReferenceId": "####{{ item.itemReferenceId }}", "status": "####{{ item.fulfillmentStatus }}" }{% if not loop.last %},{% endif %} {% endfor %} ], "message": "Vi har tagit emot din beställning."}
Den här mallen skapar en JSON-struktur med orderdetaljer och går igenom alla produkter i beställningen.
6. Skapa och dubbelkolla mallen
När du har skapat din mall:
Klicka på Render-knappen för att sätta ihop mallen
Kolla igenom resultatet i förhandsvisningen
Kontrollera att all data är korrekt formaterad och att det inte finns några syntaxfel
Kolla om något saknas eller är fel ifyllt
7. Testa din mall
Att testa är superviktigt för att din mall ska funka som den ska:
Ge ditt test ett namn i avsnittet Testmall
Klicka på Kör test för att köra mallen mot exempeldata
Kolla att Status visar Godkänd
Kolla igenom resultatet och se till att det känns rätt för dig
8. Spara din mall
När du känner dig nöjd med mallen:
Ge din mall ett namn som säger vad den handlar om
Klicka på Lägg till mall eller Spara ändringar för att spara
Mallen är nu redo att användas i triggers och arbetsflöden
Så funkar mallar ihop med triggers
Mallar används oftast tillsammans med triggers för att automatiskt skicka notiser när något särskilt händer:
1. Skapa en trigger
Gå till Workflow > Order Intake > Triggers
Klicka på Lägg till utlösare
Välj vilken kund det här trigget gäller för
Ge ditt trigger ett namn (t.ex. "Order mottagen-notis")
Välj det händelse som ska starta triggern (t.ex. "Order received")
2. Ställ in leveranssätt
Välj hur du vill få dina notiser:
URL: Skicka en webhook till ett externt system
Ange webbadressen dit du vill komma
Välj POST- eller GET-metod
Välj JSON- eller XML-format
Ställ in alternativ för att försöka igen om du vill
E-post: Skicka ett mejlmeddelande
Skriv in mottagarens e-postadresser
Lägg till en ämnesrad
Ange avsändarens namn och adress
3. Välj din mall
Välj den mall du skapade tidigare i rullgardinsmenyn Mall
Om ingen mall finns kan du skapa en direkt i utlösarkonfigurationen med samma gränssnitt som beskrivs ovan
Skapa mallar direkt från triggers
För att göra det enkelt kan du också skapa mallar samtidigt som du ställer in triggers:
När du skapar en trigger, klicka på Skapa mall istället för att välja en befintlig mall.
Välj vilket format du vill använda för mallen (JSON, XML eller vanlig text)
Använd mallredigeraren för att skapa din mall enligt beskrivningen ovan
Spara mallen, så väljs den automatiskt för denna utlösare
Detta tillvägagångssätt är användbart för att snabbt skapa mallar när du redan konfigurerar en utlösare.
Koppla mallar till API-endpoints
När du skickar in beställningar via API behöver du ofta omvandla data mellan ditt format och GelatoConnects format. Mallar sköter den här omvandlingen, men du måste själv koppla din mall till API-endpointen för att den ska användas.
Hur du länkar en mall till en slutpunkt för orderinlämning:
Gå till din lista med kopplingar och klicka på länken Redigera bredvid submit order-endpunkten.
På sidan för slutpunktskonfiguration, hitta avsnittet Slutpunktsmall
Välj din mall för orderinlämning i rullgardinsmenyn
Klicka på knappen Ange slutpunkt uppe till höger på sidan
Klicka på Spara ändringar uppe till höger för att spara dina inställningar
När du har gjort klart de här stegen kommer alla order som skickas till den här endpointen att använda din mall för att omvandla datan innan den behandlas. På så sätt ser du till att ditt systems format omvandlas rätt till GelatoConnects förväntade format.
Utan den här inställningen kommer din mall inte att användas, även om den finns och är rätt utformad. Det kan göra att beställningar inte går igenom om ditt dataformat inte stämmer exakt med GelatoConnects krav.
Avancerade malltekniker
Så funkar uppslag
Uppslagningar är särskilt värdefulla för dubbelriktad datamappning mellan system. De fungerar olika beroende på mallens riktning:
För inkommande mallar (kund → GelatoConnect):
Matcha kundunika värden med GelatoConnects standardvärden:
{% set shipMethod = lookups({"shipping_code": order.shipping.method}, strict=False, default="normal") %} "shipmentMethodUid": ####{{ shipMethod|js }},
För utgående mallar (GelatoConnect → kund):
Gör om GelatoConnects interna värden till det format kunderna förväntar sig:
{% set customerShippingCode = lookups({"gelatoShipMethod": shipment.shipmentMethodUid}, strict=False, default=shipment.shipmentMethodUid) %} "shipping_method": ####{{ customerShippingCode|js }},
Villkorad logik
Använd villkor för att inkludera eller formatera data på olika sätt beroende på omständigheterna:
{% if item.fulfillmentStatus == \"shipped\" %} \"trackingNumber\": \"####{{ item.trackingCode }}\", "trackingUrl": "####{{ item.trackingUrl }}",{% endif %}
Variabeltilldelning
Skapa variabler för att göra det enklare att hantera krångliga uttryck:
{% set fullName = customer.firstName + " " + customer.lastName %} "recipientName": "####{{ fullName }}",
Loopar med kluriga objekt
Navigera i nästlade datastrukturer:
"artiklar": [ {% for item in items %} { \"sku\": \"####{{ item.sku }}\", \"quantity\": ####{{ item.quantity }}, \"options\": [ {% for option in item.options %} { \"name\": \"####{{ option.name }}\", "value": "####{{ option.value }}" }{% if not loop.last %},{% endif %} {% endfor %} ] }{% if not loop.last %},{% endif %} {% endfor %}]
Bästa tipsen för mallar
Namngivning utifrån riktning
Använd tydliga och beskrivande namn som visar både syftet och åt vilket håll informationen går
För inkommande mallar: Lägg till prefix som "IN_" eller suffix som "_Request"
För utgående mallar: Använd prefix som \"OUT_\" eller suffix som \"_Response\" eller \"_Notification\"
Ta med kundens namn för mallar som är anpassade för varje kund
Använd samma namnstruktur så blir det lätt att hitta dina mallar
Felsökning
Sätt standardvärden så slipper du problem med tomma värden
Använd filtret
default
för att visa något när värden saknas:####{{ variable|default('N/A') }}
Använd
try/except
-block när du har kod som kan ställa till problem
Underhåll
Lägg till kommentarer för att förklara kluriga delar:
{# Detta tar hand om ett speciellt fall för internationella beställningar #}
Håll mallarna flexibla och anpassade för olika behov
Uppdatera mallarna när datan eller behoven förändras
Testar
Testa med olika typer av data, även de ovanliga situationerna
Testa mallarna med riktig produktionsdata när du kan
Skapa omfattande tester för kritiska mallar
Felsökning av mallproblem
Vanliga problem och smarta lösningar
Problem | Möjlig orsak | Lösning |
Syntaxfel | Felaktigt matchade parenteser eller citattecken | Dubbelkolla mallens syntax – se till att alla öppningstaggar har matchande stängningstaggar. |
Saknade data | Refererar till fält som inte finns | Dubbelkolla att fältnamnen stämmer med det du skickar in, och lägg till standardvärden för de fält som är valfria. |
Formateringsproblem | Felaktig filteranvändning | Dubbelkolla att du använder filter som |
Mallen har inte använts | Mall inte kopplad till utlösare | Verifiera triggerinställningar och mallval |
Fel vid åtkomst av inbäddad data | Fel sökväg till underliggande egenskaper | Kolla hur datan är uppbyggd och ändra vägarna till egenskaperna så att de passar |
Problem med att matcha fält | Felaktiga fältnamn för inkommande/utgående data | När du tar emot mallar, dubbelkolla vad kundfälten heter. När du skickar ut mallar, se till att svaret har rätt format. |
Problem med dataomvandling | Oförenliga dataformat | Säkerställ korrekt datatypskonvertering mellan system (datum, siffror, etc.) |
Felsökningstips
Använd knappen Render ofta när du utvecklar, så upptäcker du fel i tid.
Lägg till tillfällig felsökningsutskrift för att kolla vad variablerna innehåller
Dubbelkolla att du inte har råkat stava fel på fältnamnen – det är lätt hänt och ofta där det blir fel.
Kom ihåg att Jinja2 skiljer på stora och små bokstäver när du använder variabler