カスタム自動一致
デフォルトの自動一致の戦略(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設定ファイルを読み込むことで、カスタムマッチャーを効率的に設定できます。
workspace.json ファイルは、Adobe 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を使用してカスタムマッチャーアプリケーションを構築する場合、アプリケーションは次のエンドポイントを公開する必要があります。
- App Builder アセットから商品URL エンドポイント
- App Builder製品からアセット URL エンドポイント
App Builderアセットから商品URLへのエンドポイント
このエンドポイントは、特定のアセットに関連付けられている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
assetIdeventDataeventData.assetMetadataから読み取るアセットメタデータ)。応答
{
"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_formatimageとvideoです。asset_position同期処理をスキップ
skip パラメーターを使用すると、カスタムマッチャーで特定のアセットまたは製品の同期処理をバイパスできます。
App Builder アプリケーションが応答で"skip": trueを返す場合、ルールエンジンは、そのアセットまたは商品に対するAPI リクエストをCommerceに送信または削除しません。 この最適化により、不要なAPI呼び出しが減り、パフォーマンスが向上します。