Passer au contenu principal

[Order Intake - GCW] Créer des modèles pour la prise de commandes

T
Écrit par Toby Dawson
Mis à jour il y a plus d'un mois

Les modèles sont des éléments clés de GelatoConnect. Ils gèrent les flux de données entrants et sortants. Ils transforment les données reçues de vos clients en formats adaptés à votre workflow, puis mettent en forme les données sortantes de GelatoConnect pour répondre aux besoins des systèmes de vos clients. Ce guide vous accompagne pas à pas pour créer, tester et utiliser des modèles dans les deux sens d’échange de données, au sein de vos workflows de gestion de commandes.

Comprendre les modèles dans GelatoConnect

Les modèles dans GelatoConnect servent de plans qui définissent comment les données doivent être structurées, traitées et présentées. Ils gèrent deux flux de données essentiels :

Modèles de données entrantes

Ces modèles transforment les données provenant des systèmes de vos clients en formats que GelatoConnect peut traiter :

  • Demande de soumission de commande : Convertit les données de commande client au format interne de GelatoConnect

  • Annuler la demande : Formate les demandes d'annulation pour qu'elles soient comprises par GelatoConnect

Modèles de données sortantes

Ces modèles formatent les données envoyées depuis GelatoConnect vers vos clients ou leurs systèmes :

  • Formatage des réponses : Structure les réponses API aux soumissions ou annulations de commandes

  • Notifications d'événements : Crée des messages standardisés pour les mises à jour de statut des commandes

  • Postbacks : Formate les données envoyées aux systèmes externes lorsque les statuts des commandes changent

Tous les modèles utilisent le langage de modélisation Jinja2, qui offre des fonctionnalités puissantes pour la transformation des données, la logique conditionnelle et la génération de contenu dynamique.

Types de modèles que vous pouvez créer

GelatoConnect prend en charge plusieurs types de modèles pour différentes directions de flux de données :

Modèles de données entrantes (Client → GelatoConnect)

  • Demande d'envoi de commande : Transforme les données de commande client au format GelatoConnect

  • Annuler la demande : Transforme les demandes d'annulation des clients au format GelatoConnect

Modèles de données sortantes (GelatoConnect → Client)

  • Envoyer la réponse : Formate les réponses envoyées après la soumission de la commande

  • Annuler la réponse : Formate les réponses envoyées après les demandes d'annulation

  • Webhook : génère des messages JSON pour informer des changements de statut de commande sur des systèmes externes

  • Email : Formate les notifications par email pour différents événements de commande

La direction du flux de données est essentielle à comprendre lors de la création de modèles, car elle détermine quelles données sont disponibles et comment elles doivent être structurées.

Guide étape par étape pour créer un modèle

1. Rendez-vous dans la section Modèles

  1. Connectez-vous à votre compte GelatoConnect

  2. Allez dans Flux de travail > Réception des commandes > Modèles

  3. Cliquez sur le bouton Ajouter un modèle pour commencer à créer un nouveau modèle

2. Choisissez votre type de modèle

Sélectionnez le type de modèle que vous souhaitez créer :

  • Pour les intégrations API, vous aurez généralement besoin des modèles Order Submit Request, Submit Response et Cancel Response.

  • Pour les notifications, sélectionnez Webhook ou Email

3. Définir le format du modèle

Choisissez le format de votre modèle :

  • JSON : Le plus courant pour les intégrations d’API et les Webhook

  • XML : Utilisé pour certains systèmes anciens

  • Texte simple : Généralement utilisé pour les modèles d'e-mails

4. Générer un exemple de données d'entrée

Pour créer un modèle efficace, vous devez comprendre quelles données seront disponibles :

  1. Cliquez sur le bouton Générer le modèle

  2. Sélectionnez Ajouter un exemple de charge utile pour fournir des données de test

  3. Choisissez le type d’événement approprié dans le menu déroulant :

    • Commande reçue

    • Commande échouée

    • Commande annulée

    • Commande retournée

    • Commande fabriquée

    • Commande livrée

    • Commande expédiée

    • Commande en cours de livraison

Le système remplira un exemple de charge utile avec des données typiques pour cet événement, que vous pourrez utiliser comme référence lors de la création de votre modèle.

5. Créez votre Template Mapper

Le Template Mapper est l'endroit où vous définissez comment les données sont transformées entre les formats :

  1. Dans la section Template Mapper, rédigez votre modèle en utilisant la syntaxe Jinja2.

  2. Faites référence aux données de l'entrée en utilisant des doubles accolades : ##{{ variable }}

  3. Ajoutez des filtres de mise en forme avec le symbole pipe : ##{{ variable|js }} (le filtre js adapte les chaînes pour le format JSON)

  4. Utilisez des structures de contrôle comme {% if %}, {% for %}, et {% set %} pour la logique conditionnelle et les boucles

Points à prendre en compte pour l’orientation du modèle

Le contenu de votre modèle variera selon que vous traitez des données entrantes ou sortantes :

Pour les modèles de données entrants (client → GelatoConnect) :

  • Concentrez-vous sur l'extraction de données à partir de formats personnalisés pour chaque client

  • Associez les noms de champs Personnalisé aux noms de champs standard de GelatoConnect

  • Validez et transformez les données pour qu'elles répondent aux exigences de GelatoConnect

  • Gérez tous les besoins particuliers de mise en forme ou de conversion de données

Pour les modèles de données sortantes (GelatoConnect → Client) :

  • Organisez les données selon les attentes du système du client

  • Incluez tous les champs nécessaires pour l’intégration du client

  • Formatez les dates, les montants en devise et d'autres données selon les préférences du client

  • Ajoutez des identifiants ou des références propres à chaque client

Exemple : modèle de Webhook pour commande reçue

Voici un exemple de modèle pour un Webhook « Commande reçue » :

{
"event": "Order Received",
"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": "The order has been received."
}

Ce modèle génère une structure JSON contenant les détails de la commande et parcourt tous les articles de la commande.

6. Rendre et vérifier le modèle

Après avoir créé votre modèle :

  1. Cliquez sur le bouton Render pour générer le modèle.

  2. Vérifiez le résultat dans le volet d’aperçu

  3. Vérifiez que toutes les données sont correctement formatées et qu'il n'y a aucune erreur de syntaxe.

  4. Vérifiez s'il manque des champs ou si certains champs sont mal formatés

7. Testez votre modèle

Les tests sont essentiels pour garantir que votre modèle fonctionne correctement :

  1. Attribuez un nom à votre test dans la section Modèle de test

  2. Cliquez sur Exécuter le test pour appliquer le modèle aux données d’exemple.

  3. Vérifiez que le statut indique réussi

  4. Vérifiez le résultat pour vous assurer qu'il correspond à vos attentes.

8. Enregistrez votre modèle

Une fois que vous êtes satisfait du modèle :

  1. Donnez un nom clair et évocateur à votre modèle

  2. Cliquez sur Ajouter un modèle ou Enregistrer les modifications pour sauvegarder.

  3. Le modèle sera désormais disponible pour être utilisé dans les déclencheurs et les configurations de workflow.

Utiliser des modèles avec des déclencheurs

Les modèles sont le plus souvent utilisés avec des déclencheurs pour automatiser les notifications lorsque certains événements se produisent :

1. Créer un déclencheur

  1. Allez dans Flux de travail > Réception des commandes > Déclencheurs

  2. Cliquez sur Ajouter un déclencheur

  3. Sélectionnez le client auquel ce déclencheur s’applique

  4. Nommez votre déclencheur (par exemple, "Notification de commande reçue")

  5. Sélectionnez l’événement qui déclenchera l’action (par exemple, "Commande reçue")

2. Configurez la méthode de livraison

Choisissez comment vous souhaitez recevoir les notifications :

  • URL : Envoyer un webhook à un système externe

    • Spécifiez l'URL de destination

    • Sélectionnez la méthode POST ou GET

    • Choisissez le format JSON ou XML

    • Configurez les options de nouvelle tentative si vous le souhaitez

  • Email : Envoyez une notification par email

    • Saisissez les adresses e-mail des destinataires

    • Ajoutez un objet

    • Préciser le nom et l'adresse de l'expéditeur

3. Sélectionnez votre modèle

  1. Dans le menu déroulant Modèle, sélectionnez le modèle que vous avez créé précédemment

  2. Si aucun modèle n'existe, vous pouvez en créer un directement dans la configuration du déclencheur en utilisant la même interface décrite ci-dessus

Création de modèles directement à partir de déclencheurs

Pour plus de simplicité, vous pouvez aussi créer des modèles lors de la configuration des déclencheurs :

  1. Lors de la création d'un déclencheur, au lieu de sélectionner un modèle existant, cliquez sur Créer un modèle

  2. Définissez le format du modèle (JSON, XML ou texte brut)

  3. Utilisez l’éditeur de modèles pour créer votre modèle comme expliqué ci-dessus.

  4. Enregistrez le modèle, et il sera automatiquement sélectionné pour ce déclencheur

Cette méthode est pratique pour créer rapidement un modèle lorsque vous configurez déjà un déclencheur.

Lier des modèles aux points de terminaison de l’API

Lorsque vous envoyez des commandes via l’API, il est souvent nécessaire d’adapter les données entre votre format et celui de GelatoConnect. Les modèles facilitent cette transformation, mais vous devez relier explicitement votre modèle au point de terminaison de l’API pour qu’il soit pris en compte.

Comment associer un modèle à un point de soumission de commande :

  1. Accédez à votre liste de connecteurs, puis cliquez sur le lien Modifier à côté du point de terminaison d’envoi de commande.

  2. Sur la page de configuration de l'endpoint, repérez la section Modèle d'endpoint

  3. Sélectionnez votre modèle de soumission de commande dans le menu déroulant

  4. Cliquez sur le bouton Définir l'endpoint en haut à droite de la page

  5. Cliquez sur Enregistrer les modifications en haut à droite pour appliquer votre configuration

Après avoir terminé ces étapes, toutes les commandes envoyées à ce point de terminaison utiliseront votre modèle pour transformer les données avant traitement. Cela garantit que le format de votre système est bien converti dans le format attendu par GelatoConnect.

Sans cette configuration, votre modèle ne sera pas appliqué, même s'il existe et qu'il est correctement conçu. Cela peut entraîner des échecs de validation de commande si le format de vos données ne correspond pas exactement aux exigences de GelatoConnect.

Techniques avancées de modèles

Utiliser les recherches

Les recherches sont particulièrement utiles pour la correspondance de données dans les deux sens entre différents systèmes. Leur fonctionnement varie selon la direction du modèle :

Pour les modèles entrants (client → GelatoConnect) :

Associez les valeurs spécifiques du client aux valeurs standardisées de GelatoConnect :

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

Pour les modèles sortants (GelatoConnect → Client) :

Transformez les valeurs internes de GelatoConnect aux formats attendus par les clients :

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

Logique conditionnelle

Utilisez des conditions pour inclure ou formater des données différemment selon les circonstances :

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

Attribution de variable

Créez des variables pour rendre les expressions complexes plus simples :

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

Boucles avec des objets complexes

Naviguez dans des structures de données imbriquées :

"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 %}
]

Bonnes pratiques pour les modèles

Nommage basé sur la direction

  • Utilisez des noms clairs et descriptifs qui indiquent à la fois l'objectif et la direction du flux de données

  • Pour les modèles entrants : Incluez des préfixes comme « IN_ » ou des suffixes comme « _Request »

  • Pour les modèles sortants : utilisez des préfixes comme "OUT_", ou des suffixes comme "_Response" ou "_Notification".

  • Inclure le nom du client pour les modèles personnalisés

  • Utilisez des modèles de nommage cohérents pour faciliter la recherche de modèles

Gestion des erreurs

  • Définissez des valeurs par défaut pour éviter les références nulles.

  • Utilisez le filtre default pour les valeurs manquantes : ##{{ variable|default('N/A') }}

  • Utilisez des blocs try/except pour les parties du code qui pourraient poser problème

Maintenance

  • Ajoutez des commentaires pour expliquer la logique complexe : {# Ceci gère le cas particulier des commandes internationales #}

  • Gardez les modèles modulaires et axés sur des objectifs spécifiques

  • Mettre à jour les modèles lorsque les structures de données ou les exigences changent

Test

  • Testez avec différents scénarios de données, y compris les cas limites

  • Vérifiez les modèles avec des données de production réelles lorsque c'est possible

  • Créez des tests complets pour les modèles critiques

Résoudre les problèmes de modèles

Problèmes courants et solutions

Problème

Cause possible

Solution

Erreur de syntaxe

Parenthèses ou guillemets mal appariés

Vérifiez attentivement la syntaxe du modèle ; assurez-vous que chaque balise ouvrante a bien sa balise fermante correspondante.

Données manquantes

Référencement de champs qui n'existent pas

Vérifiez les noms des champs par rapport aux données saisies, puis ajoutez des valeurs par défaut pour les champs optionnels.

Problèmes de mise en forme

Utilisation incorrecte du filtre

Vérifiez que vous utilisez correctement les filtres comme js, json ou xml.

Modèle non appliqué

Modèle non associé à un déclencheur

Vérifiez la configuration du déclencheur et la sélection du modèle

Erreurs d'accès aux données imbriquées

Chemin incorrect vers les propriétés imbriquées

Vérifiez la structure des données et ajustez les chemins des propriétés en conséquence.

Erreurs d’association des champs

Noms de champs incorrects pour les données entrantes ou sortantes

Pour les modèles entrants, vérifiez les noms des champs client ; pour les modèles sortants, assurez-vous que le format de réponse attendu est respecté.

Problèmes de transformation des données

Formats de données incompatibles

Assurez-vous de convertir correctement les types de données entre les systèmes (dates, nombres, etc.)

Conseils de débogage

  • Utilisez souvent le bouton Render pendant le développement pour repérer rapidement les erreurs.

  • Ajouter une sortie de débogage temporaire pour examiner les valeurs des variables

  • Vérifiez les fautes de frappe dans les noms des champs, qui sont une source fréquente d'erreurs

  • Gardez à l'esprit que Jinja2 fait la différence entre les majuscules et les minuscules lorsque vous faites référence à des variables.

Avez-vous trouvé la réponse à votre question ?