Benutzerdefinierter automatischer Abgleich
Wenn die standardmäßige automatische Abgleichstrategie (OOTB Automatic Matching) nicht an Ihren spezifischen Geschäftsanforderungen ausgerichtet ist, wählen Sie die Option Benutzerdefinierte Abgleichung aus. Diese Option unterstützt die Verwendung von Adobe Developer App Builder zum Entwickeln einer benutzerdefinierten Matcher-Anwendung, die komplexe Matching-Logik verarbeitet, oder von Assets, die von einem Drittanbietersystem stammen, das keine Metadaten in AEM Assets einfügen kann.
Konfigurieren von benutzerdefiniertem automatischem Abgleich
-
Navigieren Sie vom Commerce-Administrator aus zu Store > Konfiguration > ADOBE SERVICES > AEM Assets Integration.
-
Wählen Sie Custom Matcher als Übereinstimmungsregel aus.
-
Wenn Sie diese Zuordnungsregel auswählen, zeigt Admin zusätzliche Felder zum Konfigurieren der Endpunkte und der erforderlichen Authentifizierungsparameter für die benutzerdefinierte Zuordnungslogik an.
workspace.json
Das Feld Adobe I/O Workspace Configuration bietet eine optimierte Möglichkeit, Ihren benutzerdefinierten Matcher zu konfigurieren, indem Sie Ihre App Builder workspace.json-Konfigurationsdatei importieren.
Sie können die workspace.json Datei von der Adobe Developer Console herunterladen. Die Datei enthält alle Anmeldeinformationen und Konfigurationsdetails für Ihren App Builder Workspace.
workspace.json| code language-json |
|---|
|
- Ziehen Sie Ihre
workspace.jsonaus dem App Builder-Projekt in das Feld Adobe I/O Workspace Configuration . Alternativ können Sie zum Durchsuchen klicken und die Datei auswählen.
-
Das System führt automatisch folgende Schritte durch:
- Validiert die JSON-Struktur
- Extrahiert und füllt OAuth-Anmeldeinformationen
- Ruft verfügbare Laufzeitaktionen für den Arbeitsbereich ab
- Füllt Dropdown-Optionen für die Felder Product to Asset URL und Asset to Product URL aus
-
Wählen Sie für jeden Fluss die entsprechenden Laufzeitaktionen aus den Dropdown-Menüs aus.
-
Klicken Sie auf Save Config.
Benutzerdefinierte Matcher-API-Endpunkte
Wenn Sie eine benutzerdefinierte Matcher-Anwendung mit App Builder erstellen, muss die Anwendung die folgenden Endpunkte bereitstellen:
- Endpunkt App Builder-Asset zur Produkt URL
- Endpunkt App Builder-Produkt zu Asset URL
Endpunkt von App Builder Asset-zu-Produkt-URL
Dieser Endpunkt ruft die Liste der mit einem bestimmten Asset verknüpften SKUs ab:
Beispielverwendung
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;
Anfrage
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/asset-to-product
assetIdeventDataAntwort
{
"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 überspringt die Regel-Engine die Synchronisierung für dieses Asset (keine Aktualisierung der Produktzuordnung). Wenn false oder ausgelassen, wird die normale Verarbeitung ausgeführt. Siehe Synchronisierungsverarbeitung überspringen.Endpunkt von App Builder-Produkt-zu-Asset-URL
Dieser Endpunkt ruft die Liste der Assets ab, die mit einer bestimmten SKU verknüpft sind:
Beispielverwendung
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;
Anfrage
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/product-to-asset
productSKUeventDataAntwort
{
"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 überspringt die Regel-Engine die Synchronisierung für dieses Produkt (keine Aktualisierung der Asset-Zuordnung). Wenn false oder ausgelassen, wird die normale Verarbeitung ausgeführt. Siehe Synchronisierungsverarbeitung überspringen.Der asset_matches-Parameter enthält die folgenden Attribute:
asset_idasset_rolesthumbnail, image, small_image und swatch_image.asset_formatimage und video.asset_positionSynchronisierungsverarbeitung überspringen
Mit dem skip Parameter kann der benutzerdefinierte Matcher die Synchronisierungsverarbeitung für bestimmte Assets oder Produkte umgehen.
Wenn Ihre App Builder-Anwendung in der Antwort "skip": true zurückgibt, sendet die Regel-Engine keine Aktualisierungs- oder Entfernungs-API-Anfragen für dieses Asset oder Produkt an Commerce. Diese Optimierung reduziert unnötige API-Aufrufe und verbessert die Leistung.