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

  1. Dall’amministratore di Commerce, passare a Store > Configurazione > ADOBE SERVICES > AEM Assets Integration.

  2. Selezionare Custom Matcher come regola corrispondente.

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

Esempio 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. Trascina il file workspace.json dal progetto App Builder nel campo Adobe I/O Workspace Configuration. In alternativa, è possibile fare clic su per sfogliare e selezionare il file.

Configurazione Workspace {width="600" modal="regular"}

  1. 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
  2. Seleziona le azioni di runtime appropriate dai menu a discesa per ciascun flusso.

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

  1. Verificare che il salvataggio della configurazione asincrona di Commerce sia abilitato.

  2. Dall’amministratore, passare a Stores > Settings > Configuration > Adobe Services > AEM Assets Integration.

  3. Carica il file App Builder workspace.json corrente.

  4. Salva la configurazione.

  5. Attendere il completamento dell’elaborazione del salvataggio da parte del consumer di configurazione asincrono.

  6. Verifica i valori OAuth e la configurazione dell’integrazione dipendente.

  7. Verifica che la registrazione della corrispondenza esterna rifletta l’aggiornamento.

NOTE
Se il salvataggio della configurazione asincrona è disattivato, si applica il normale comportamento di salvataggio sincrono e non è necessario attendere un consumatore della coda.

Risoluzione dei problemi relativi al salvataggio della configurazione asincrona

Sintomo
Cosa fare
I valori OAuth rimangono invariati dopo il salvataggio
Conferma l’esecuzione della versione 1.4.7 o successiva dell’estensione AEM Assets Integration, carica un nuovo file workspace.json e attendi il completamento dell’elaborazione della coda prima di controllare di nuovo i valori.
Il salvataggio non riesce dopo un caricamento non valido
Verificare che il file sia un file workspace.json ben formato e contenga le credenziali App Builder previste.
Nessun file caricato
La configurazione archiviata esistente rimane invariata.
La registrazione della corrispondenza esterna non viene aggiornata
Controlla se il consumatore in coda ha completato l’elaborazione, controlla i registri di Commerce e conferma lo stato di registrazione della corrispondenza esterna.
Salvataggio configurazione asincrona disabilitato
Si applica il normale comportamento di salvataggio sincrono; questa sezione relativa alla risoluzione dei problemi non è applicabile.
NOTE
Se sviluppi un osservatore di configurazione per l’integrazione di AEM Assets, non dipendere da parametri di richiesta HTTP non elaborati. Il salvataggio della configurazione asincrona e altri salvataggi della configurazione programmatica possono eseguire l’osservatore senza un contesto di richiesta amministratore.

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
Parametro
Tipo di dati
Descrizione
assetId
Stringa
Rappresenta l’ID risorsa aggiornato.
eventData
Oggetto
Payload dell’evento associato alla risorsa (ad esempio, metadati della risorsa letti dal matcher da eventData.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
}
Parametro
Tipo di dati
Descrizione
asset_id
Stringa
ID risorsa di cui viene trovata una corrispondenza.
product_matches
Array
Elenco di prodotti associati alla risorsa.
skip
Booleano
(Facoltativo) Quando true, 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
Parametro
Tipo di dati
Descrizione
productSku
Stringa
Rappresenta lo SKU del prodotto aggiornato.
eventData
Oggetto
Payload dell’evento associato al prodotto (ad esempio, campi utilizzati dal matcher dall’evento in ingresso).

Risposta

{
  "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
}
Parametro
Tipo di dati
Descrizione
product_sku
Stringa
SKU prodotto corrispondente.
asset_matches
Array
Elenco di risorse associate al prodotto.
skip
Booleano
(Facoltativo) Quando true, 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:

Attributo
Tipo di dati
Descrizione
asset_id
Stringa
ID risorsa.
asset_roles
Array
Ruoli risorsa. Utilizza i ruoli di risorse Commerce supportati, ad esempio thumbnail, 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_format
Stringa
Il formato della risorsa. I valori possibili sono image e video.
asset_position
Numero
Posizione della risorsa nella galleria di prodotti.

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

recommendation-more-help
commerce-help-aem-assets-integration