Correspondance automatique personnalisée
Si la stratégie de correspondance automatique par défaut (correspondance automatique prête à l’emploi) n’est pas alignée avec les besoins spécifiques de votre entreprise, sélectionnez l’option Correspondance personnalisée . Cette option prend en charge l’utilisation de Adobe Developer App Builder pour développer une application de correspondance personnalisée qui gère une logique de correspondance complexe, ou des ressources provenant d’un système tiers qui ne peut pas renseigner de métadonnées dans AEM Assets.
Configuration de la correspondance automatique personnalisée
-
Dans l’Administration Commerce, accédez à Store > Configuration > ADOBE SERVICES > AEM Assets Integration.
-
Sélectionnez Custom Matcher comme règle correspondante.
-
Lorsque vous sélectionnez cette règle de correspondance, Admin affiche des champs supplémentaires pour configurer les points d’entrée et les paramètres d’authentification nécessaires à la logique de correspondance personnalisée.
workspace.json
Le champ Adobe I/O Workspace Configuration permet de configurer votre correspondant personnalisé de manière simplifiée en important votre fichier de configuration de workspace.json App Builder.
Vous pouvez télécharger le fichier workspace.json à partir de Adobe Developer Console. Le fichier contient toutes les informations d’identification et de configuration pour votre espace de travail App Builder.
workspace.json| code language-json |
|---|
|
- Effectuez un glisser-déposer de votre fichier
workspace.jsonde votre projet App Builder vers le champ Adobe I/O Workspace Configuration . Vous pouvez également cliquer sur pour parcourir et sélectionner le fichier.
-
Le système effectue automatiquement les opérations suivantes :
- Valide la structure JSON.
- Extrait et renseigne les informations d’identification OAuth
- Récupère les actions d’exécution disponibles pour l’espace de travail
- Remplit les options de liste déroulante pour les champs Product to Asset URL et Asset to Product URL
-
Sélectionnez les actions d’exécution appropriées dans les menus déroulants de chaque flux.
-
Cliquez sur Save Config.
Points d’entrée de l’API de correspondance personnalisés
Lorsque vous créez une application de correspondance personnalisée à l’aide d’App Builder, l’application doit exposer les points d’entrée suivants :
- Ressource App Builder vers l’URL du produit point d’entrée
- Point d’entrée du produit App Builder vers l’URL de la ressource
Ressource App Builder vers le point d’entrée de l’URL du produit
Ce point d’entrée récupère la liste des SKU associés à une ressource donnée :
Exemple d’utilisation
const { Core } = require('@adobe/aio-sdk')
async function main(params) {
// Build your own matching logic here to return the products that map to the assetId
// var productMatches = [];
// params.assetId
// params.eventData.assetMetadata['commerce:isCommerce']
// params.eventData.assetMetadata['commerce:skus'][i]
// params.eventData.assetMetadata['commerce:roles']
// params.eventData.assetMetadata['commerce:positions'][i]
// ...
// End of your matching logic
// Set skip to true if the mapping hasn't changed
const skipSync = false;
return {
statusCode: 200,
body: {
asset_id: params.assetId,
product_matches: [
{
product_sku: "<YOUR-SKU-HERE>",
asset_roles: ["thumbnail", "image", "swatch_image", "small_image"],
asset_position: 1
}
],
skip: skipSync
}
};
}
exports.main = main;
Requête
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/asset-to-product
assetIdeventDataRéponse
{
"asset_id": "{ASSET_ID}",
"product_matches": [
{
"product_sku": "{PRODUCT_SKU_1}",
"asset_roles": ["thumbnail", "image"]
},
{
"product_sku": "{PRODUCT_SKU_2}",
"asset_roles": ["thumbnail"]
}
],
"skip": false
}
asset_idproduct_matchesskiptrue, le moteur de règle ignore la synchronisation pour cette ressource (aucune mise à jour du mappage de produits). Lorsqu’il est false ou omis, le traitement normal s’exécute. Voir Ignorer le traitement de la synchronisation.Produit App Builder vers le point d’entrée de l’URL de la ressource
Ce point d’entrée récupère la liste des ressources associées à un SKU donné :
Exemple d’utilisation
const { Core } = require('@adobe/aio-sdk')
async function main(params) {
// return asset matches for a product
// Build your own matching logic here to return the assets that map to the productSku
// var assetMatches = [];
// params.productSku
// ...
// End of your matching logic
// Set skip to true if the mapping hasn't changed
const skipSync = false;
return {
statusCode: 200,
body: {
product_sku: params.productSku,
asset_matches: [
{
asset_id: "<YOUR-ASSET-ID-HERE>", // urn:aaid:aem:1aa1d5i2-17h8-40a7-a228-e3ur588deee1
asset_roles: ["thumbnail", "image", "swatch_image", "small_image"],
asset_format: "image", // can be "image" or "video"
asset_position: 1
}
],
skip: skipSync
}
};
}
exports.main = main;
Requête
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/product-to-asset
productSKUeventDataRéponse
{
"product_sku": "{PRODUCT_SKU}",
"asset_matches": [
{
"asset_id": "{ASSET_ID_1}",
"asset_roles": ["thumbnail", "image"],
"asset_position": 1,
"asset_format": "image"
},
{
"asset_id": "{ASSET_ID_2}",
"asset_roles": ["thumbnail"],
"asset_position": 2,
"asset_format": "image"
}
],
"skip": false
}
product_skuasset_matchesskiptrue, le moteur de règles ignore la synchronisation pour ce produit (aucune mise à jour du mappage des ressources). Lorsqu’il est false ou omis, le traitement normal s’exécute. Voir Ignorer le traitement de la synchronisation.Le paramètre asset_matches contient les attributs suivants :
asset_idasset_rolesthumbnail, image, small_image et swatch_image.asset_formatimage et video.asset_positionIgnorer le traitement de la synchronisation
Le paramètre skip permet à votre mappeur personnalisé de contourner le traitement de synchronisation pour des ressources ou des produits spécifiques.
Lorsque votre application App Builder renvoie des "skip": true dans la réponse, le moteur de règle n’envoie pas de requêtes de mise à jour ou de suppression d’API à Commerce pour cette ressource ou ce produit. Cette optimisation réduit les appels d’API inutiles et améliore les performances.