エッジ拡張機能モジュールのコンテキスト

NOTE
Adobe Experience Platform Launch は、Adobe Experience Platform のデータ収集テクノロジースイートとしてリブランドされています。 その結果、製品ドキュメント全体でいくつかの用語が変更されました。用語の変更点の一覧については、次のドキュメントを参照してください。

エッジ拡張機能内のすべてのライブラリモジュールには、実行時に context オブジェクトが提供されます。 このドキュメントでは、context オブジェクトによって提供されるプロパティと、それらがライブラリモジュールで果たす役割について説明します。

Adobe リクエストのコンテキスト(arc)

arc プロパティは、ルールをトリガーするイベントに関する情報を提供するオブジェクトです。以下の節では、このオブジェクトに含まれる様々なサブプロパティについて説明します。

event

event オブジェクトは、ルールをトリガーしたイベントを表し、次の値を含みます。

logger.log(context.arc.event);
プロパティ
説明
xdm
イベントの XDM オブジェクト。
data
カスタムデータレイヤー。

request

request は Adobe Experience Platform Edge Network からのオブジェクトで、クライアントデバイスからのリクエストと混同されないように、少し変更されています。

logger.log(context.arc.request)

request オブジェクトには、bodyhead の 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-fullnamegenerate-fulladdress の 2 つのアクションが含まれているとします。これら 2 つのアクションはルールに追加されます。

generate-fullname アクションの結果が Firstname Lastname の場合、アクションの完了後、ルールが次のように表示されます。

{
  transform: 'Firstname Lastname'
}

generate-address アクションの結果が 3900 Adobe Way の場合、アクションの完了後、ルールが次のように表示されます。

{
  transform: '3900 Adobe Way'
}

generate-address アクションによって新しい値で上書きされたので、「Firstname Lastname」はルール内に存在しなくなりました。

ruleStashtransform 名前空間内に両方のアクションの結果を格納する場合は、次の例のようなアクションモジュールを記述します。

module.exports = (context) => {
  let transformRuleStash = context.arc.ruleStash.transform;

  if (!transformRuleStash) {
    transformRuleStash = {};
  }

  transformRuleStash.fullName = 'Firstname Lastname';

  return transformRuleStash;
}

このアクションを初めて実行する場合、ruleStashundefined で始まり、空のオブジェクトとして初期化されます。次にアクションが実行されると、このアクションが以前呼び出されたときに返された ruleStash を受け取ります。オブジェクトを ruleStash として使用すると、他のアクションによって以前設定されたデータが拡張機能から失われることなく、新しいデータを追加できます。

NOTE
この方法を使用する場合は、常に完全な拡張機能ルールを返すように注意してください。値のみを返すと、設定した他のプロパティが上書きされます。

ユーティリティ

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
現在のライブラリ内で使用されている Turbine バージョン。
turbineBuildDate
コンテナ内で使用されている Turbine のバージョンが作成された日付(ISO 8601 形式)。
buildDate
現在のライブラリが構築された日付(ISO 8601 形式)。
environment
このライブラリが構築された環境。developmentstagingproduction. などの値が使用されます。

次の例は、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
ルール ID。
name
ルール名。
recommendation-more-help
12b4e4a9-5028-4d88-8ce6-64a580811743