セレクターを使用しないHTML オファーのレンダリング
このパターンは、提案にHTML コンテンツが含まれているが、その適用場所(セレクター)および適用方法(アクションタイプ)を指定する必要がある場合に使用します。 これを行うには、スコープでキー設定された applyPropositions オブジェクトを使用して metadata を呼び出します。 サポートされる actionType 値は、setHtml、replaceHtml、appendHtml です。
1.ちらつきの管理(オプション)
レンダリング中にコンテンツを非表示にした場合、レンダリング完了後にコンテンツを表示する責任があります。 詳しくは、「 ちらつきの管理 を参照してください。
2. レンダリングする範囲の提案を要求する
alloy("sendEvent", {
personalization: {
decisionScopes: ["discount", "salutation"]
},
xdm: { }
}).then(({ propositions = [] }) => {
// Render in the next step
});
詳細は、personalization.decisionScopes を参照してください。
3. applyPropositions メタデータを使用したオファーのレンダリング
alloy("sendEvent", {
personalization: {
decisionScopes: ["discount", "salutation"]
},
xdm: { }
}).then(({ propositions = [] }) => {
return alloy("applyPropositions", {
propositions,
metadata: {
salutation: {
selector: "#salutation",
actionType: "setHtml"
},
discount: {
selector: "#daily-special",
actionType: "replaceHtml"
}
}
}).then(({ propositions: renderedPropositions = [] }) => {
return { renderedPropositions };
});
});
4. レンダリングされた提案のレコード表示イベント
applyPropositions を呼び出しても、表示イベントは自動的には送信されません。 レンダリングが完了したら、レンダリングされた提案を参照する sendEvent 呼び出しを使用します。
function toDisplayPayload(propositions) {
return propositions.map((p) => ({
id: p.id,
scope: p.scope,
scopeDetails: p.scopeDetails
}));
}
alloy("sendEvent", {
personalization: {
decisionScopes: ["discount", "salutation"]
},
xdm: { }
}).then(({ propositions = [] }) => {
return alloy("applyPropositions", {
propositions,
metadata: {
salutation: { selector: "#salutation", actionType: "setHtml" },
discount: { selector: "#daily-special", actionType: "replaceHtml" }
}
}).then(({ propositions: renderedPropositions = [] }) => {
return alloy("sendEvent", {
xdm: {
_experience: {
decisioning: {
propositions: toDisplayPayload(renderedPropositions),
propositionEventType: { display: 1 }
}
}
}
});
});
});
詳しくは、 表示イベントの管理 を参照してください。
TIP
上位および下位のページイベント を使用する場合、この「レコード表示」呼び出しは通常、下位の
sendEvent ージ呼び出しに実装されます。5.再レンダリング
実装で後で再レンダリングが必要な場合(単一ページアプリケーションなど)、同じ提案とメタデータで applyPropositions を再度呼び出します。
alloy("applyPropositions", {
propositions,
metadata: {
discount: { selector: "#daily-special", actionType: "replaceHtml" }
}
});
その再レンダリングの表示イベントを記録する必要がある場合は、 表示イベントの管理 を参照してください。
recommendation-more-help
1ae86b30-e55e-49c1-ab11-9d0356a5f3e1