這些指示適用於擁有混合式伺服器端及用戶端 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。If you need to request multiple mboxes in a single call, see 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
設定的變數名稱。
您設定的設定應如下所示:
See also, Experience Cloud Identity Service Settings for DTM.
不透過 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 呼叫。例如,在瀏覽器中: