Återge HTML-erbjudanden utan väljare

Använd det här mönstret när dina förslag innehåller HTML-innehåll, men du måste ange var det ska användas (väljare) och hur det ska användas (åtgärdstyp). Du kan göra detta genom att anropa applyPropositions med ett metadata-objekt som är keyat efter omfång. actionType-värden som stöds är setHtml, replaceHtml och appendHtml.

​1. Hantera flimmer (valfritt)

Om du döljer innehåll under återgivningen ansvarar du för att det visas när återgivningen är klar. Mer information finns i Hantera flimmer.

​2. Begär förslag för de omfattningar som du tänker återge

alloy("sendEvent", {
  personalization: {
    decisionScopes: ["discount", "salutation"]
  },
  xdm: { }
}).then(({ propositions = [] }) => {
  // Render in the next step
});

Mer information finns i personalization.decisionScopes.

​3. Rendera erbjudanden med applyPropositions metadata

alloy("sendEvent", {
  personalization: {
    decisionScopes: ["discount", "salutation"]
  },
  xdm: { }
}).then(({ propositions = [] }) => {
  return alloy("applyPropositions", {
    propositions,
    metadata: {
      salutation: {
        selector: "#salutation",
        actionType: "setHtml"
      },
      discount: {
        selector: "#daily-special",
        actionType: "replaceHtml"
      }
    }
  }).then(({ propositions: renderedPropositions = [] }) => {
    return { renderedPropositions };
  });
});

​4. Spela in visningshändelser för renderade offerter

Visningshändelser skickas inte automatiskt när applyPropositions anropas. När återgivningen är klar använder du ett sendEvent-anrop som refererar till de återgivna propositionerna:

function toDisplayPayload(propositions) {
  return propositions.map((p) => ({
    id: p.id,
    scope: p.scope,
    scopeDetails: p.scopeDetails
  }));
}

alloy("sendEvent", {
  personalization: {
    decisionScopes: ["discount", "salutation"]
  },
  xdm: { }
}).then(({ propositions = [] }) => {
  return alloy("applyPropositions", {
    propositions,
    metadata: {
      salutation: { selector: "#salutation", actionType: "setHtml" },
      discount: { selector: "#daily-special", actionType: "replaceHtml" }
    }
  }).then(({ propositions: renderedPropositions = [] }) => {
    return alloy("sendEvent", {
      xdm: {
        _experience: {
          decisioning: {
            propositions: toDisplayPayload(renderedPropositions),
            propositionEventType: { display: 1 }
          }
        }
      }
    });
  });
});

Mer information finns i Hantera visningshändelser.

TIP
Om du använder händelserna längst upp och längst ned ​ implementeras det här anropet för att visa poster vanligtvis i det nedre sendEvent anropet.

​5. Återgivning

Om implementeringen kräver en återgivning senare (t.ex. i ensidiga program), anropar du applyPropositions igen med samma argument och metadata:

alloy("applyPropositions", {
  propositions,
  metadata: {
    discount: { selector: "#daily-special", actionType: "replaceHtml" }
  }
});

Om du behöver spela in en visningshändelse för den återgivningen läser du Hantera visningshändelser.

recommendation-more-help
1ae86b30-e55e-49c1-ab11-9d0356a5f3e1