呈现不带选择器的HTML选件

当您的建议包含HTML内容时,请使用此模式,但您必须提供应用它的位置(选择器)以及如何应用它(操作类型)。 为此,您可以调用带有按范围键值的applyPropositions对象的metadata。 支持的actionType值为setHtmlreplaceHtmlappendHtml

1.管理闪烁(可选)

如果在渲染时隐藏内容,则您负责在渲染完成后显示内容。 有关详细信息,请参阅管理闪烁

2.请求您打算呈现的范围的建议

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

有关详细信息,请参阅personalization.decisionScopes

3.渲染带有applyPropositions元数据的选件

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.记录呈现的建议的显示事件

在调用applyPropositions时,显示事件不会自动发送。 渲染完成后,使用引用渲染建议的sendEvent调用:

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 }
          }
        }
      }
    });
  });
});

有关详细信息,请参阅管理显示事件

TIP
如果您使用Top和bottom page事件,则此“记录显示”调用通常在后sendEvent调用中实现。

5.重新呈现

如果您的实施需要稍后重新呈现(例如在单页应用程序中),请使用相同的建议和元数据再次调用applyPropositions

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

如果需要为重新渲染录制显示事件,请参阅管理显示事件

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