Web SDK のフックの監視
Adobe Experience Platform Web SDK には、様々なシステムイベントを監視するために使用できるモニタリングフックが含まれています。 これらのツールは、独自のデバッグツールを開発したり、Web SDK ログを取得したりするのに役立ちます。
Web SDK は、 デバッグを有効にしているかどうかに関係なく、モニタリング関数をトリガーします。
onInstanceCreated
onInstanceCreated
このコールバック関数は、新しい Web SDK インスタンスが正常に作成されたときにトリガーされます。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onInstanceCreated(data) {
// data.instanceName
// data.instance
}
data.instanceName
data.instance
onInstanceConfigured
onInstanceConfigured
このコールバック関数は、configure
コマンドが正常に解決されると、Web SDK によってトリガーされます。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onInstanceConfigured(data) {
// data.instanceName
// data.config
}
data.instanceName
data.config
configure
コマンドに渡されるオプションです。onBeforeCommand
onBeforeCommand
このコールバック関数は、他のコマンドが実行される前に Web SDK によってトリガーされます。 この関数を使用すると、特定のコマンドの設定オプションを取得できます。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onBeforeCommand(data) {
// data.instanceName
// data.commandName
// data.options
}
data.instanceName
data.commandName
data.options
onCommandResolved
onCommandResolved
このコールバック関数は、コマンドのプロミスを解決するときにトリガーされます。 この関数を使用して、コマンド オプションと結果を確認できます。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onCommandResolved(data) {
// data.instanceName
// data.commandName
// data.options
// data.result
},
data.instanceName
data.commandName
data.options
data.result
onCommandRejected
onCommandRejected
このコールバック関数は、コマンドプロミスが拒否される前にトリガーされ、コマンドが拒否された理由に関する情報が含まれます。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onCommandRejected(data) {
// data.instanceName
// data.commandName
// data.options
// data.error
}
data.instanceName
data.commandName
data.options
data.error
fetch
)と、コマンドが拒否された理由を含むオブジェクト。onBeforeNetworkRequest
onBeforeNetworkRequest
このコールバック関数は、ネットワークリクエストが実行される前にトリガーされます。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onBeforeNetworkRequest(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
}
data.instanceName
data.requestId
requestId
。data.url
data.payload
POST
メソッドを介して、JSON 形式に変換され、リクエストの本文で送信されるネットワークリクエストペイロードオブジェクト。onNetworkResponse
onNetworkResponse
このコールバック関数は、ブラウザーが応答を受信したときにトリガーされます。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onNetworkResponse(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
// data.body
// data.parsedBody
// data.status
// data.retriesAttempted
}
data.instanceName
data.requestId
requestId
。data.url
data.payload
POST
メソッドを介してリクエストの本文で送信されるペイロードオブジェクト。data.body
data.parsedBody
data.status
data.retriesAttempted
onNetworkError
onNetworkError
このコールバック関数は、ネットワークリクエストが失敗したときにトリガーされます。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onNetworkError(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
// data.error
},
data.instanceName
data.requestId
requestId
。data.url
data.payload
POST
メソッドを介してリクエストの本文で送信されるペイロードオブジェクト。data.error
fetch
)と、コマンドが拒否された理由を含むオブジェクト。onBeforeLog
onBeforeLog
このコールバック関数は、Web SDK がコンソールに何かを記録する前にトリガーされます。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onBeforeLog(data) {
// data.instanceName
// data.componentName
// data.level
// data.arguments
}
data.instanceName
data.componentName
data.level
log
、info
、warn
、error
。data.arguments
onContentRendering
onContentRendering
このコールバック関数は、レンダリングの様々な段階で、personalization
コンポーネントによってトリガーされます。 ペイロードは、status
パラメーターによって異なる場合があります。 関数のパラメーターについて詳しくは、以下のサンプルを参照してください。
onContentRendering(data) {
// data.instanceName
// data.componentName
// data.payload
// data.status
}
data.instanceName
data.componentName
data.payload
POST
メソッドを介してリクエストの本文で送信されるペイロードオブジェクト。data.status
personalization
コンポーネントは、レンダリングのステータスを Web SDK に通知します。 サポートされている値:
rendering-started
:Web SDK が提案をレンダリングしようとしていることを示します。 Web SDK が決定範囲またはビューのレンダリングを開始する前に、data
オブジェクトでpersonalization
コンポーネントによってレンダリングされようとしている提案と範囲名を確認できます。no-offers
:リクエストされたパラメーターのペイロードを受信しなかったことを示します。rendering-failed
: Web SDK が提案をレンダリングできなかったことを示します。rendering-succeeded
:決定範囲のレンダリングが完了したことを示します。rendering-redirect
: Web SDK がリダイレクト提案をレンダリングすることを示します。
onContentHiding
onContentHiding
このコールバック関数は、事前非表示スタイルが適用または削除されたときにトリガーされます。
onContentHiding(data) {
// data.instanceName
// data.componentName
// data.status
}
data.instanceName
data.componentName
data.status
personalization
コンポーネントは、レンダリングのステータスを Web SDK に通知します。 サポートされている値:
hide-containers
show-containers
NPM パッケージの使用時に監視フックを指定する方法 specify-monitoris-npm
NPM パッケージを通じて Web SDK を使用している場合は、以下に示すように、createInstasnce
関数で監視フックを指定できます。
var monitor = {
onBeforeCommand(data) {
console.log(data);
},
...
};
var alloyLibrary = require("@adobe/alloy");
var alloy = alloyLibrary.createInstance({ name: "alloy", monitors: [monitor] });
alloy("config", { ... });
alloy("sendEvent", { ... });
例 example
Web SDK は、__alloyMonitors
というグローバル変数でオブジェクトの配列を検索します。
すべての Web SDK イベントを取得するには、Web SDK コードがページに読み込まれる前に、監視フックを定義する必要があります。 各監視方法は、Web SDK イベントをキャプチャします。
Web SDK コードがページに読み込まれる 後 監視フックを定義できますが、ページの読み込み前にトリガーされたフックは 取得されません。
モニタリングフックオブジェクトを定義する場合は、特別なロジックを定義するメソッドを定義するだけで済みます。
例えば、onContentRendering
のみを重視する場合は、そのメソッドのみを定義できます。 すべてのモニタリングフックを一度に使用する必要はありません。
複数のモニタリングフックオブジェクトを定義できます。 指定されたメソッドを持つすべてのオブジェクトは、対応するイベントがトリガーされたときに呼び出されます。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script>
window.__alloyMonitors = window.__alloyMonitors || [];
window.__alloyMonitors.push({
onInstanceCreated(data) {
// data.instanceName
// data.instance
},
onInstanceConfigured(data) {
// data.instanceName
// data.config
},
onBeforeCommand(data) {
// data.instanceName
// data.commandName
// data.options
},
// Added in version 2.4.0
onCommandResolved(data) {
// data.instanceName
// data.commandName
// data.options
// data.result
},
// Added in version 2.4.0
onCommandRejected(data) {
// data.instanceName
// data.commandName
// data.options
// data.error
},
onBeforeNetworkRequest(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
},
onNetworkResponse(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
// data.body
// data.parsedBody
// data.status
// data.retriesAttempted
},
onNetworkError(data) {
// data.instanceName
// data.requestId
// data.url
// data.payload
// data.error
},
onBeforeLog(data) {
// data.instanceName
// data.componentName
// data.level
// data.arguments
}
onContentRendering(data) {
// data.instanceName
// data.componentName
// data.payload
// data.status
},
onContentHiding(data) {
// data.instanceName
// data.componentName
// data.status
}
});
</script>
<script>
!function(n,o){o.forEach(function(o){n[o]||((n.__alloyNS=n.__alloyNS||
[]).push(o),n[o]=function(){var u=arguments;return new Promise(
function(i,l){n[o].q.push([i,l,u])})},n[o].q=[])})}
(window,["alloy"]);
</script>
<script src="alloy.js" async></script>
</head>
<body>
<h1>Monitor Test</h1>
</body>
</html>