[Alpha]{class="badge informative"}

personalization (服务器SDK)

本页介绍了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"]
  }
});

仅当实例包含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"]
}

在浏览器中,Web SDK自动请求当前页面的界面。 服务器没有当前页面,因此服务器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数组。 每个项目都有一个描述其内容的schema,例如HTML、JSON或DOM操作。

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.sendDisplayEvent
  • personalization.includeRenderedPropositions
  • personalization.defaultPersonalizationEnabled
  • personalization.decisionContext

sendEvent的renderDecisions选项也无效,因为SDK从不呈现内容。

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