此頁面說明伺服器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"]
}
});
僅當執行個體包含createInstance預設包含的Personalization元件時,才能使用此選項。
personalization.decisionScopes
decisionScopes屬性是字串陣列。 每個專案都會識別您想要個人化內容的位置、前後關聯或位置。 在Adobe Target中,每個決定範圍都會對應至mbox。 在Adobe Journey Optimizer和Offer Decisioning中,每個決定範圍都會對應至以決定為基礎的位置。
personalization: {
decisionScopes: ["hero-banner", "cart-offer"]
}
personalization.surfaces
surfaces屬性是表面URI字串的陣列。 每個介面都會識別您想要Adobe Journey Optimizer程式碼型體驗的管道、頁面或元件,例如web://example.com/home或web://example.com/home#hero。
personalization: {
surfaces: ["web://example.com/home", "web://example.com/home#hero"]
}
在瀏覽器中,網頁SDK會自動要求目前頁面的介面。 伺服器沒有目前的頁面,因此「伺服器SDK」只會請求您列出的表面。 同樣地,SDK在轉譯頁面時,不會自動要求Web SDK要求的全頁面決策範圍。
最上層decisionScopes top-level-decision-scopes
您也可以在位於sendEvent選項最上層的decisionScopes陣列中(personalization物件外)傳遞決定範圍。 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的陣列。 每個專案都有schema描述其內容,例如HTML、JSON或DOM動作。
SDK不會轉譯主張,也不會記錄這些主張的顯示情況。 以下列其中一種方式使用它們:
- 在瀏覽器中轉譯它們。 請在伺服器傳回的網頁中包含建議,然後將建議傳遞至網頁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
sendEvent的renderDecisions選項也無效,因為SDK永遠不會轉譯內容。