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

  1. Navigieren Sie vom Commerce-Administrator aus zu Store > Konfiguration > ADOBE SERVICES > AEM Assets Integration.

  2. Wählen Sie Custom Matcher als Übereinstimmungsregel aus.

  3. 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.

Beispiel workspace.json
code language-json
{
  "project": {
    "id": "project_id",
    "name": "project_name",
    "title": "title_name",
    "org": {
      "id": "id",
      "name": "Organization_name",
      "ims_org_id": "ims_id"
    },
    "workspace": {
      "id": "workspace_id",
      "name": "workspace_name_id",
      "title": "workspace_title_id",
      "action_url": "https://action_url.net",
      "app_url": "https://app_url.net",
      "details": {
        "credentials": [
          {
            "id": "credential_id",
            "name": "credential_name_id",
            "integration_type": "oauth_server_to_server",
            "oauth_server_to_server": {
              "client_id": "client_id",
              "client_secrets": ["secret"],
              "technical_account_email": "xx@technical_account_email.com",
              "technical_account_id": "technical_account_id",
              "scopes": [
                "AdobeID",
                "openid",
                "read_organizations",
                "additional_info.projectedProductContext",
                "additional_info.roles",
                "adobeio_api",
                "read_client_secret",
                "manage_client_secrets"
              ]
            }
          }
        ],
        "services": [
          {
            "code": "AdobeIOManagementAPISDK",
            "name": "I/O Management API"
          }
        ],
        "runtime": {
          "namespaces": [
            {
              "name": "namespace_name",
              "auth": "example_auth"
            }
          ]
        },
        "events": {
          "registrations": []
        },
        "mesh": {}
      }
    }
  }
}
  1. Ziehen Sie Ihre workspace.json aus dem App Builder-Projekt in das Feld Adobe I/O Workspace Configuration . Alternativ können Sie zum Durchsuchen klicken und die Datei auswählen.

Workspace-Konfiguration {width="600" modal="regular"}

  1. 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
  2. Wählen Sie für jeden Fluss die entsprechenden Laufzeitaktionen aus den Dropdown-Menüs aus.

  3. 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

    return {
        statusCode: 500,
        body: {
            asset_id: params.assetId,
            product_matches: [
                {
                    product_sku: "<YOUR-SKU-HERE>",
                    asset_roles: ["thumbnail", "image", "swatch_image", "small_image"],
                    asset_position: 1
                }
            ]
        }
    };
}

exports.main = main;

Anfrage

POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/asset-to-product
Parameter
Datentyp
Beschreibung
assetId
Zeichenfolge
Stellt die aktualisierte Asset-ID dar.
eventData
Zeichenfolge
Gibt die Daten-Payload zurück, die mit der Asset-ID verknüpft ist.

Antwort

{
  "asset_id": "{ASSET_ID}",
  "product_matches": [
    {
      "product_sku": "{PRODUCT_SKU_1}",
      "asset_roles": ["thumbnail","image"]
    },
    {
      "product_sku": "{PRODUCT_SKU_2}",
      "asset_roles": ["thumbnail"]
    }
  ]
}

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

    return {
        statusCode: 500,
        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
                }
            ]
        }
    };
}

exports.main = main;

Anfrage

POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/product-to-asset
Parameter
Datentyp
Beschreibung
productSKU
Zeichenfolge
Stellt die aktualisierte Produkt-SKU dar.
eventData
Zeichenfolge
Gibt die Daten-Payload zurück, die mit der Produkt-SKU verknüpft ist.

Antwort

{
  "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
    }
  ]
}
Parameter
Datentyp
Beschreibung
productSKU
Zeichenfolge
Stellt die aktualisierte Produkt-SKU dar.
asset_matches
Zeichenfolge
Gibt alle Assets zurück, die mit einer bestimmten Produkt-SKU verknüpft sind.

Der asset_matches-Parameter enthält die folgenden Attribute:

Attribut
Datentyp
Beschreibung
asset_id
Zeichenfolge
Stellt die aktualisierte Asset-ID dar.
asset_roles
Zeichenfolge
Gibt alle verfügbaren Asset-Rollen zurück. Verwendet unterstützte CommerceAsset-Rollen wie thumbnail, image, small_image und swatch_image.
asset_format
Zeichenfolge
Stellt die verfügbaren Formate für das Asset bereit. Mögliche Werte sind image und video.
asset_position
Zeichenfolge
Zeigt die Position des Assets an.
recommendation-more-help
7d6707fb-4d59-44b9-ab2a-b69de39eb44d