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.
Salva configurazione asincrona
Se nell’istanza di Commerce è abilitata l’opzione Salva configurazione asincrona, le modifiche alla configurazione vengono messe in coda e applicate da un consumer asincrono anziché essere salvate immediatamente nella stessa richiesta. Per caricare un file workspace.json per la corrispondenza automatica personalizzata in questa modalità, completare i passaggi seguenti in ordine:
-
Verificare che il salvataggio della configurazione asincrona di Commerce sia abilitato.
-
Dall’amministratore, passare a Stores > Settings > Configuration > Adobe Services > AEM Assets Integration.
-
Carica il file App Builder
workspace.jsoncorrente. -
Salva la configurazione.
-
Attendere il completamento dell’elaborazione del salvataggio da parte del consumer di configurazione asincrono.
-
Verifica i valori OAuth e la configurazione dell’integrazione dipendente.
-
Verifica che la registrazione della corrispondenza esterna rifletta l’aggiornamento.
Risoluzione dei problemi relativi al salvataggio della configurazione asincrona
workspace.json e attendi il completamento dell’elaborazione della coda prima di controllare di nuovo i valori.workspace.json ben formato e contenga le credenziali App Builder previste.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
assetIdeventDataeventData.assetMetadata).Risposta
{
"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. Con AEM Assets Integration Extension 1.4.6 e versioni successive, vengono accettati anche i ruoli immagine personalizzati (come hero o custom_role_1).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.