邊緣擴充功能模組中的內容
邊緣擴充功能中的所有程式庫模組執行時,系統都會為其提供 context 物件。本文介紹 context 物件所提供的屬性,並說明這些屬性在程式庫模組中扮演的角色。
Adobe Request Context (arc)
arc 屬性是提供觸發規則之事件相關資訊的物件。下列各節會說明此物件中包含的多個子屬性。
event
event物件代表觸發規則的事件,並包含下列值:
logger.log(context.arc.event);
xdmdatarequest
request 是來自 Adobe Experience Platform Edge Network 且經略微修改的物件,切勿與用戶端裝置的要求混為一談。
logger.log(context.arc.request)
request 物件有兩個頂層屬性:body 和 head。body 屬性內含 Experience Data Model (XDM) 資訊,只要您導覽至 Launch 並選取「Edge Trace」索引標籤,即可在 Adobe Experience Platform Debugger 中查看。
ruleStash rulestash
ruleStash 物件會收集動作模組的每個結果。
logger.log(context.arc.ruleStash);
每個擴充功能都有專屬的命名空間。舉例來說,如果您的擴充功能名為 send-beacon,則 send-beacon 動作的所有結果都會儲存在 ruleStash['send-beacon'] 命名空間。
每個擴充功能的命名空間都是獨一無二,其開頭的值為 undefined。
每個動作傳回的結果將會覆寫命名空間。例如,假設 transform 擴充功能包含下列兩個動作:generate-fullname 和 generate-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;
}
第一次執行此動作時,ruleStash 會以 undefined 開頭,系統會以空白物件來初始化。下次執行動作時,會收到先前呼叫動作時傳回的 ruleStash。若將物件作為 ruleStash 使用,您就能新增資料,同時不會失去擴充功能中其他動作先前設定的資料。
公用程式
utils屬性代表提供標籤執行階段專屬公用程式的物件。
logger
logger公用程式可讓您記錄使用Adobe Experience Platform Debugger時偵錯工作階段顯示的訊息。
context.utils.logger.error('Error!');
記錄程式會採取下列方法,而 message 是您要記錄的訊息:
log(message)info(message)warn(message)error(message)debug(message)verbose 記錄時,系統才會顯示此方法。fetch
此公用程式會實作 Fetch API。您可以使用函數向第三方端點提出要求。
context.utils.fetch('http://example.com/movies.json')
.then(response => response.json())
getBuildInfo
此公用程式會傳回物件,內含目前標籤執行階段程式庫組建的相關資訊。
logger.log(context.utils.getBuildInfo().turbineBuildDate);
此物件包含下列值:
turbineVersionturbineBuildDatebuildDateenvironmentdevelopment、staging 和 production.。以下以 getBuildInfo 物件為例加以示範,其傳回的值為:
{
turbineVersion: "1.0.0",
turbineBuildDate: "2016-07-01T18:10:34Z",
buildDate: "2016-03-30T16:27:10Z",
environment: "development"
}
getExtensionSettings
此公用程式會傳回您上次從擴充功能組態檢視儲存的 settings 物件。
logger.log(context.utils.getExtensionSettings());
getSettings
此公用程式會傳回您上次從相對應程式庫模組檢視中儲存的 settings 物件。
logger.log(context.utils.getSettings());
getRule
此公用程式會傳回內含觸發模組之規則相關資訊的物件。
logger.log(context.utils.getRule());
物件包含下列值:
idname