Vai al contenuto principale

[Gestione degli ordini - GCW] Creare template per la gestione degli ordini

T
Scritto da Toby Dawson
Aggiornato oltre 3 settimane fa

I template sono elementi fondamentali in GelatoConnect: gestiscono sia i flussi di dati in entrata che quelli in uscita. Trasformano i dati dei clienti in arrivo in formati che il tuo flusso di lavoro può elaborare e adattano i dati in uscita da GelatoConnect per soddisfare le esigenze dei sistemi dei tuoi clienti. Questa guida ti accompagnerà nella creazione, nel test e nell’implementazione dei template per entrambe le direzioni dello scambio dati nei tuoi flussi di gestione ordini.

Capire i template in GelatoConnect

I template in GelatoConnect sono come progetti guida che definiscono come i dati devono essere organizzati, gestiti e presentati. Si occupano di due flussi di dati fondamentali:

Template dati in arrivo

Questi modelli trasformano i dati provenienti dai sistemi dei tuoi clienti in formati che GelatoConnect può elaborare:

  • Richiesta di invio ordine: trasforma i dati dell’ordine del cliente nel formato interno di GelatoConnect

  • Annulla richiesta: prepara le richieste di annullamento in modo che siano comprese da GelatoConnect

Template dati in uscita

Questi modelli formattano i dati inviati da GelatoConnect ai tuoi clienti o ai loro sistemi:

  • Formattazione delle risposte: organizza le risposte API per gli invii o le cancellazioni degli ordini.

  • Notifiche sugli eventi: crea messaggi standardizzati per aggiornamenti sullo stato degli ordini

  • Postbacks: definisce il formato dei dati inviati a sistemi esterni quando lo stato di un ordine cambia

Tutti i template usano il linguaggio di template Jinja2, che offre strumenti potenti per trasformare i dati, gestire logiche condizionali e creare contenuti dinamici.

Tipi di template che puoi creare

GelatoConnect supporta diversi tipi di template per gestire vari flussi di dati:

Template dati in arrivo (Cliente → GelatoConnect)

  • Richiesta di invio ordine: trasforma i dati dell’ordine del cliente nel formato di GelatoConnect

  • Annulla richiesta: trasforma le richieste di annullamento dei clienti nel formato di GelatoConnect.

Modelli di dati in uscita (GelatoConnect → cliente)

  • Invia risposta: formatta le risposte inviate dopo l'invio dell'ordine

  • Annulla risposta: mostra come vengono formattate le risposte inviate dopo una richiesta di annullamento

  • Webhook: crea payload JSON per notifiche a sistemi esterni quando cambia lo stato di un ordine

  • Email: Crea notifiche email per diversi eventi relativi agli ordini

Capire la direzione in cui scorrono i dati è fondamentale quando crei template, perché ti permette di sapere quali dati hai a disposizione e come organizzarli al meglio.

Guida pratica per creare un template

1. Vai alla sezione Template

  1. Accedi al tuo account GelatoConnect

  2. Vai su Workflow > Order Intake > Templates

  3. Fai clic sul pulsante Aggiungi modello per iniziare a creare un nuovo modello

2. Scegli il tipo di template

Seleziona il tipo di template che vuoi creare:

  • Per le integrazioni API, di solito ti serviranno i template Order Submit Request, Submit Response e Cancel Response.

  • Per le notifiche, scegli Webhook o Email

3. Definisci il formato del template

Scegli il formato per il tuo template:

  • JSON: il formato più usato per integrazioni API e webhook

  • XML: usato in alcuni sistemi più datati

  • Testo semplice: usato di solito nei modelli di email

4. Genera un esempio di payload in input

Per creare un template efficace, è importante capire quali dati saranno disponibili:

  1. Clicca sul pulsante Genera modello

  2. Seleziona Aggiungi payload di input di esempio per inserire dati di prova

  3. Scegli il tipo di evento giusto dal menu a tendina:

    • Ordine ricevuto

    • Ordine non riuscito

    • Ordine annullato

    • Ordine restituito

    • Ordine prodotto

    • Ordine consegnato

    • Ordine spedito

    • Ordine in viaggio

Il sistema compilerà un esempio di payload con dati tipici per quell’evento, che puoi usare come riferimento quando crei il tuo template.

5. Crea il tuo Template Mapper

Il Template Mapper è il luogo dove decidi come i dati vengono trasformati tra diversi formati:

  1. Nella sezione Template Mapper, scrivi il tuo template usando la sintassi Jinja2

  2. Usa i dati di riferimento dal payload di input usando le doppie parentesi graffe: ####{{ variable }}

  3. Aggiungi filtri di formattazione usando il simbolo della barra verticale: ####{{ variable|js }} (il filtro js adatta le stringhe per JSON)

  4. Usa strutture di controllo come {% if %}, {% for %} e {% set %} per gestire condizioni e cicli

Cosa considerare quando scegli la direzione del template

Il contenuto del tuo modello cambierà a seconda che tu stia gestendo dati in entrata o in uscita:

Per i template dati in ingresso (cliente → GelatoConnect):

  • Concentrati sull’estrazione dei dati da formati specifici per ogni cliente

  • Abbina i nomi dei campi personalizzati ai nomi standard dei campi di GelatoConnect

  • Verifica e trasforma i dati per soddisfare i requisiti di GelatoConnect

  • Gestisci eventuali esigenze particolari di formattazione o conversione dei dati

Per i template dati in uscita (GelatoConnect → Cliente):

  • Organizza i dati in base a come il sistema del cliente si aspetta di riceverli

  • Includi tutti i campi necessari per l'integrazione del cliente

  • Formatta date, valori in valuta e altri dati in base alle preferenze del cliente

  • Aggiungi eventuali identificativi o riferimenti specifici del cliente

Esempio: modello di Webhook per ordine ricevuto

Ecco un esempio di template per un webhook "Ordine ricevuto":

{ "event": "Ordine ricevuto", "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": "Abbiamo ricevuto il tuo ordine."}

Questo modello crea una struttura JSON con i dettagli dell’ordine e scorre tutti gli articoli presenti nell’ordine.

6. Visualizza e controlla il template

Dopo che hai creato il tuo modello:

  1. Fai clic sul pulsante Render per compilare il modello

  2. Controlla il risultato nel riquadro di anteprima

  3. Verifica che tutti i dati siano formattati correttamente e che non ci siano errori di sintassi

  4. Controlla se ci sono campi mancanti o compilati in modo errato

7. Metti alla prova il tuo template

Testare è fondamentale per assicurarti che il tuo template funzioni come si deve:

  1. Dai un nome al tuo test nella sezione Test Template

  2. Fai clic su Esegui test per provare il modello con i dati di esempio

  3. Verifica che lo Status sia indicato come Passed

  4. Controlla il risultato per vedere se corrisponde a quello che ti aspettavi

8. Salva il tuo modello

Quando sei soddisfatto del template:

  1. Dai al tuo template un nome che lo descriva bene

  2. Fai clic su Aggiungi modello o Salva modifiche per salvare.

  3. Il modello sarà ora disponibile per essere usato nei trigger e nelle configurazioni dei workflow.

Usare i template con i trigger

I template vengono usati soprattutto insieme ai trigger per automatizzare le notifiche quando succedono eventi specifici:

1. Crea un trigger

  1. Vai su Workflow > Order Intake > Triggers

  2. Fai clic su Aggiungi trigger

  3. Seleziona il cliente a cui si applica questo trigger

  4. Dai un nome al tuo trigger (ad esempio: "Notifica ordine ricevuto")

  5. Seleziona l’evento che farà scattare il trigger (ad esempio: "Ordine ricevuto")

2. Configura il metodo di consegna

Scegli come vuoi ricevere le notifiche:

  • URL: invia un Webhook a un sistema esterno

    • Specifica l'URL di destinazione

    • Scegli il metodo POST o GET

    • Scegli il formato JSON o XML

    • Configura le opzioni di ripetizione se vuoi

  • Email: Invia una notifica via email

    • Inserisci gli indirizzi email dei destinatari

    • Aggiungi un oggetto

    • Specifica nome e indirizzo del mittente

3. Scegli il tuo modello

  1. Dal menu a discesa Template, scegli il template che hai creato prima

  2. Se non esiste un modello, puoi crearne uno direttamente nella configurazione del trigger usando la stessa interfaccia descritta sopra.

Crea template direttamente dai trigger

Per comodità, puoi anche creare dei modelli mentre imposti i trigger:

  1. Quando crei un trigger, invece di scegliere un modello già esistente, clicca su Crea modello.

  2. Scegli il formato del template: JSON, XML o testo semplice

  3. Usa l’editor dei modelli per creare il tuo modello come descritto sopra

  4. Salva il modello; verrà selezionato automaticamente per questo trigger.

Questo metodo è perfetto per creare un template al volo mentre stai già impostando un trigger.

Collegare i template agli endpoint API

Quando invii ordini tramite API, spesso dovrai trasformare i dati dal tuo formato a quello di GelatoConnect. I template si occupano di questa trasformazione, ma devi collegare esplicitamente il tuo template all'endpoint API perché venga applicato.

Come collegare un template a un endpoint di invio ordine:

  1. Vai alla tua lista di connettori e clicca sul collegamento Modifica accanto all'endpoint di invio ordine.

  2. Nella pagina di configurazione dell'endpoint, trova la sezione Modello endpoint

  3. Seleziona il tuo modello di invio ordine dal menu a tendina

  4. Fai clic sul pulsante Imposta endpoint in alto a destra nella pagina

  5. Fai clic su Salva modifiche in alto a destra per applicare la tua configurazione

Dopo aver completato questi passaggi, tutte le richieste d’ordine inviate a questo endpoint useranno il tuo template per trasformare i dati prima dell’elaborazione. Così il formato del tuo sistema verrà convertito correttamente nel formato previsto da GelatoConnect.

Senza questa configurazione, il tuo template non verrà applicato anche se esiste ed è stato progettato correttamente; questo può causare errori nella validazione degli ordini se il formato dei tuoi dati non corrisponde esattamente ai requisiti di GelatoConnect.

Tecniche avanzate per template

Come usare le ricerche

Le lookups sono particolarmente utili per mappare i dati in entrambe le direzioni tra i sistemi. Funzionano in modo diverso a seconda della direzione del template:

Per i template in arrivo (cliente → GelatoConnect):

Collega i valori specifici dei clienti ai valori standardizzati di GelatoConnect:

{% set shipMethod = lookups({"shipping_code": order.shipping.method}, strict=False, default="normale") %} "shipmentMethodUid": ####{{ shipMethod|js }},

Per i template in uscita (GelatoConnect → cliente):

Trasforma i valori interni di GelatoConnect nei formati che i clienti si aspettano:

{% set customerShippingCode = lookups({"gelatoShipMethod": shipment.shipmentMethodUid}, strict=False, default=shipment.shipmentMethodUid) %} "shipping_method": ####{{ customerShippingCode|js }},

Logica condizionale

Usa le condizioni per includere o formattare i dati in modo diverso a seconda della situazione:

{% if item.fulfillmentStatus == "shipped" %} "trackingNumber": "####{{ item.trackingCode }}", "trackingUrl": "####{{ item.trackingUrl }}",{% endif %}

Assegnazione di variabile

Crea variabili per rendere più semplici le espressioni complesse:

{% set fullName = customer.firstName + " " + customer.lastName %} "recipientName": "####{{ fullName }}",

Cicli con oggetti complessi

Esplora strutture dati annidate:

"items": [ {% 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 %}]

Le migliori pratiche per i template

Convenzioni di denominazione basate sulla direzione

  • Scegli nomi chiari e descrittivi che mostrino sia lo scopo che la direzione del flusso dei dati

  • Per i template in arrivo: aggiungi prefissi come "IN_" o suffissi come "_Request"

  • Per i template in uscita: usa prefissi come "OUT_" o suffissi come "_Response" o "_Notification"

  • Inserisci il nome del cliente per i template personalizzati

  • Usa nomi coerenti per trovare facilmente i tuoi modelli

Gestione degli errori

  • Imposta valori predefiniti per evitare errori dovuti a riferimenti nulli

  • Usa il filtro default per i valori mancanti: ####{{ variable|default('N/A') }}

  • Usa i blocchi try/except quando il codice potrebbe creare problemi

Manutenzione

  • Aggiungi commenti per spiegare la logica complessa: {# Questo gestisce il caso particolare degli ordini internazionali #}

  • Mantieni i template modulari e concentrati su scopi specifici

  • Aggiorna i modelli quando cambiano le strutture dei dati o le esigenze

Test in corso

  • Metti alla prova diversi scenari di dati, anche quelli più particolari

  • Verifica i template con dati di produzione reali quando puoi

  • Crea test completi per i template fondamentali

Risolvere i problemi con i modelli

Problemi comuni e soluzioni pratiche

Problema

Possibile motivo

Soluzione

Errore di sintassi

Parentesi o virgolette non corrispondenti

Controlla bene la sintassi del template: assicurati che tutti i tag di apertura abbiano il loro tag di chiusura corrispondente.

Dati mancanti

Fare riferimento a campi che non esistono

Controlla che i nomi dei campi corrispondano ai dati ricevuti; aggiungi valori predefiniti per i campi opzionali

Problemi di formattazione

Filtro usato nel modo sbagliato

Assicurati di usare correttamente i filtri come js, json o xml

Template non applicato

Template non collegato al trigger

Verifica la configurazione del trigger e la selezione del template

Errori nell'accesso ai dati annidati

Percorso errato verso le proprietà annidate

Controlla la struttura dei dati e adatta i percorsi delle proprietà di conseguenza

Errori nell'associazione dei campi

Nomi dei campi errati per i dati in entrata o in uscita

Per i template in entrata, controlla i nomi dei campi cliente; per quelli in uscita, verifica il formato di risposta previsto.

Problemi nella trasformazione dei dati

Formati di dati non compatibili

Assicurati che i dati vengano convertiti correttamente tra i sistemi (date, numeri, ecc.).

Consigli per risolvere i problemi

  • Usa spesso il pulsante Render durante lo sviluppo: così puoi individuare subito eventuali errori.

  • Aggiungi un output di debug temporaneo per controllare i valori delle variabili

  • Controlla che non ci siano errori di battitura nei nomi dei campi; spesso sono la causa principale dei problemi.

  • Ricorda che Jinja2 fa distinzione tra maiuscole e minuscole quando usi le variabili

Hai ricevuto la risposta alla tua domanda?