エッジ拡張機能モジュールのコンテキスト
エッジ拡張機能内のすべてのライブラリモジュールには、実行時に context オブジェクトが提供されます。 このドキュメントでは、context オブジェクトによって提供されるプロパティと、それらがライブラリモジュールで果たす役割について説明します。
Adobe リクエストのコンテキスト(arc)
arc プロパティは、ルールをトリガーするイベントに関する情報を提供するオブジェクトです。以下の節では、このオブジェクトに含まれる様々なサブプロパティについて説明します。
event
event オブジェクトは、ルールをトリガーしたイベントを表し、次の値を含みます。
logger.log(context.arc.event);
xdmdatarequest
request は Adobe Experience Platform Edge Network からのオブジェクトで、クライアントデバイスからのリクエストと混同されないように、少し変更されています。
logger.log(context.arc.request)
request オブジェクトには、body と head の 2 つの最上位プロパティがあります。body プロパティには Experience Data Model(XDM)情報が含まれており、「Launch」に移動して「エッジトレース」タブを選択すると、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 の 2 つのアクションが含まれているとします。これら 2 つのアクションはルールに追加されます。
generate-fullname アクションの結果が Firstname Lastname の場合、アクションの完了後、ルールが次のように表示されます。
{
transform: 'Firstname Lastname'
}
generate-address アクションの結果が 3900 Adobe Way の場合、アクションの完了後、ルールが次のように表示されます。
{
transform: '3900 Adobe Way'
}
generate-address アクションによって新しい値で上書きされたので、「Firstname Lastname」はルール内に存在しなくなりました。
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