這些指示適用於擁有混合式伺服器端及用戶端 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 呼叫。例如在瀏覽器中: