Coincidencia automática personalizada

Si la estrategia de coincidencia automática predeterminada (coincidencia automática OOTB) no está alineada con los requisitos comerciales específicos, seleccione la opción de coincidencia personalizada. Esta opción admite el uso de Adobe Developer App Builder para desarrollar una aplicación de emparejamiento personalizada que administre lógicas de emparejamiento complejas o recursos procedentes de un sistema de terceros que no puedan rellenar metadatos en los AEM Assets.

Configurar la coincidencia automática personalizada

  1. En el Administrador de Commerce, vaya a Store > Configuración > ADOBE SERVICES > AEM Assets Integration.

  2. Seleccione Custom Matcher como regla coincidente.

  3. Al seleccionar esta regla coincidente, el administrador muestra campos adicionales para configurar los extremos y los parámetros de autenticación necesarios para la lógica de coincidencia personalizada.

workspace.json

El campo Adobe I/O Workspace Configuration proporciona una forma sencilla de configurar su emparejador personalizado mediante la importación del archivo de configuración de App Builder workspace.json.

Puede descargar el archivo de workspace.json desde Adobe Developer Console. El archivo contiene todas las credenciales y los detalles de configuración de App Builder Workspace.

Ejemplo 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. Arrastre y suelte el archivo workspace.json de su proyecto de App Builder en el campo Adobe I/O Workspace Configuration. También puede hacer clic en para examinar y seleccionar el archivo.

Configuración de Workspace {width="600" modal="regular"}

  1. El sistema automáticamente:

    • Valida la estructura JSON.
    • Extrae y rellena credenciales de OAuth
    • Obtiene las acciones de tiempo de ejecución disponibles para el espacio de trabajo
    • Rellena las opciones desplegables de los campos Product to Asset URL y Asset to Product URL
  2. Seleccione las acciones de tiempo de ejecución adecuadas en los menús desplegables para cada flujo.

  3. Haga clic en Save Config.

Extremos de API de emparejador personalizados

Cuando crea una aplicación de emparejador personalizada usando App Builder, la aplicación debe exponer los siguientes extremos:

  • Extremo de recurso de App Builder a dirección URL del producto
  • Extremo de App Builder product to asset URL

Extremo de recurso de App Builder a URL del producto

Este punto de conexión recupera la lista de SKU asociadas a un recurso determinado:

Ejemplo de uso

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;

Solicitud

POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/asset-to-product
Parámetro
Tipo de datos
Descripción
assetId
Cadena
Representa el ID de recurso actualizado.
eventData
Cadena
Devuelve la carga útil de datos asociada al ID de recurso.

Respuesta

{
  "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
}
Parámetro
Tipo de datos
Descripción
asset_id
Cadena
ID del recurso con el que se está estableciendo una coincidencia.
product_matches
Matriz
Lista de productos asociados al recurso.
skip
Booleano
(Opcional) Cuando true, el motor de reglas omite la sincronización de este recurso (sin actualización de asignación de productos). Si se omite o se false, se ejecuta el procesamiento normal. Ver Omitir procesamiento de sincronización.

Extremo de URL de producto a recurso de App Builder

Este extremo recupera la lista de recursos asociados a un SKU determinado:

Ejemplo de uso

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;

Solicitud

POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/product-to-asset
Parámetro
Tipo de datos
Descripción
productSKU
Cadena
Representa el SKU del producto actualizado.
eventData
Cadena
Devuelve la carga útil de datos asociada al SKU del producto.

Respuesta

{
  "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
}
Parámetro
Tipo de datos
Descripción
product_sku
Cadena
El SKU del producto que se está buscando.
asset_matches
Matriz
Lista de recursos asociados al producto.
skip
Booleano
(Opcional) Cuando true, el motor de reglas omite la sincronización de este producto (sin actualización de asignación de recursos). Si se omite o se false, se ejecuta el procesamiento normal. Ver Omitir procesamiento de sincronización.

El parámetro asset_matches contiene los atributos siguientes:

Atributo
Tipo de datos
Descripción
asset_id
Cadena
ID del recurso.
asset_roles
Matriz
Funciones de los recursos. Utiliza funciones de recurso de Commerce compatibles como thumbnail, image, small_image y swatch_image.
asset_format
Cadena
El formato del recurso. Los valores posibles son image y video.
asset_position
Número
La posición del recurso en la galería de productos.

Omitir procesamiento de sincronización

El parámetro skip permite que el elemento de coincidencia personalizado omita el procesamiento de sincronización para recursos o productos específicos.

Cuando la aplicación de App Builder devuelve "skip": true en la respuesta, el motor de reglas no envía solicitudes de actualización o eliminación de API a Commerce para ese recurso o producto. Esta optimización reduce las llamadas de API innecesarias y mejora el rendimiento.

recommendation-more-help
d5b74cdc-d9a8-404d-9105-1e69985d7e1b