Anpassad automatisk matchning
Om standardstrategin för automatisk matchning (OTB automatisk matchning) inte är anpassad efter dina specifika affärskrav väljer du det anpassade matchningsalternativet. Det här alternativet stöder användningen av Adobe Developer App Builder för att utveckla ett anpassat matchningsprogram som hanterar komplex matchningslogik, eller resurser från ett tredjepartssystem som inte kan fylla i metadata i AEM Assets.
Konfigurera anpassad automatisk matchning
-
Gå till Store > Konfiguration > ADOBE SERVICES > AEM Assets Integration i Commerce Admin.
-
Välj Custom Matcher som matchningsregel.
-
När du väljer den här matchande regeln visar Admin ytterligare fält för att konfigurera slutpunkterna och de nödvändiga autentiseringsparametrarna för den anpassade matchningslogiken.
workspace.json
I fältet Adobe I/O Workspace Configuration finns ett smidigt sätt att konfigurera din anpassade matchare genom att importera konfigurationsfilen för App Builder workspace.json.
Du kan hämta filen workspace.json från Adobe Developer Console. Filen innehåller alla autentiseringsuppgifter och konfigurationsinformation för din App Builder-arbetsyta.
workspace.json| code language-json |
|---|
|
- Dra och släpp din
workspace.json-fil från ditt App Builder-projekt till fältet Adobe I/O Workspace Configuration. Du kan också klicka för att bläddra och markera filen.
-
Systemet automatiskt:
- Validerar JSON-strukturen
- Extraherar och fyller i OAuth-autentiseringsuppgifter
- Hämtar tillgängliga körningsåtgärder för arbetsytan
- Fyller i listrutealternativ för fälten Product to Asset URL och Asset to Product URL
-
Välj lämpliga körningsåtgärder i listrutorna för varje flöde.
-
Klicka på Save Config.
API-slutpunkter för anpassad matchning
När du skapar ett anpassat matchningsprogram med App Builder måste följande slutpunkter visas:
- App Builder-resurs till produkt-URL-slutpunkt
- App Builder-produkt till resurs-URL slutpunkt
App Builder-resurs till produkt-URL-slutpunkt
Den här slutpunkten hämtar listan med SKU:er som är associerade med en given resurs:
Exempel på användning
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;
Begäran
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/asset-to-product
assetIdeventDataSvar
{
"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 inträffar, hoppar regelmotorn över synkronisering för den här resursen (ingen produktmappningsuppdatering). När false eller utelämnas körs normal bearbetning. Se Hoppa över synkroniseringsbearbetning.App Builder product to asset URL endpoint
Den här slutpunkten hämtar listan över resurser som är associerade med en given SKU:
Exempel på användning
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;
Begäran
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/product-to-asset
productSKUeventDataSvar
{
"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 inträffar, hoppar regelmotorn över synkronisering för den här produkten (ingen resursmappningsuppdatering). När false eller utelämnas körs normal bearbetning. Se Hoppa över synkroniseringsbearbetning.Parametern asset_matches innehåller följande attribut:
asset_idasset_rolesthumbnail, image, small_image och swatch_image.asset_formatimage och video.asset_positionHoppa över synkroniseringsbearbetning
Parametern skip gör att din anpassade matchare kan kringgå synkroniseringsbearbetning för specifika resurser eller produkter.
När ditt App Builder-program returnerar "skip": true i svaret skickar regelmotorn inte uppdateringar eller tar bort API-begäranden till Commerce för den resursen eller produkten. Optimeringen minskar onödiga API-anrop och förbättrar prestandan.