Corrispondenza automatica personalizzata
Se la strategia di corrispondenza automatica predefinita (Corrispondenza automatica OOTB) non è allineata ai requisiti aziendali specifici, selezionare l'opzione di corrispondenza personalizzata. Questa opzione supporta l'utilizzo di Adobe Developer App Builder per sviluppare un'applicazione di corrispondenza personalizzata che gestisca logiche di corrispondenza complesse o risorse provenienti da un sistema di terze parti che non possono popolare i metadati in AEM Assets.
Configurare la corrispondenza automatica personalizzata
-
Dall'amministratore di Commerce, passare a Store > Configurazione > ADOBE SERVICES > AEM Assets Integration.
-
Selezionare Custom Matcher come regola corrispondente.
-
Quando selezioni questa regola corrispondente, l'amministratore visualizza campi aggiuntivi per configurare gli endpoint e i parametri di autenticazione necessari per la logica di corrispondenza personalizzata.
workspace.json
Il campo Adobe I/O Workspace Configuration consente di configurare in modo semplificato la corrispondenza personalizzata importando il file di configurazione di App Builder workspace.json.
È possibile scaricare il file workspace.json da Adobe Developer Console. Il file contiene tutte le credenziali e i dettagli di configurazione per l’area di lavoro App Builder.
workspace.json| code language-json |
|---|
|
- Trascina il file
workspace.jsondal progetto App Builder nel campo Adobe I/O Workspace Configuration. In alternativa, è possibile fare clic su per sfogliare e selezionare il file.
-
Il sistema automaticamente:
- Convalida la struttura JSON
- Estrae e popola le credenziali OAuth
- Recupera le azioni di runtime disponibili per l’area di lavoro
- Popola le opzioni a discesa per i campi Product to Asset URL e Asset to Product URL
-
Seleziona le azioni di runtime appropriate dai menu a discesa per ciascun flusso.
-
Fare clic su Save Config.
Endpoint API di corrispondenza personalizzati
Quando si crea un'applicazione di corrispondenza personalizzata utilizzando App Builder, l'applicazione deve esporre i seguenti endpoint:
- Endpoint da risorsa App Builder all'URL prodotto
- Endpoint da prodotto App Builder a URL risorsa
Endpoint da risorsa App Builder a URL prodotto
Questo endpoint recupera l’elenco di SKU associati a una determinata risorsa:
Esempio di utilizzo
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;
Richiesta
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/asset-to-product
assetIdeventDataRisposta
{
"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, il motore di regole ignora la sincronizzazione per questa risorsa (nessun aggiornamento della mappatura del prodotto). Se false o viene omesso, viene eseguita l'elaborazione normale. Vedi Ignora elaborazione sincronizzazione.Endpoint "product to asset URL" di App Builder
Questo endpoint recupera l’elenco delle risorse associate a un determinato SKU:
Esempio di utilizzo
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;
Richiesta
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/product-to-asset
productSKUeventDataRisposta
{
"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, il motore di regole ignora la sincronizzazione per questo prodotto (nessun aggiornamento di mappatura risorse). Se false o viene omesso, viene eseguita l'elaborazione normale. Vedi Ignora elaborazione sincronizzazione.Il parametro asset_matches contiene i seguenti attributi:
asset_idasset_rolesthumbnail, image, small_image e swatch_image.asset_formatimage e video.asset_positionIgnora elaborazione sincronizzazione
Il parametro skip consente alla corrispondenza personalizzata di ignorare l'elaborazione della sincronizzazione per risorse o prodotti specifici.
Quando l'applicazione App Builder restituisce "skip": true nella risposta, il motore di regole non invia richieste di aggiornamento o rimozione API a Commerce per quella risorsa o quel prodotto. Questa ottimizzazione riduce le chiamate API non necessarie e migliora le prestazioni.