[Alpha]{class="badge informative"}

personalization(서버 SDK)

이 페이지에서는 서버 SDK sendEvent 메서드의 personalization에 대해 설명합니다. 웹 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 문자열의 배열입니다. 각 표면은 web://example.com/home 또는 web://example.com/home#hero과 같이 Adobe Journey Optimizer 코드 기반 경험을 원하는 채널, 페이지 또는 구성 요소를 식별합니다.

personalization: {
  surfaces: ["web://example.com/home", "web://example.com/home#hero"]
}

브라우저에서 웹 SDK이 현재 페이지에 대한 표면을 자동으로 요청합니다. 서버에는 현재 페이지가 없으므로 서버 SDK은 나열하는 서피스만 요청합니다. 마찬가지로, SDK은 페이지를 렌더링할 때 웹 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은 제안을 렌더링하지 않으며, 제안 내용이 표시되었음을 기록하지 않습니다. 다음 방법 중 하나로 사용하십시오.

  • 브라우저에서 렌더링합니다. 서버가 반환하는 페이지에 제안을 포함한 다음 웹 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

SDK에서 콘텐츠를 렌더링하지 않으므로 sendEvent의 renderDecisions 옵션도 영향을 주지 않습니다.

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