Esta página descreve personalization no método sendEvent do SDK do Servidor. Para o Web SDK, consulte personalization.
O objeto personalization de sendEvent solicita decisões de personalização, também chamadas de propostas, da Adobe Target, Adobe Journey Optimizer e Offer Decisioning. O SDK do Servidor retorna as propostas no resultado de sendEvent, para que o servidor possa usá-las ou passá-las para o navegador.
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"]
}
});
Essa opção está disponível somente quando a instância inclui o componente Personalization, que createInstance inclui por padrão.
personalization.decisionScopes
A propriedade decisionScopes é uma matriz de cadeias de caracteres. Cada item identifica um local, contexto ou posicionamento no qual você deseja conteúdo personalizado. No Adobe Target, cada escopo de decisão é mapeado para uma mbox. No Adobe Journey Optimizer e no Offer Decisioning, cada escopo de decisão é mapeado para uma disposição baseada em decisão.
personalization: {
decisionScopes: ["hero-banner", "cart-offer"]
}
personalization.surfaces
A propriedade surfaces é uma matriz de cadeias de caracteres de URI de superfície. Cada superfície identifica um canal, página ou componente para o qual você deseja experiências baseadas em código Adobe Journey Optimizer, como web://example.com/home ou web://example.com/home#hero.
personalization: {
surfaces: ["web://example.com/home", "web://example.com/home#hero"]
}
Em um navegador, o Web SDK solicita automaticamente a superfície da página atual. Um servidor não tem página atual, portanto, o SDK do servidor solicita somente as superfícies que você lista. Da mesma forma, a SDK não solicita automaticamente o escopo de decisão em toda a página que o Web SDK solicita ao renderizar uma página.
Nível superior decisionScopes top-level-decision-scopes
Você também pode passar escopos de decisão em uma matriz decisionScopes no nível superior das opções sendEvent, fora do objeto personalization. O SDK combina arrays e remove duplicatas.
await visitor.sendEvent({
xdm: {
eventType: "decisioning.propositionFetch",
identityMap: {
Email: [{ id: "visitor@example.com", primary: true }]
}
},
decisionScopes: ["hero-banner"]
});
Propostas no resultado result
Quando você solicita a personalização, o resultado de sendEvent contém uma matriz propositions. Cada proposta contém um id, um scope, scopeDetails, e uma matriz de items. Cada item tem um schema que descreve seu conteúdo, como ações HTML, JSON ou DOM.
O SDK não renderiza apresentações e não registra que elas foram exibidas. Use-os de uma das seguintes maneiras:
- Renderizá-los no navegador. Inclua as apresentações na página retornada pelo servidor e passe-as para o comando
applyPropositionsdo Web SDK para renderizá-las. Em seguida, registre quais apresentações foram exibidas com um evento de exibição. Consulte Personalização híbrida. - Renderizá-los no servidor. Use o conteúdo de cada item para criar sua resposta. Em seguida, registre quais apresentações você exibiu enviando um evento de exibição:
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 }
}
}
}
});
Opções que não afetam um servidor no-effect
O SDK aceita as seguintes propriedades para que você possa compartilhar código com uma implementação de navegador, mas as ignora:
personalization.sendDisplayEventpersonalization.includeRenderedPropositionspersonalization.defaultPersonalizationEnabledpersonalization.decisionContext
A opção renderDecisions de sendEvent também não tem efeito, pois o SDK nunca renderiza conteúdo.