コンテンツにスキップ

beforeSend (データのインターセプトと変更)

RUM SDK は、各データを送信する前に beforeSend メソッドを実行します。このメソッドの実装をカスタマイズすることで、次の操作を実行できます。

  • データの一部を変更する
  • データの送信をブロックする

beforeSend には 2 つのパラメータがあります。

function beforeSend(event, context)

event は SDK が生成する各種指標データオブジェクトです。context の関連情報は以下のとおりです。

イベントタイプ コンテキスト
View Location
Action Event
Resource (XHR) XMLHttpRequest, PerformanceResourceTiming
Resource (Fetch) Reqeust, Response, PerformanceResourceTiming
Resource (Other) PerformanceResourceTiming
Error Error
Long Task PerformanceLongTaskTiming

データの一部を変更する

window.DATAFLUX_RUM &&
    window.DATAFLUX_RUM.init({
        ...,
        beforeSend: (event, context) => {
            if (event.type === 'resource' && event.resource.type === 'fetch') {
                // 元のデータにリクエストのレスポンスヘッダー情報を追加する
                event.context = {...event.context, responseHeaders: context.response.headers}
            }
        },
        ...
    });
注意

beforeSend で変更できるのは、SDK が許可するデータフィールドのみです。許可されていないフィールドの変更は無視されます。

SDK が変更を許可するフィールドは次のとおりです。

属性 タイプ 説明
view.url string ページの URL
view.referrer string ページの参照元
resource.url string リソースの URL
error.message string エラーメッセージ
error.resource.url string エラーリソースの URL
context string グローバルカスタムコンテンツ(例: addActionaddError で追加した内容)

データ送信をブロックする

beforeSend メソッドで true または false を返すことで、不要なデータをブロックできます。

  • true: このデータを送信する
  • false: このデータを送信しない
window.DATAFLUX_RUM &&
    window.DATAFLUX_RUM.init({
        ...,
        beforeSend: (event) => {
            if (shouldDiscard(event)) {
                return false
            } else {
                return true
            }
            ...
        },
        ...
    });

フィードバック

このページは役に立ちましたか?