这些说明适用于采用 Target、Analytics 和 ID 服务的混合服务器和客户端实施的 A4T 客户。需要在 NodeJS 或 Rhino 环境中运行 ID 服务的客户也应该查看此信息。此 ID 服务实例使用缩减版 VisitorAPI.js 代码库,您可以从 Node Package Manager (NPM) 下载和安装该代码库。请查看此部分,了解安装说明和其他配置要求。
A4T(和其他客户)可以在以下情况下使用此版本的 ID 服务:
请参阅 ID 服务 NPM 存储库以下载服务器端代码包并查看当前内部版本中包含的界面。
以下图表和部分介绍了在服务器端实施流程的每个步骤中所发生的情况,以及您需要配置的具体内容。
当访客发出加载网页的 HTTP 请求时,服务器端活动即会开始。在此步骤中,您的服务器会接收此请求并检查 AMCV Cookie。AMCV Cookie 包含访客的 Experience Cloud ID (MID)。
接下来,您需要向 ID 服务发起服务器端 payload request
。载荷请求会:
此方法会从 Target 中请求一个 mbox。如果您需要在一次调用中请求多个 mbox,请参阅 generateBatchPayload。
您的负载请求应当类似于以下代码示例。在此代码示例中,visitor.setCustomerIDs
函数是可选的。请参阅客户 ID 和身份验证状态以了解更多信息。
//Import the ID service server package
var Visitor = require("@adobe-mcid/visitor-js-server");
//Pass in your Organization ID to instantiate Visitor
var visitor = new Visitor("Insert Experience Cloud ID here");
//
<i>(Optional)</i> Set a custom customer ID
visitor.setCustomerIDs({
userid:{
id:"1234",
authState: Visitor.AuthState.UNKNOWN //AuthState is a static property of the Visitor class
}
});
//Parse the visitor's HTTP request for the AMCV cookie
var cookies = cookie.parse(req.headers.cookie || "");
var cookieName = visitor.getCookieName(); // Visitor API that returns the cookie name.
var amcvCookie = cookies[cookieName];
//Generate the payload request pass your mbox name and the AMCV cookie if present
var visitorPayload = visitor.generatePayload({
mboxName: "bottom-banner-mbox",
amcvCookie: amcvCookie
});
ID 服务在 JSON 对象中返回负载,它类似于如下示例。Target 需要使用该负载数据。
{
"marketingCloudVisitorId": "02111696918527575543455026275721941645",
"mboxParameters": {
"mboxAAMB": "abcd1234",
"mboxMCGLH": "9",
"mboxMCSDID": "56BE026543F7E211-1CC51BCAAE88F0D2",
"vst.userid.id": "1234567890",
"vst.userid.authState": 0
}
}
如果您的访客没有 AMCV Cookie,则负载会忽略以下键值对:
marketingCloudvisitorId
mboxAAMB
mboxMCGLH
在您的服务器收到来自 ID 服务的负载数据之后,您需要实例化其他代码,以将其与传递到 Target 中的数据合并。传递到 Target 的最终 JSON 对象应类似于以下形式:
{
"mbox" : "target-global-mbox",
"marketingCloudVisitorId":"02111696918527575543455026275721941645",
"requestLocation" : {
"pageURL" : "http://www.domain.com/test/demo.html",
"host" : "localhost:3000"
},
"mboxParameters" : {
"mboxAAMB" : "abcd1234",
"mboxMCGLH" : "9",
"mboxMCSDID": "56BE026543F7E211-1CC51BCAAE88F0D2",
"vst.userid.id": "1234567890",
"vst.userid.authState": 0,
}
}
服务器状态数据包含在服务器上完成的工作的相关信息。客户端 ID 服务代码需要此信息。对于已通过 Dynamic Tag Manager (DTM) 实施 ID 服务的客户,可以配置 DTM 以通过该工具传递服务器状态数据。如果您是通过非标准流程设置的 ID 服务,则将需要使用您自己的代码返回服务器状态。客户端 ID 服务和 Analytics 代码会在页面加载时将状态数据传递到 Adobe。
通过 DTM 获取服务器状态
如果您是通过 DTM 实施的 ID 服务,则需要将代码添加到您的页面,并在 DTM 设置中指定一个名称-值对。
页面代码
将此代码添加到 HTML 页面的 <head>
标记中:
//Get server state
var serverState = visitor.getState();
Response.send("
...
<head>
<script>
//Add 'serverState' as a stringified JSON global variable.
"var serverState = "+ JSON.stringify(serverState) +";
</script>
<script src = "DTM script (satellite JS)">
</script>
</head>
...
DTM 设置
将它们作为名称-值对添加到 ID 服务实例的常规 > 设置部分中:
名称: serverState
值:%serverState%
值名称必须与在页面代码中为 serverState
设置的变量名称匹配。
您配置的设置应该如下所示:
在没有使用 DTM 的情况下获取服务器状态
如果您的 ID 服务是非标准实施,则必须将以下代码配置为在组织请求页面时在您的服务器上运行:
//Get server state
var serverState = visitor.getState();
Response.send("
...
<head>
<script src="VisitorAPI.js"></script>
<script>
var visitor = Visitor.getInstance(orgID, {
serverState: serverState
...
</script>
</head>
...
在这个时候,Web 服务器将页面内容发送到访客的浏览器。从此刻起,浏览器(不是服务器)发起所有剩余的 ID 服务和 Analytics 调用。例如,在浏览器中: