基于代码的实施方法示例 implementation-samples
基于代码的体验支持任何类型的客户实施。 在此页上,您可以找到每种实施方法的示例:
客户端实施 client-side-implementation
如果您有客户端实施,则可以使用以下其中一个AEP客户端SDK:AEP Web SDK或AEP Mobile SDK。
-
下面的步骤描述在示例 Web SDK 实施中,获取基于代码的体验历程和营销活动在边缘上发布的内容并显示个性化内容的过程。
-
本教程中介绍了使用 Mobile SDK 实施基于代码的通道的步骤。
note note NOTE 移动使用案例的示例实施适用于iOS应用程序和Android应用程序。
工作原理 — Web SDK client-side-how
-
Web SDK已包含在此页面中。
-
您需要使用
sendEvent
命令并指定表面URI来获取个性化内容。code language-javascript alloy("sendEvent", { renderDecisions: true, personalization: { surfaces: ["#sample-json-content"], }, }).then(applyPersonalization("#sample-json-content"));
-
基于代码的体验项应由实现代码(使用
applyPersonalization
方法)手动应用,以根据决策更新DOM。 -
对于基于代码的体验历程和营销活动,必须手动发送显示事件以指示何时显示内容。 这是通过
sendEvent
命令完成的。code language-javascript function sendDisplayEvent(decision) { const { id, scope, scopeDetails = {} } = decision; alloy("sendEvent", { xdm: { eventType: "decisioning.propositionDisplay", _experience: { decisioning: { propositions: [ { id: id, scope: scope, scopeDetails: scopeDetails, }, ], }, }, }, }); }
-
对于基于代码的体验历程和营销活动,必须手动发送交互事件以指示用户何时与内容交互。 这是通过
sendEvent
命令完成的。code language-javascript function sendInteractEvent(label, proposition) { const { id, scope, scopeDetails = {} } = proposition; alloy("sendEvent", { xdm: { eventType: "decisioning.propositionInteract", _experience: { decisioning: { propositions: [ { id: id, scope: scope, scopeDetails: scopeDetails, }, ], propositionEventType: { interact: 1 }, propositionAction: { label: label }, }, }, }, }); }
主要意见
Cookie
Cookie用于保留用户标识和群集信息。 使用客户端实施时,Web SDK会在请求生命周期中自动处理这些Cookie的存储和发送。
请求放置
需要向Adobe Experience Platform API发出请求才能获取建议并发送显示通知。 在使用客户端实施时,Web SDK会在使用sendEvent
命令时发出这些请求。
流程图
服务器端实施 server-side-implementation
如果您有服务器端实施,则可以使用一个AEPEdge NetworkAPI。
以下步骤在一个网页的示例Edge NetworkAPI实现中描述了获取由基于代码的体验历程和营销活动在Edge上发布的内容并显示个性化内容的过程。
工作原理
-
已请求该网页,并且包含以前由浏览器存储的以
kndctr_
为前缀的所有Cookie。 -
从应用服务器请求该页面时,会向交互式数据收集终结点发送一个事件以获取个性化内容。 此示例应用程序使用一些帮助程序方法来简化生成请求并将请求发送到API(请参阅aepEdgeClient.js)。 但请求只是具有包含事件和查询的有效负载的
POST
。 上一步骤中的Cookie(如果可用)包含在meta>state>entries
数组的请求中。code language-javascript fetch( "https://edge.adobedc.net/ee/v2/interact?dataStreamId=abc&requestId=123", { headers: { accept: "*/*", "accept-language": "en-US,en;q=0.9", "cache-control": "no-cache", "content-type": "text/plain; charset=UTF-8", pragma: "no-cache", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "cross-site", "sec-gpc": "1", "Referrer-Policy": "strict-origin-when-cross-origin", Referer: "https://localhost/", }, body: JSON.stringify({ event: { xdm: { eventType: "decisioning.propositionFetch", web: { webPageDetails: { URL: "https://localhost/", }, webReferrer: { URL: "", }, }, identityMap: { FPID: [ { id: "xyz", authenticatedState: "ambiguous", primary: true, }, ], }, timestamp: "2022-06-23T22:21:00.878Z", }, data: {}, }, query: { identity: { fetch: ["ECID"], }, personalization: { schemas: [ "https://ns.adobe.com/personalization/default-content-item", "https://ns.adobe.com/personalization/html-content-item", "https://ns.adobe.com/personalization/json-content-item", "https://ns.adobe.com/personalization/redirect-item", "https://ns.adobe.com/personalization/dom-action", ], surfaces: ["web://localhost/","web://localhost/#sample-json-content"], }, }, meta: { state: { domain: "localhost", cookiesEnabled: true, entries: [ { key: "kndctr_XXX_AdobeOrg_identity", value: "abc123", }, { key: "kndctr_XXX_AdobeOrg_cluster", value: "or2", }, ], }, }, }), method: "POST", } ).then((res) => res.json());
-
从响应中读取基于代码的体验历程和营销活动中的JSON体验,并在生成HTML响应时使用。
-
对于基于代码的体验历程和营销活动,必须在实施中手动发送显示事件,以指示何时显示历程或营销活动内容。 在此示例中,通知在请求生命周期期间在服务器端发送。
code language-javascript function sendDisplayEvent(aepEdgeClient, req, propositions, cookieEntries) { const address = getAddress(req); aepEdgeClient.interact( { event: { xdm: { web: { webPageDetails: { URL: address }, webReferrer: { URL: "" }, }, timestamp: new Date().toISOString(), eventType: "decisioning.propositionDisplay", _experience: { decisioning: { propositions: propositions.map((proposition) => { const { id, scope, scopeDetails } = proposition; return { id, scope, scopeDetails, }; }), }, }, }, }, query: { identity: { fetch: ["ECID"] } }, meta: { state: { domain: "", cookiesEnabled: true, entries: [...cookieEntries], }, }, }, { Referer: address, } ); }
-
当返回HTML响应时,应用服务器将在响应中设置标识和群集Cookie。
主要意见
Cookie
Cookie用于保留用户标识和群集信息。 在使用服务器端实施时,应用程序服务器必须在请求生命周期内处理这些Cookie的存储和发送。
请求放置
需要向Adobe Experience Platform API发出请求才能获取建议并发送显示通知。 在使用客户端实施时,Web SDK会在使用sendEvent
命令时发出这些请求。
流程图
混合实现 hybrid-implementation
如果您有混合实施,请查看以下链接。
- Adobe技术博客:Adobe Experience Platform Web SDK中的Hybrid Personalization
- SDK文档:使用Web SDK和Edge Network服务器API的混合个性化