사용자 지정 자동 일치
기본 자동 일치 전략(OOTB 자동 일치)이 특정 비즈니스 요구 사항과 일치하지 않는 경우 사용자 지정 일치 옵션을 선택하십시오. 이 옵션은 Adobe Developer App Builder을(를) 사용하여 복잡한 일치 논리를 처리하는 사용자 지정 일치 응용 프로그램 또는 메타데이터를 AEM Assets에 채울 수 없는 서드파티 시스템에서 오는 에셋을 개발할 수 있도록 지원합니다.
사용자 지정 자동 일치 구성
-
Commerce 관리자에서 Store > 구성 > ADOBE SERVICES > AEM Assets Integration(으)로 이동합니다.
-
Custom Matcher을(를) 일치 규칙으로 선택합니다.
-
이 일치 규칙을 선택하면 관리자가 사용자 지정 일치 논리에 필요한 인증 매개 변수 및 끝점을 구성하기 위한 추가 필드를 표시합니다.
workspace.json
Adobe I/O Workspace Configuration 필드를 사용하면 App Builder workspace.json 구성 파일을 가져와서 사용자 지정 Matcher를 간소화할 수 있습니다.
workspace.jsonAdobe Developer Console에서 파일을 다운로드할 수 있습니다. 파일에는 App Builder 작업 공간에 대한 모든 자격 증명과 구성 세부 정보가 포함되어 있습니다.
workspace.json| code language-json |
|---|
|
- App Builder 프로젝트의
workspace.json파일을 Adobe I/O Workspace Configuration 필드로 끌어서 놓습니다. 또는 를 클릭하여 파일을 찾아 선택할 수 있습니다.
-
시스템은 자동으로 다음을 수행합니다.
- JSON 구조의 유효성을 검사합니다
- OAuth 자격 증명 추출 및 채우기
- 작업 공간에 대해 사용 가능한 런타임 작업을 가져옵니다.
- Product to Asset URL 및 Asset to Product URL 필드에 드롭다운 옵션을 채웁니다.
-
드롭다운 메뉴에서 각 플로우에 대한 적절한 런타임 작업을 선택합니다.
-
Save Config을(를) 클릭합니다.
사용자 지정 선택기 API 엔드포인트
App Builder을(를) 사용하여 사용자 지정 선택기 응용 프로그램을 빌드할 때 응용 프로그램은 다음 끝점을 노출해야 합니다.
- 제품 URL에 대한 App Builder 자산 끝점
- 자산 URL에 대한 App Builder 제품 끝점
제품 URL 엔드포인트에 대한 App Builder 에셋
이 끝점은 지정된 자산과 연결된 SKU 목록을 검색합니다.
사용 예
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;
요청
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/asset-to-product
assetIdeventData응답
{
"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일 때 규칙 엔진은 이 자산에 대한 동기화를 건너뜁니다(제품 매핑 업데이트 없음). false을(를) 생략하면 일반 처리가 실행됩니다. 동기화 처리 건너뛰기를 참조하십시오.App Builder 제품-에셋 URL 끝점
이 끝점은 지정된 SKU와 연결된 자산 목록을 검색합니다.
사용 예
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;
요청
POST https://your-app-builder-url/api/v1/web/app-builder-external-rule/product-to-asset
productSKUeventData응답
{
"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일 때 규칙 엔진은 이 제품에 대한 동기화를 건너뜁니다(자산 매핑 업데이트 없음). false을(를) 생략하면 일반 처리가 실행됩니다. 동기화 처리 건너뛰기를 참조하십시오.asset_matches 매개 변수에는 다음 특성이 포함되어 있습니다.
asset_idasset_rolesasset_formatimage 및 video입니다.asset_position동기화 처리 건너뛰기
skip 매개 변수를 사용하면 사용자 지정 선택기가 특정 에셋 또는 제품에 대한 동기화 처리를 우회할 수 있습니다.
App Builder 응용 프로그램이 응답에서 "skip": true을(를) 반환하면 규칙 엔진은 해당 에셋 또는 제품에 대한 Commerce에 업데이트 또는 제거 API 요청을 보내지 않습니다. 이 최적화는 불필요한 API 호출을 줄이고 성능을 향상시킵니다.