이 페이지에서는 서버 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.sendDisplayEventpersonalization.includeRenderedPropositionspersonalization.defaultPersonalizationEnabledpersonalization.decisionContext
SDK에서 콘텐츠를 렌더링하지 않으므로 sendEvent의 renderDecisions 옵션도 영향을 주지 않습니다.