エッジ拡張機能モジュールのコンテキスト
エッジ拡張機能内のすべてのライブラリモジュールには、実行時に context
オブジェクトが提供されます。 このドキュメントでは、context
オブジェクトによって提供されるプロパティと、それらがライブラリモジュールで果たす役割について説明します。
Adobe リクエストのコンテキスト(arc)
arc
プロパティは、ルールをトリガーするイベントに関する情報を提供するオブジェクトです。以下の節では、このオブジェクトに含まれる様々なサブプロパティについて説明します。
event
event
オブジェクトは、ルールをトリガーしたイベントを表し、次の値を含みます。
logger.log(context.arc.event);
xdm
data
request
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);
オブジェクトには、次の値が含まれています。
turbineVersion
turbineBuildDate
buildDate
environment
development
、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());
このオブジェクトには次の値が含まれます。
id
name