С помощью Дмитрий Матвеев Я пришел со следующим окончательным кодом:
var appInsights = window.appInsights;
if (appInsights && appInsights.queue) {
function adjustPageName(item) {
var name = item.name.replace("AppName", "");
if (name.indexOf("Order") !== -1)
return "Order";
if (name.indexOf("Product") !== -1)
return "Shop";
// And so on...
return name;
}
// Add telemetry initializer
appInsights.queue.push(function () {
appInsights.context.addTelemetryInitializer(function (envelope) {
var telemetryItem = envelope.data.baseData;
// To check the telemetry item’s type:
if (envelope.name === Microsoft.ApplicationInsights.Telemetry.PageView.envelopeType || envelope.name === Microsoft.ApplicationInsights.Telemetry.PageViewPerformance.envelopeType) {
// Do not track admin pages
if (telemetryItem.name.indexOf("Admin") !== -1)
return false;
telemetryItem.name = adjustPageName(telemetryItem);
}
});
});
}
Почему этот код важен?Поскольку App Insights по умолчанию использует заголовки страниц в качестве имени для PageView, вы будете иметь сотни и тысячи различных событий, например, «Заказ 123132», которые сделают дальнейший анализ (последовательность, потоки, события) бессмысленным.
Ключосновные моменты:
var name = item.name.replace("AppName", "");
Если вы поместите название своего приложения / продукта в заголовок, вы, вероятно, захотите удалить его из названия вашего события, потому что оно будет повторяться везде. appInsights && appInsights.queue
Вы должны проверить на appInsights.queue
, потому что по какой-то причине он может не быть определен и вызвать ошибку. if (telemetryItem.name.indexOf("Admin") !== -1) return false;
возврат false приведет к тому, что событие вообще не будет записано.Существуют определенные события / страницы, которые вы, скорее всего, не хотите отслеживать, например административная часть веб-сайта. - Существует два типа событий, в которых в качестве имени события используется заголовок страницы: PageView и PageViewPerformance.Имеет смысл изменить их обоих.