[Alpha]{class="badge informative"}

personalization (伺服器SDK)

此頁面說明伺服器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.sendDisplayEvent
  • personalization.includeRenderedPropositions
  • personalization.defaultPersonalizationEnabled
  • personalization.decisionContext

sendEvent的renderDecisions選項也無效,因為SDK永遠不會轉譯內容。

recommendation-more-help
experience-platform-help-collection