此頁面說明伺服器SDK sendEvent方法。 若為Web SDK,請參閱sendEvent.
sendEvent方法是從您的伺服器傳送資料至Adobe的主要方式。 其結果也是您擷取個人化內容的方式。 使用xdm物件來傳送對應至您Adobe Experience Platform結構描述的資料,並使用data物件來傳送其他資料。
在configure解析後,呼叫目前訪客的forRequest控制代碼上的sendEvent:
const visitor = alloy.forRequest({ request: req });
const result = await visitor.sendEvent({
type: "commerce.purchases",
xdm: {
identityMap: {
Email: [{ id: "visitor@example.com", primary: true }]
},
commerce: {
purchases: { value: 1 },
order: {
purchaseID: "a8g784hjq1mnp3",
currencyCode: "USD",
priceTotal: 999.98
}
}
},
data: {
loyaltyTier: "gold"
},
personalization: {
decisionScopes: ["order-confirmation-offer"]
},
edgeConfigOverrides: {
com_adobe_analytics: {
reportSuites: ["examplersid1"]
}
}
});
SDK會將每個事件傳送至位於server.adobedc.net的已驗證Edge Network伺服器API。 請參閱驗證。
需求 requirements
- 主要身分:每個事件都必須在
xdm.identityMap中包含主要身分。 如果不適用,Edge Network會拒絕事件。 請參閱xdm。 - 大小: SDK傳送的要求最多可達64 KB。 請參閱Edge Network API檔案中的護欄1}。
- 同意:如果訪客選擇退出,或
defaultConsent為"out"且訪客未選擇加入,則sendEvent會以空白物件解析,而不會傳送任何內容。
選項 options
如果您傳遞SDK無法辨識的選項,sendEvent會以Unknown field錯誤拒絕。
對伺服器沒有影響的選項 no-effect
伺服器SDK接受下列Web SDK選項,因此您可以與瀏覽器實作共用事件建置程式碼。 不過,它們取決於瀏覽器,對伺服器沒有影響:
renderDecisions: SDK永遠不會轉譯內容。 而是傳回結果中的主張。personalization.sendDisplayEvent、personalization.includeRenderedPropositions、personalization.defaultPersonalizationEnabled和personalization.decisionContext。advertising.
請勿在伺服器上設定documentUnloading。 它不會套用至瀏覽器之外。 對於已有身分的訪客,它會讓SDK以未驗證要求的形式將事件傳送至edgeDomain,而非傳送至已驗證的伺服器API。 該端點未傳回回應,因此sendEvent未傳回主張。
仍接受已棄用的datasetId和mergeId選項。 在edgeConfigOverrides中使用com_adobe_experience_platform.datasets.event.datasetId而非datasetId。
結果物件 result
sendEvent方法傳回Promise。 檢視處理結果。 Promise解析後,結果物件可包含以下屬性:
propositions: Edge Network針對您向personalization要求的範圍和介面傳回的個人化主張陣列。 此屬性僅當您要求個人化時才會出現。 SDK不會轉譯主張或將主張標籤為已轉譯。
如果您未要求個人化,或事件因同意或onBeforeEventSend而未傳送,則結果為空白物件。
const { propositions = [] } = await visitor.sendEvent({
xdm: {
eventType: "decisioning.propositionFetch",
identityMap: {
Email: [{ id: "visitor@example.com", primary: true }]
}
},
personalization: {
surfaces: ["web://example.com/home"]
}
});
不同於Web SDK,結果從未包含inferences或destinations。