核心事件轉發擴展概述

注意

Adobe Experience Platform Launch已被改名為Adobe Experience Platform的一套資料收集技術。 因此,所有產品文件中出現了幾項術語變更。 如需術語變更的彙整參考資料,請參閱以下文件

核心事件轉發擴展提供預設事件、條件和資料類型,用於Adobe Experience Platform的事件轉發。

您可參閱此參考文件,了解使用此擴充功能建立規則時可使用哪些選項。

核心擴充功能條件類型

本節說明核心擴充功能中可用的條件類型。這些條件類型可與正常或例外邏輯類型一起使用。

自訂程式碼

指定必須存在作為事件條件的任何自訂程式碼。使用內建程式碼編輯器輸入自訂程式碼。Adobe Experience Platform的事件轉發支援ES6。

  1. 選擇 開啟編輯器
  2. 輸入自訂程式碼。
  3. 選取「儲存」。

若要存取自訂程式碼中資料元素的值,請使用 getDataElementValue 方法。舉例來說,若要擷取資料元素 productName 的值,請編寫以下內容:

getDataElementValue('productName')

ruleStash 物件

您也可以在自訂程式碼中使用 ruleStash 物件。

utils.logger.log(context.arc.ruleStash);

ruleStash 是收集動作模組各個結果的物件。

每個擴充功能都有專屬的命名空間。舉例來說,如果您的擴充功能名為 send-beacon,則 send-beacon 動作的所有結果都會儲存在 ruleStash['send-beacon'] 命名空間。

utils.logger.log(context.arc.ruleStash['adobe-cloud-connector']);

每個擴充功能的命名空間都是獨一無二,其開頭的值為 undefined

每個動作傳回的結果將會覆寫命名空間。命名空間沒有什麼神奇的魔法發生。舉例來說,如果您擁有 transform 擴充功能,請先加入 generate-fullnamegenerate-fulladdress 兩個動作,然後將兩個動作新增至規則。

如果 generate-fullname 動作的結果為 Firstname Lastname,動作完成後,規則隱藏項目會如下所示:

{
  transform: 'Firstname Lastname`
}

如果 generate-address 動作的結果為 3900 Adobe Way,動作完成後,規則隱藏項目則會如下所示:

{
  transform: '3900 Adobe Way`
}

請注意,規則隱藏項目中不再有 Firstname Lastname,這是因為 generate-address 動作會以地址來加以覆寫。

如果要將這兩個動作的結果儲存於 ruleStash 中的 transform 命名空間,可參考以下範例編寫動作模組:

module.exports = (context) => {
  let transformRuleStash = context.arc.ruleStash.transform;
  if (!transformRuleStash) {
    transformRuleStash = {};
  }
  transformRuleStash.fullName = 'Firstname Lastname';
  return transformRuleStash;
}

第一次執行此動作時,ruleStashundefined,系統會以空白物件來初始化。下次執行此動作時,動作會傳回先前呼叫時的 ruleStash。若將物件作為 ruleStash 使用,您就能新增資料,同時不會失去擴充功能中其他動作先前設定的資料。

必須注意的是,在這個情況下,您必須一律傳回完整擴充功能規則的隱藏項目。如果只傳回值 (例如 5),規則隱藏項目會如下所示:

{
  transform: 5
}

值比較

比較兩個值以判斷此條件是否傳回 true。

如果規則具有多個條件,則可能因為其他條件評估為 false,或有一個例外評估為 true,造成此條件會傳回 true,但規則仍不會引發。

  1. 提供一個值。
  2. 選取運算子。請參閱下方的值比較運算子清單,以了解詳細資訊。
  3. 提供另一個值作為比較對象。

可使用下列的值比較運算子:

等於:​如果使用非嚴格比較,且兩值相等 (在 JavaScript 中為「==」運算子),則條件會傳回 true。值可為任何類型。在值欄位中輸入 truefalsenullundefined 時,系統會將該字詞當成字串進行比較,且不會轉換為其 JavaScript 相等值。

不等於:​如果使用非嚴格 (non-strict) 比較,且兩值不相等 (在 JavaScript 中為「! =」運算子),則條件會傳回 true。值可為任何類型。在值欄位中輸入 truefalsenullundefined 時,系統會將該字詞當成字串進行比較,且不會轉換為其 JavaScript 相等值。

包含:​如果第一個值包含第二個值,則條件會傳回 true。數字會轉換為字串。數字或字串以外的任何值會都導致條件傳回 false。

不包含:​如果第一個值不包含第二個值,則條件會傳回 true。數字會轉換為字串。數字或字串以外的任何值都會導致條件傳回 true。

開頭為:​如果第一個值開頭為第二個值,則條件會傳回 true。數字會轉換為字串。數字或字串以外的任何值會都導致條件傳回 false。

開頭非為:​如果第一個值的開頭不是第二個值,則條件會傳回 true。數字會轉換為字串。數字或字串以外的任何值會都導致條件傳回 true。

結尾為:​如果第一個值的結尾是第二個值,則條件會傳回 true。數字會轉換為字串。數字或字串以外的任何值會都導致條件傳回 false。

結尾非為:​如果第一個值的結尾不是第二個值,則條件會傳回 true。數字會轉換為字串。數字或字串以外的任何值會都導致條件傳回 true。

符合 Regex:​如果第一個值符合規則運算式,則條件會傳回 true。數字會轉換為字串。數字或字串以外的任何值會都導致條件傳回 false。

不符合 Regex:​如果第一個值不符合規則運算式,則條件會傳回 true。數字會轉換為字串。數字或字串以外的任何值會都導致條件傳回 true。

小於:​如果第一個值小於第二個值,則條件會傳回 true。代表數字的字串會轉換為數字。數字或可轉換字串以外的任何值都會導致條件傳回 false。

小於或等於:​如果第一個值小於或等於第二個值,則條件會傳回 true。代表數字的字串會轉換為數字。數字或可轉換字串以外的任何值都會導致條件傳回 false。

大於:​如果第一個值大於第二個值,則條件會傳回 true。代表數字的字串會轉換為數字。數字或可轉換字串以外的任何值都會導致條件傳回 false。

大於或等於:​如果第一個值大於或等於第二個值,則條件會傳回 true。代表數字的字串會轉換為數字。數字或可轉換字串以外的任何值都會導致條件傳回 false。

為 True:​如果值是布林值且為 true,則條件會傳回 true。若提供的值是任何其他類型,則不會轉換為布林值。帶有 true 值的布林值以外的任何值都會導致條件傳回 false。

為 Truthy:​如果值在轉換為布林值後為 true,條件會傳回 true。如需 Truthy 值的範例,請參閱 MDN 的 Truthy 文件

為 False:​如果值是布林值且為 false,則條件會傳回 true。若提供的值是任何其他類型,則不會轉換為布林值。帶有 false 值的布林值以外的任何值都會導致條件傳回 false。

為 Falsy:​如果值轉換為布林值後為 false,條件會傳回 true。如需 Falsy 值的範例,請參閱 MDN 的 Falsy 文件

核心擴充功能動作類型

本節說明核心擴充功能中可用的動作類型。

自訂程式碼

提供觸發事件和評估條件後執行的程式碼。Adobe Experience Platform的事件轉發支援ES6。

  1. 為動作程式碼命名。
  2. 選擇 開啟編輯器
  3. 編輯代碼,然後選擇 保存

若要存取自訂程式碼中資料元素的值,請使用 getDataElementValue 方法。舉例來說,若要擷取資料元素 productName 的值,請編寫以下內容:

getDataElementValue('productName')

事件轉發操作按順序執行。 自訂程式碼也可以在一個動作中傳回可用於後續動作的值。傳回的值可能來自該動作中的程式碼,或來自呼叫外部來源的回應內文。若要參照使用核心擴充功能之單一規則中先前執行動作的資料,請建立 Path 類型資料元素,並使用以下路徑來參照核心擴充功能中自訂程式碼定義之 productCategory 變數的值:

arc.ruleStash.[Extension-Name].[key-as-defined-by-action]

arc.ruleStash.core.productCategory

核心擴充功能資料元素類型

資料元素類型由擴充功能決定。可建立的類型沒有限制。

以下各節會說明核心擴充功能中可用的資料元素類型。其他擴充功能則使用其他類型的資料元素。

自訂程式碼

通過選擇 開啟編輯器 並在編輯器窗口中插入代碼。

編輯器視窗中需有傳回陳述式,以指明應作為資料元素值使用的值。如果未包含傳回陳述式,或系統傳回 nullundefined 值,則資料元素的預設值會反映 nullundefined

若要存取自訂程式碼中資料元素的值,請使用 getDataElementValue 方法。舉例來說,若要擷取資料元素 productName 的值,請編寫以下內容:

getDataElementValue('productName')

範例:

return getDataElementValue('section').concat(getDataElementValue('pName'));

路徑

如果是傳送至 Adobe Experience Platform Edge Network 的事件,可使用「路徑」資料元素類型來參照其索引鍵/值組路徑。

若要參照事件的整個物件,請輸入 arc 作為路徑。縮寫 arc 代表 Adobe Resource Context,這是傳送至 Adobe Experience Platform Edge Network 之事件的最上層路徑。

舉例來說,假設用戶端對 Edge Network 的 interact 呼叫中具有以下要求,瀏覽器主控台顯示的畫面如下:

"events": [
        {
             "xdm": {
                    "page": {
                            "btnHover": false,
                            "pageName": "We Travel Home Page",
                            "siteSection": "Landing Page"
                     }]

若要輸入參照 pageName 的路徑,請在路徑欄位中輸入以下內容:

arc.event.xdm.page.pageName
注意

interact 來自客戶端的呼叫 events但是,對於事件轉發,您需要 event。 這是因為事件轉發會單獨檢查每個事件,而不是像客戶端上所示那樣作為多個事件的批處理。

本頁內容