このページでは、Server SDK sendEvent メソッドのpersonalizationについて説明します。 Web SDKについては、personalizationを参照してください。
sendEventのpersonalization オブジェクトは、提案とも呼ばれるパーソナライズの決定を、Adobe Target、Adobe Journey Optimizer、およびOffer Decisioningからリクエストします。 サーバーSDKは、sendEventの結果に提案を返します。これにより、サーバーはそれらを使用したり、ブラウザーに渡したりできます。
const { propositions = [] } = await visitor.sendEvent({
xdm: {
eventType: "decisioning.propositionFetch",
identityMap: {
Email: [{ id: "visitor@example.com", primary: true }]
}
},
personalization: {
decisionScopes: ["hero-banner"],
surfaces: ["web://example.com/home"]
}
});
このオプションは、インスタンスにPersonalization コンポーネントが含まれている場合にのみ使用できます。このコンポーネントには、createInstanceがデフォルトで含まれています。
personalization.decisionScopes
decisionScopes プロパティは文字列の配列です。 各項目は、パーソナライズされたコンテンツが必要な場所、コンテキスト、またはプレースメントを特定します。 Adobe Targetでは、各意思決定範囲がmboxにマッピングされます。 Adobe Journey OptimizerとOffer Decisioningでは、各意思決定範囲が意思決定ベースの配置にマッピングされます。
personalization: {
decisionScopes: ["hero-banner", "cart-offer"]
}
personalization.surfaces
surfaces プロパティは、 サーフェス URI文字列の配列です。 各サーフェスは、web://example.com/homeやweb://example.com/home#heroなど、Adobe Journey Optimizer コードベースのエクスペリエンスを必要とするチャネル、ページ、またはコンポーネントを特定します。
personalization: {
surfaces: ["web://example.com/home", "web://example.com/home#hero"]
}
Web SDKは、ブラウザーで現在のページのサーフェスを自動的にリクエストします。 サーバーには現在のページがないので、Server SDKはリストしたサーフェスのみをリクエストします。 同様に、SDKは、ページをレンダリングするときにWeb SDKが要求するページ全体の意思決定範囲を自動的にリクエストしません。
トップレベル decisionScopes top-level-decision-scopes
personalization オブジェクト外のsendEvent オプションの最上位レベルにあるdecisionScopes配列で決定範囲を渡すこともできます。 SDKは、両方の配列を組み合わせ、重複を削除します。
await visitor.sendEvent({
xdm: {
eventType: "decisioning.propositionFetch",
identityMap: {
Email: [{ id: "visitor@example.com", primary: true }]
}
},
decisionScopes: ["hero-banner"]
});
結果の提案 result
パーソナライゼーションをリクエストする場合、sendEventの結果にはpropositions配列が含まれます。 各提案には、id、scope、scopeDetails、およびitemsの配列が含まれます。 各項目には、HTML、JSON、DOM アクションなど、その内容を説明するschemaがあります。
SDKは提案をレンダリングせず、提案が表示されたことを記録しません。 次のいずれかの方法で使用します。
- ブラウザーでレンダリングします。 サーバーが返すページに提案を含め、それをWeb SDK
applyPropositionsコマンドに渡してレンダリングします。 次に、表示イベントで表示された提案を記録します。 ハイブリッドパーソナライゼーション を参照してください。 - サーバー上でそれらをレンダリングします。 各アイテムのコンテンツを利用して、反応を構築します。 次に、表示イベントを送信して、表示した提案を記録します。
await visitor.sendEvent({
xdm: {
eventType: "decisioning.propositionDisplay",
identityMap: {
Email: [{ id: "visitor@example.com", primary: true }]
},
_experience: {
decisioning: {
propositions: renderedPropositions.map(({ id, scope, scopeDetails }) => ({
id,
scope,
scopeDetails
})),
propositionEventType: { display: 1 }
}
}
}
});
サーバーに影響しないオプション no-effect
SDKでは、ブラウザー実装とコードを共有できるように、次のプロパティを受け入れますが、それらを無視します。
personalization.sendDisplayEventpersonalization.includeRenderedPropositionspersonalization.defaultPersonalizationEnabledpersonalization.decisionContext
SDKではコンテンツがレンダリングされないため、sendEventのrenderDecisions オプションも影響しません。