Correspondência automática personalizada
Se a estratégia de correspondência automática padrão (correspondência automática OOTB) não estiver alinhada aos seus requisitos de negócios específicos, selecione a opção de correspondência personalizada. Esta opção oferece suporte ao uso do Adobe Developer App Builder para desenvolver um aplicativo de correspondência personalizado que lida com lógica de correspondência complexa ou com ativos provenientes de um sistema de terceiros que não pode preencher metadados no AEM Assets.
Configurar correspondência automática personalizada
-
No Administrador do Commerce, navegue até Store > Configuração > ADOBE SERVICES > AEM Assets Integration.
-
Selecione Custom Matcher como regra de correspondência.
-
Ao selecionar esta regra de correspondência, o Administrador exibe campos adicionais para configurar os pontos de extremidade e os parâmetros de autenticação necessários para a lógica de correspondência personalizada.
workspace.json
O campo Adobe I/O Workspace Configuration fornece uma maneira simplificada de configurar a correspondência personalizada importando seu arquivo de configuração do App Builder workspace.json.
Você pode baixar o arquivo workspace.json da Adobe Developer Console. O arquivo contém todas as credenciais e detalhes de configuração do espaço de trabalho do App Builder.
workspace.json| code language-json |
|---|
|
- Arraste e solte seu arquivo
workspace.jsondo seu projeto do App Builder no campo Adobe I/O Workspace Configuration. Como alternativa, você pode clicar em para procurar e selecionar o arquivo.
-
O sistema automaticamente:
- Valida a estrutura JSON
- Extrai e preenche credenciais do OAuth
- Busca as ações de tempo de execução disponíveis para o espaço de trabalho
- Preenche as opções suspensas para os campos Product to Asset URL e Asset to Product URL
-
Selecione as ações de tempo de execução apropriadas nos menus suspensos para cada fluxo.
-
Clique em Save Config.
Salvar configuração assíncrona
Se a opção Salvar Configuração Assíncrona estiver habilitada na instância do Commerce, as alterações de configuração serão enfileiradas e aplicadas por um consumidor assíncrono, em vez de serem salvas imediatamente na mesma solicitação. Para carregar um arquivo workspace.json para correspondência automática personalizada neste modo, conclua as seguintes etapas na ordem:
-
Confirme se o Salvamento da Configuração Assíncrona do Commerce está habilitado.
-
No Administrador, vá para Stores > Settings > Configuration > Adobe Services > AEM Assets Integration.
-
Carregar o arquivo
workspace.jsonatual do App Builder. -
Salve a configuração.
-
Aguarde o consumidor de configuração assíncrono concluir o processamento do salvamento.
-
Verifique os valores de OAuth e a configuração de integração dependente.
-
Verifique se o registro de correspondência externa reflete a atualização.
Solução de problemas de salvamento de configuração assíncrona
workspace.json e aguarde a conclusão do processamento da fila antes de verificar os valores novamente.workspace.json bem formado e contém as credenciais esperadas do App Builder.Pontos de extremidade da API do correspondedor personalizado
Ao criar um aplicativo de correspondência personalizado usando o App Builder, o aplicativo deve expor os seguintes pontos de extremidade:
- Ponto de extremidade Ativo App Builder para URL do produto
- Ponto de extremidade Produto App Builder para URL do ativo
Ativo App Builder para endpoint do URL do produto
Esse endpoint recupera a lista de SKUs associadas a um determinado ativo:
Exemplo 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;
Solicitação
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/asset-to-product
assetIdeventDataeventData.assetMetadata).Resposta
{
"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, o mecanismo de regra ignora a sincronização para este ativo (nenhuma atualização de mapeamento de produto). Quando false ou for omitido, o processamento normal será executado. Consulte Ignorar processamento de sincronização.Produto App Builder para endpoint do URL do ativo
Esse endpoint recupera a lista de ativos associados a determinada SKU:
Exemplo 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;
Solicitação
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/product-to-asset
productSkueventDataResposta
{
"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, o mecanismo de regra ignora a sincronização para este produto (nenhuma atualização de mapeamento de ativos). Quando false ou for omitido, o processamento normal será executado. Consulte Ignorar processamento de sincronização.O parâmetro asset_matches contém os seguintes atributos:
asset_idasset_rolesthumbnail, image, small_image e swatch_image. Com a extensão 1.4.6 e posterior do AEM Assets Integration, funções de imagem personalizadas (como hero ou custom_role_1) também são aceitas.asset_formatimage e video.asset_positionIgnorar processamento de sincronização
O parâmetro skip permite que a correspondência personalizada ignore o processamento de sincronização de ativos ou produtos específicos.
Quando o aplicativo do App Builder retorna "skip": true na resposta, o mecanismo de regras não envia solicitações de atualização ou remoção de API para o Commerce desse ativo ou produto. Essa otimização reduz chamadas desnecessárias de API e melhora o desempenho.