Не могу увидеть пользовательскую телеметрию в приложении Insights - PullRequest
1 голос
/ 11 июня 2019

Я попытался добавить пользовательскую телеметрию для документов (https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-telemetry?view=azure-bot-service-4.0).

Я что-то упустил, потому что не могу найти свое пользовательское событие в журналах App Insights.

Я пытался взаимодействовать с ботом и искать в журналах App Insights «VeryImportantProperty» и «VeryImportantValue»

Я написал этот класс:

public class TelemetryMiddleware : TelemetryLoggerMiddleware
{

    public TelemetryMiddleware(IBotTelemetryClient telemetryClient, bool logPersonalInformation)
        : base(telemetryClient, logPersonalInformation)
    {

    }
    protected override async Task OnReceiveActivityAsync(Activity activity, CancellationToken cancellation)
    {
        Dictionary<string, string> propertyItems = new Dictionary<string, string>
        {
            {"VeryImportantProperty", "VeryImportantValue" }
        };

        var properties = await FillReceiveEventPropertiesAsync(activity, propertyItems);

        TelemetryClient.TrackEvent(TelemetryLoggerConstants.BotMsgReceiveEvent, properties);
    }
}

Я добавил его в startup.cs как сервис, доступный для инъекций:

services.AddSingleton<IMiddleware, TelemetryMiddleware>();

Я также добавил все остальные элементы, названные в статье, как инъекционные сервисы.

Я развернул бота и взаимодействовал с ним, но не могу найти свое VeryImportantValue или свойство даже после полного поиска в моих журналах App Insights.

Я уверен, что что-то упустил, но из документов я не могу определить, что это.

Есть идеи или указатели в правильном направлении?

1 Ответ

1 голос
/ 11 июня 2019

Вы сможете увидеть эти события, перейдя к Azure Portal > All Resources > Application Insights Resource > Overview page > Logs (Analytics), который находится вверху, над информацией о ресурсе Application Insights.

Тогда, если вы введете следующее для вашего запроса:

customEvents
| where name == "BotMessageReceived"

и нажмите кнопку «выполнить» (возможно, вам придется выбрать текст запроса, который вы ввели, прежде чем нажать кнопку «Выполнить».

Ваши данные VeryImportantProperty должны отображаться в столбце customDimensions.

Информация о начале работы доступна здесь .

Редактировать

Если вы все еще не видите записи в журнале, вам нужно будет отладить, где проблема. Шаги, которые я бы порекомендовал:

  1. Получите последнюю версию Bot Framework Emulator .
  2. Обновите класс TelemetryMiddleware, чтобы иметь следующее поле private IBotTelemetryClient _telemetryClient;
  3. Обновите ваш конструктор TelemetryMiddleware, чтобы присвоить значение из параметра telemetryClient вашему новому полю _telemetryClient.
  4. Обновите вызов внутри OnReceiveActivityAsync, чтобы использовать новое поле _telemetryClient вместо класса TelemetryClient (в настоящее время вы вызываете TrackEvent статически, а это не то, что вам нужно.
  5. Запуск вашего бота локально с использованием эмулятора Bot Framework.
  6. Добавить точку останова на линии, где вы звоните TrackEvent
  7. Создайте сценарий, который должен вызывать OnReceiveActivityAsync (отправить сообщение боту).
  8. Используйте F10, чтобы перешагнуть линию TrackEvent и убедиться, что она успешно вызывается.
  9. На этом этапе я бы также проверил ваши переменные , чтобы убедиться, что они имеют ожидаемые вами значения.
  10. Подождите, пока событие не перейдет в App Insights (может занять до 5 минут).
  11. Если это по-прежнему не работает, я бы создал новый ключ API Application Insights и обновил бы следующие места новым значением:
    • Для локального тестирования:
    • Ваш файл appsettings.json для локального тестирования.
    • Для производства:
    • Application Insights Instrumentation key на вкладке Settings бота веб-приложения в Azure.
    • Также убедитесь, что значение Application Insights Application Id на вкладке Settings бота веб-приложения в Azure совпадает со значением Application Id на вкладке API Access вашего ресурса Application Insights.
  12. Выполните описанные выше шаги для локального тестирования с помощью эмулятора.
  13. Как только журналы пройдут локально, используйте функцию Test in Web Chat , чтобы убедиться, что она работает в рабочем режиме.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...