カスタムの自動照合
デフォルトの自動一致戦略(OOTB 自動一致)が特定のビジネス要件に合っていない場合は、「カスタム一致」オプションを選択します。 このオプションは、複雑なマッチングロジックを処理するカスタムマッチャーアプリケーションや、メタデータをAdobe Developer App Builderに入力できないサードパーティシステムからのアセットを開発する 0}AEM Assets} の使用をサポートします。
カスタムの自動照合を設定
-
Commerce管理者から、Store /設定/ ADOBE SERVICES / AEM Assets Integration に移動します。
-
一致ルールとして「Custom Matcher」を選択します。
-
この一致ルールを選択すると、カスタム一致ロジックに必要な 認証パラメーター および エンドポイント を設定するための追加フィールドが表示されます。
workspace.json
Adobe I/O Workspace Configuration フィールドを使用すると、App Builder workspace.json 設定ファイルを読み込むことで、カスタムマッチャーを効率的に設定できます。
workspace.json ファイルは 1}Adobe Developer Console} からダウンロードできます。 このファイルには、App Builder Workspace のすべての資格情報と設定の詳細が含まれています。
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 asset to product URL endpoint
- App Builder製品からアセットの URL エンドポイント
App Builder asset to product URL endpoint
このエンドポイントは、特定のアセットに関連付けられた 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 を返しても、ルールエンジンは、そのアセットまたは商品の API リクエストの更新または削除をCommerceに送信しません。 この最適化により、不要な API 呼び出しが減り、パフォーマンスが向上します。