要將事件資料發送到Adobe Experience Cloud,請使用 sendEvent
的子菜單。 的 sendEvent
命令是將資料發送到 Experience Cloud,並檢索個性化內容、身份和受眾目標。
發往Adobe Experience Cloud的資料分為兩類:
XDM資料是一個對象,其內容和結構與您在Adobe Experience Platform內建立的架構匹配。 瞭解有關如何建立架構的詳細資訊。
您希望成為分析、個性化、受眾或目標的一部分的任何XDM資料都應使用 xdm
的雙曲餘切值。
alloy("sendEvent", {
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
時間可能會在 sendEvent
命令,並且當資料發送到伺服器時(例如,如果Web SDK庫尚未完全載入或尚未收到同意)。 如果要修改 xdm
執行後的對象 sendEvent
命令,強烈建議您克隆 xdm
對象 先 執行 sendEvent
的子菜單。 例如:
var clone = function(value) {
return JSON.parse(JSON.stringify(value));
};
var dataLayer = {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
};
alloy("sendEvent", {
"xdm": clone(dataLayer)
});
// This change will not be reflected in the data sent to the
// server for the prior sendEvent command.
dataLayer.commerce = null;
在此示例中,資料層是通過將其序列化到JSON,然後反序列化來克隆的。 接下來,將克隆的結果傳遞到 sendEvent
的子菜單。 這樣可確保 sendEvent
命令具有資料層的快照,與 sendEvent
命令已執行,以便以後對原始資料層對象的修改不會反映在發送到伺服器的資料中。 如果使用事件驅動資料層,則克隆資料可能已自動處理。 例如,如果您使用 Adobe客戶端資料層,也請參見Wiki頁。 getState()
方法提供所有先前更改的計算克隆快照。 如果您使用的是Adobe Experience PlatformWeb SDK標籤擴展,系統也會自動處理此問題。
在XDM欄位中,每個事件中都可發送的資料有32 KB的限制。
應使用 data
選項 sendEvent
的子菜單。 Web SDK的2.5.0版和更高版本支援此功能。
如果您需要更新Adobe Target配置檔案或發送目標Recommendations屬性,則此功能非常有用。 閱讀有關這些目標功能的詳細資訊。
將來,您將能夠在 data
並將其映射到XDM伺服器端。
如何將配置檔案和Recommendations屬性發送到Adobe Target:
alloy("sendEvent", {
data: {
__adobe: {
target: {
"profile.gender": "female",
"profile.age": 30,
"entity.id": "123",
"entity.genre": "Drama"
}
}
}
});
eventType
在XDM ExperienceEvent架構中,有一個可選 eventType
的子菜單。 這將保存記錄的主事件類型。 設定事件類型有助於區分要發送的不同事件。 XDM提供了幾種預定義的事件類型,您可以使用這些類型,或者始終為使用案例建立自己的自定義事件類型。 請參閱XDM文檔,瞭解 所有預定義事件類型的清單。
如果使用標籤副檔名,則這些事件類型將顯示在下拉清單中,或者您始終可以在不帶標籤的情況下傳遞它們。 它們可以作為 xdm
的雙曲餘切值。
alloy("sendEvent", {
"xdm": {
"eventType": "commerce.purchases",
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
或者, eventType
可以使用 type
的雙曲餘切值。 在幕後,這被添加到XDM資料中。 擁有 type
作為選項,您可以更輕鬆地 eventType
不必修改XDM負載。
var myXDMData = { ... };
alloy("sendEvent", {
"xdm": myXDMData,
"type": "commerce.purchases"
});
在某些使用情況下,您可能希望將事件發送到配置UI中配置的資料集以外的資料集。 為此,你需要 datasetId
的上界 sendEvent
命令:
var myXDMData = { ... };
alloy("sendEvent", {
"xdm": myXDMData,
"type": "commerce.checkout",
"datasetId": "YOUR_DATASET_ID"
});
自定義標識資訊也可以添加到事件中。 請參閱 正在檢索Experience CloudID。
在網頁用戶導航之前發送事件資料可能比較困難。 如果請求過長,瀏覽器可能會取消請求。 某些瀏覽器已實現了一個名為 sendBeacon
以便在此期間更輕鬆地收集資料。 使用時 sendBeacon
,瀏覽器在全局瀏覽上下文中發出web請求。 這表示瀏覽器在後台發出信標請求,並且不會保留頁面導航。 告訴Adobe Experience Platform Web SDK 使用 sendBeacon
,添加選項 "documentUnloading": true
命令。 其範例如下:
alloy("sendEvent", {
"documentUnloading": true,
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
瀏覽器已對可與之一起發送的資料量進行了限制 sendBeacon
曾經。 在許多瀏覽器中,限制是6萬4千。 如果瀏覽器由於負載太大而拒絕該事件,Adobe Experience Platform Web SDK 回退到使用其常規傳輸方法(例如,提取)。
如果要處理來自事件的響應,可以通知您成功或失敗,如下所示:
alloy("sendEvent", {
"renderDecisions": true,
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
}).then(function(result) {
// Tracking the event succeeded.
})
.catch(function(error) {
// Tracking the event failed.
});
result
對象的 sendEvent
命令返回用 result
的雙曲餘切值。 的 result
對象包含以下屬性:
命題:「個性化」提供訪問者已經有資格使用。 瞭解有關主張的更多資訊。
決策:此屬性已棄用。 請改用 propositions
。
目的地:可與外部個性化平台、內容管理系統、廣告伺服器以及客戶網站上運行的其他應用程式共用的Adobe Experience Platform網段。 瞭解有關目標的詳細資訊。
destinations
當前為Beta。 文檔和功能可能會更改。
如果要全局添加、刪除或修改事件中的欄位,可以配置 onBeforeEventSend
回叫。 每次發送事件時都調用此回調。 此回調在具有 xdm
的子菜單。 修改 content.xdm
更改隨事件一起發送的資料。
alloy("configure", {
"edgeConfigId": "ebebf826-a01f-4458-8cec-ef61de241c93",
"orgId": "ADB3LETTERSANDNUMBERS@AdobeOrg",
"onBeforeEventSend": function(content) {
// Change existing values
content.xdm.web.webPageDetails.URL = xdm.web.webPageDetails.URL.toLowerCase();
// Remove existing values
delete content.xdm.web.webReferrer.URL;
// Or add new values
content.xdm._adb3lettersandnumbers.mycustomkey = "value";
}
});
xdm
按此順序設定欄位:
alloy("sendEvent", { xdm: ... });
onBeforeEventSend
回叫。關於 onBeforeEventSend
回調:
可在回調期間修改事件XDM。 在回調後,將隨事件一起發送content.xdm和content.data對象的任何修改的欄位和值。
onBeforeEventSend: function(content){
//sets a query parameter in XDM
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
content.xdm.marketing.trackingCode = urlParams.get('cid')
}
如果回調引發異常,則事件的處理將中止,而事件不會發送。
如果回調返回的布爾值為 false
,事件處理將中止,而無錯誤,並且事件不會發送。 此機制允許通過檢查事件資料並返回來輕鬆忽略某些事件 false
的子菜單。
應注意避免在頁面上的第一個事件返回false。 在第一個事件上返回false可能會對個性化產生負面影響。
onBeforeEventSend: function(content) {
// ignores events from bots
if (MyBotDetector.isABot()) {
return false;
}
}
除布爾值以外的任何返回值 false
將允許事件在回調後處理和發送。
onBeforeEventSend: function(content) {
// augments XDM if link click event is to a partner website
if (
content.xdm.eventType === "web.webinteraction.linkClicks" &&
content.xdm.web.webInteraction.URL ===
"http://example.com/partner-page.html"
) {
content.xdm.partnerWebsiteClick = true;
}
}
在發送事件時,如果發送的資料太大(對於完整請求,超過32KB),可能會引發錯誤。 在這種情況下,您需要減少要發送的資料量。