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

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

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

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

event

event オブジェクトは、ルールをトリガーしたイベントを表します。event には、次の値を含む単一のプロパティ rule が含まれます。

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

request

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

logger.log(context.arc.request)

request オブジェクトには、bodyhead の 2 つの最上位プロパティがあります。body プロパティには Experience Data Model(XDM)情報が含まれており、「Launch」に移動して「Edge Trace」タブを選択すると、Adobe Experience Platform Debugger で調べることができます。

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 として使用すると、他のアクションによって以前設定されたデータが拡張機能から失われることなく、新しいデータを追加できます。

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

ユーティリティ

utils プロパティは、Platform Launch ランタイムに固有のユーティリティを提供するオブジェクトを表します。

logger

logger ユーティリティを使用すると、Adobe Experience Cloud 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

このユーティリティは、現在の Platform Launch ランタイムライブラリのビルドに関する情報を含むオブジェクトを返します。

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 ルール名。

このページ

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now