Share via


Telemetrie toevoegen aan uw apparaat

VAN TOEPASSING OP: SDK v4

Met telemetrielogboekregistratie kunnen bottoepassingen gebeurtenisgegevens verzenden naar telemetrieservices zoals Application Insights. Telemetrie biedt inzicht in uw bot door te laten zien welke functies het meest worden gebruikt, detecteert ongewenst gedrag en biedt inzicht in beschikbaarheid, prestaties en gebruik.

In dit artikel wordt beschreven hoe u telemetrie implementeert in uw bot met behulp van Application Insights. In dit artikel wordt het volgende behandeld:

  • De code die nodig is om telemetrie in uw bot te koppelen en verbinding te maken met Application Insights.
  • Telemetrie inschakelen in de dialoogvensters van uw bot.
  • Telemetrie inschakelen voor het vastleggen van gebruiksgegevens van andere services, zoals Azure AI-services.
  • Uw telemetriegegevens visualiseren in Application Insights.

Belangrijk

Voor een regionale bot die mogelijk persoonlijke gegevens (PII) in telemetrie verzamelt, moeten uw Application Insights-resource en uw Azure Bot-resource zich in dezelfde regio als de bot bevinden. Als de resources zich in verschillende regio's bevinden, kan de PII de geografische regio van de bot verlaten.

Vereisten

Notitie

De Application Insights-voorbeeldcode is gebouwd op basis van de CoreBot-voorbeeldcode. Dit artikel begeleidt u bij het wijzigen van de CoreBot-voorbeeldcode om telemetrie op te nemen. Als u meegaat in Visual Studio, hebt u de Voorbeeldcode van Application Insights tegen de tijd dat u klaar bent.

Telemetrie inschakelen in uw bot

Dit artikel begint met de CoreBot-voorbeeld-app en voegt de code toe die nodig is om telemetrie te integreren in een bot. Hierdoor kan Application Insights beginnen met het bijhouden van aanvragen.

Belangrijk

Als u uw Application Insights-account nog niet hebt ingesteld en uw Application Insights-sleutel hebt gemaakt, doet u dat voordat u doorgaat.

  1. Open de CoreBot-voorbeeld-app in Visual Studio.

  2. Voeg het Microsoft.Bot.Builder.Integration.ApplicationInsights.Core NuGet-pakket toe. Zie Pakketten installeren en beheren in Visual Studio voor meer informatie over het gebruik van NuGet:

  3. Neem de volgende instructies op in Startup.cs:

    using Microsoft.ApplicationInsights.Extensibility;
    using Microsoft.Bot.Builder.ApplicationInsights;
    using Microsoft.Bot.Builder.Integration.ApplicationInsights.Core;
    using Microsoft.Bot.Builder.Integration.AspNet.Core;
    

    Tip

    Als u meegaat door de CoreBot-voorbeeldcode bij te werken, ziet u dat de using-instructie voor Microsoft.Bot.Builder.Integration.AspNet.Core al bestaat in het CoreBot-voorbeeld.

  4. Neem de volgende code op in de ConfigureServices() methode in Startup.cs. Hierdoor worden telemetrieservices beschikbaar gemaakt voor uw bot via afhankelijkheidsinjectie (DI):

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        ...
            // Create the Bot Framework Adapter with error handling enabled.
            services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();
    
            // Add Application Insights services into service collection
            services.AddApplicationInsightsTelemetry();
    
            // Create the telemetry client.
            services.AddSingleton<IBotTelemetryClient, BotTelemetryClient>();
    
            // Add telemetry initializer that will set the correlation context for all telemetry items.
            services.AddSingleton<ITelemetryInitializer, OperationCorrelationTelemetryInitializer>();
    
            // Add telemetry initializer that sets the user ID and session ID (in addition to other bot-specific properties such as activity ID)
            services.AddSingleton<ITelemetryInitializer, TelemetryBotIdInitializer>();
    
            // Create the telemetry middleware to initialize telemetry gathering
            services.AddSingleton<TelemetryInitializerMiddleware>();
    
            // Create the telemetry middleware (used by the telemetry initializer) to track conversation events
            services.AddSingleton<TelemetryLoggerMiddleware>();
        ...
    }
    

    Tip

    Als u meedoet door de CoreBot-voorbeeldcode bij te werken, ziet u dat deze services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>(); al bestaat.

  5. Geef de adapter de opdracht om de middlewarecode te gebruiken die aan de ConfigureServices() methode is toegevoegd. U doet dit in AdapterWithErrorHandler.cs met de parameter TelemetryInitializerMiddleware telemetryInitializerMiddleware in de parameterlijst van de constructor en de Use(telemetryInitializerMiddleware); instructie in de constructor, zoals hier wordt weergegeven:

        public AdapterWithErrorHandler(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger, TelemetryInitializerMiddleware telemetryInitializerMiddleware, ConversationState conversationState = null)
            : base(configuration, logger)
    {
        ...
        Use(telemetryInitializerMiddleware);
    }
    
  6. U moet ook toevoegen Microsoft.Bot.Builder.Integration.ApplicationInsights.Core aan uw lijst met gebruiksinstructies in AdapterWithErrorHandler.cs.

  7. Voeg de Application Insights-instrumentatiesleutel toe aan uw appsettings.json bestand. Het appsettings.json bestand bevat metagegevens over externe services die de bot gebruikt tijdens het uitvoeren. De verbinding en metagegevens van Cosmos DB, Application Insights en Azure AI-services worden daar bijvoorbeeld opgeslagen. De toevoeging aan het appsettings.json bestand moet de volgende indeling hebben:

    {
        "MicrosoftAppId": "",
        "MicrosoftAppPassword": "",
        "ApplicationInsights": {
            "InstrumentationKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        }
    }
    

    Notitie

    Meer informatie over het ophalen van de Application Insights-instrumentatiesleutel vindt u in het artikel Application Insights-sleutels.

Op dit moment is het voorbereidende werk voor het inschakelen van telemetrie met behulp van Application Insights voltooid. U kunt uw bot lokaal uitvoeren met behulp van de emulator en vervolgens naar Application Insights gaan om te zien wat er wordt geregistreerd, zoals reactietijd, algemene app-status en algemene informatie over uitvoering.

Telemetrie inschakelen in de dialoogvensters van uw bot

Wanneer u een nieuw dialoogvenster toevoegt aan een ComponentDialog, neemt het de Microsoft.Bot.Builder.IBotTelemetryClient van het bovenliggende dialoogvenster over. In de voorbeeldtoepassing CoreBot worden bijvoorbeeld alle dialoogvensters toegevoegd aan de MainDialog, een ComponentDialog. Zodra u de eigenschap TelemetryClient hebt ingesteld op de MainDialog, nemen alle dialoogvensters die eraan worden toegevoegd automatisch de telemetryClient over, zodat deze niet expliciet hoeft te worden ingesteld bij het toevoegen van dialoogvensters.

Volg de onderstaande stappen om uw CoreBot-voorbeeld bij te werken:

  1. Werk in MainDialog.csde lijst met parameters van de constructor bij om de IBotTelemetryClient parameter op te nemen en stel vervolgens de eigenschap TelemetryClient van MainDialog in op die waarde, zoals wordt weergegeven in het volgende codefragment:

    public MainDialog(IConfiguration configuration, ILogger<MainDialog> logger, IBotTelemetryClient telemetryClient)
        : base(nameof(MainDialog))
    {
        // Set the telemetry client for this and all child dialogs.
        this.TelemetryClient = telemetryClient;
        ...
    }
    

Tip

Als u de CoreBot-voorbeeldcode volgt en bijwerkt, kunt u de Voorbeeldcode van Application Insights raadplegen als u problemen ondervindt.

Telemetrie wordt nu toegevoegd aan uw botdialoogvensters. Als u uw bot nu uitvoert, ziet u dat er dingen worden vastgelegd in Application Insights; Als u echter geïntegreerde technologie hebt, zoals een Azure AI-service, moet u de TelemetryClient ook aan die code toevoegen.

Logboekregistratie van activiteits- en persoonlijke gegevens in- of uitschakelen

Logboekregistratie van activiteiten in- of uitschakelen

Standaard gebruikt de TelemetryInitializerMiddleware de TelemetryLoggerMiddleware om telemetrie te registreren wanneer uw bot activiteiten verzendt/ontvangt. Met activiteitenlogboeken worden aangepaste gebeurtenislogboeken gemaakt in uw Application Insights-resource. Als u wilt, kunt u logboekregistratie van activiteiten uitschakelen door in te stellen logActivityTelemetry op false bij het TelemetryInitializerMiddleware registreren in Startup.cs.

public void ConfigureServices(IServiceCollection services)
{
    ...
    // Add the telemetry initializer middleware
    services.AddSingleton<TelemetryInitializerMiddleware>(sp =>
            {
                var loggerMiddleware = sp.GetService<TelemetryLoggerMiddleware>();
                return new TelemetryInitializerMiddleware(loggerMiddleware, logActivityTelemetry: false);
            });
    ...
}

Logboekregistratie van persoonlijke gegevens in- of uitschakelen

Als logboekregistratie van activiteiten is ingeschakeld, worden sommige eigenschappen van de binnenkomende/uitgaande activiteiten standaard uitgesloten van logboekregistratie omdat deze waarschijnlijk persoonlijke gegevens bevatten, zoals gebruikersnaam en de tekst van de activiteit. U kunt ervoor kiezen om deze eigenschappen op te nemen in uw logboekregistratie door de volgende wijziging aan te brengen in Startup.cs bij het registreren van de TelemetryLoggerMiddleware.

public void ConfigureServices(IServiceCollection services)
{
    ...
    // Add the telemetry initializer middleware
    services.AddSingleton<TelemetryLoggerMiddleware>(sp =>
            {
                var telemetryClient = sp.GetService<IBotTelemetryClient>();
                return new TelemetryLoggerMiddleware(telemetryClient, logPersonalInformation: true);
            });
    ...
}

Vervolgens zien we wat er moet worden opgenomen om telemetriefunctionaliteit toe te voegen aan de dialoogvensters. Hiermee kunt u aanvullende informatie krijgen, zoals welke dialoogvensters worden uitgevoerd en statistieken over elk dialoogvenster.

Telemetrie inschakelen voor het vastleggen van gebruiksgegevens van andere services, zoals LUIS en QnA Maker

Notitie

Azure AI QnA Maker wordt op 31 maart 2025 buiten gebruik gesteld. Vanaf 1 oktober 2022 kunt u geen nieuwe QnA Maker-resources of knowledge bases meer maken. Er is nu een nieuwere versie van de vraag- en antwoordmogelijkheid beschikbaar als onderdeel van Azure AI Language.

Aangepaste vragen beantwoorden, een functie van Azure AI Language, is de bijgewerkte versie van de QnA Maker-service. Zie Natuurlijke taalbegrip voor meer informatie over vraag- en antwoordondersteuning in de Bot Framework SDK.

Notitie

Language Understanding (LUIS) wordt op 1 oktober 2025 buiten gebruik gesteld. Vanaf 1 april 2023 kunt u geen nieuwe LUIS-resources meer maken. Er is nu een nieuwere versie van Language Understanding beschikbaar als onderdeel van Azure AI Language.

Conversational Language Understanding (CLU), een functie van Azure AI Language, is de bijgewerkte versie van LUIS. Zie Natuurlijke taal begrijpen voor meer informatie over ondersteuning voor taalkennis in de Bot Framework SDK.

Vervolgens implementeren we telemetriefunctionaliteit in uw LUIS-service. De LUIS-service beschikt over ingebouwde telemetrielogboekregistratie, dus u hoeft weinig te doen om telemetriegegevens op te halen uit LUIS. Als u telemetrie wilt inschakelen in een bot met QnA Maker, raadpleegt u Telemetrie toevoegen aan uw QnA Maker-bot

  1. De IBotTelemetryClient telemetryClient parameter is vereist in de FlightBookingRecognizer constructor in FlightBookingRecognizer.cs:

    public FlightBookingRecognizer(IConfiguration configuration, IBotTelemetryClient telemetryClient)
    
  2. Schakel vervolgens de telemetryClient in wanneer u uw LuisRecognizer in de FlightBookingRecognizer constructor maakt. Doe dit door de telemetryClient toe te voegen als een nieuwe LuisRecognizerOption:

    if (luisIsConfigured)
    {
        var luisApplication = new LuisApplication(
            configuration["LuisAppId"],
            configuration["LuisAPIKey"],
            "https://" + configuration["LuisAPIHostName"]);
    
        // Set the recognizer options depending on which endpoint version you want to use.
        var recognizerOptions = new LuisRecognizerOptionsV3(luisApplication)
        {
            TelemetryClient = telemetryClient,
        };
        _recognizer = new LuisRecognizer(recognizerOptions);
    }
    

Dat is het, u moet een functionele bot hebben die telemetriegegevens registreert in Application Insights. U kunt de Bot Framework Emulator gebruiken om uw bot lokaal uit te voeren. U ziet geen wijzigingen in het gedrag van de bot, maar er worden wel gegevens in Application Insights aangemeld. Communiceer met de bot door meerdere berichten te verzenden. In de volgende sectie bekijken we de telemetrieresultaten in Application Insights.

Raadpleeg de volgende artikelen voor informatie over het testen en opsporen van fouten in uw bot:

Uw telemetriegegevens visualiseren in Application Insights

Application Insights bewaakt de beschikbaarheid, prestaties en het gebruik van uw bottoepassing, ongeacht of deze wordt gehost in de cloud of on-premises. Het maakt gebruik van het krachtige platform voor gegevensanalyse in Azure Monitor om u uitgebreide inzichten te bieden in de bewerkingen van uw toepassing en fouten te diagnosticeren zonder te wachten tot een gebruiker deze rapporteert. Er zijn een aantal manieren om de telemetriegegevens te bekijken die door Application Insights worden verzameld. Twee van de belangrijkste manieren zijn via query's en het dashboard.

Query's uitvoeren op uw telemetriegegevens in Application Insights met behulp van Kusto-query's

Gebruik deze sectie als uitgangspunt voor meer informatie over het gebruik van logboekquery's in Application Insights. Het toont twee nuttige query's en bevat koppelingen naar andere documentatie met aanvullende informatie.

Query's uitvoeren op uw gegevens

  1. Ga naar de Azure-portal

  2. Als u naar uw Application Insights-pagina wilt gaan, selecteert u Controleren en vervolgens Toepassingen en zoekt u deze daar.

  3. Selecteer logboeken (analyse) in uw Application Insights.

    Schermopname met de knop Logboeken (Analytics) op de Pagina Application Insights van een bot.

  4. Hiermee wordt het venster Query geopend. Voer de volgende query in en selecteer Uitvoeren:

    customEvents
    | where name=="WaterfallStart"
    | extend DialogId = customDimensions['DialogId']
    | extend InstanceId = tostring(customDimensions['InstanceId'])
    | join kind=leftouter (customEvents | where name=="WaterfallComplete" | extend InstanceId = tostring(customDimensions['InstanceId'])) on InstanceId
    | summarize starts=countif(name=='WaterfallStart'), completes=countif(name1=='WaterfallComplete') by bin(timestamp, 1d), tostring(DialogId)
    | project Percentage=max_of(0.0, completes * 1.0 / starts), timestamp, tostring(DialogId)
    | render timechart
    
  5. Hiermee wordt het percentage watervaldialoogvensters geretourneerd dat wordt uitgevoerd tot voltooiing.

    Voorbeelduitvoer van de App Insights-query.

Tip

U kunt een query vastmaken aan uw Application Insights-dashboard door de knop rechtsboven op de blade Logboeken (Analyse) te selecteren. Selecteer het dashboard waaraan u het wilt vastmaken. Het dashboard is de volgende keer dat u dat dashboard bezoekt, beschikbaar.

Het Application Insights-dashboard

Wanneer u een Application Insights-resource in Azure maakt, wordt er automatisch een nieuw dashboard gemaakt en eraan gekoppeld. U kunt dat dashboard zien door de knop boven aan de blade Application Insights te selecteren, met het label Toepassingsdashboard.

Schermopname met de knop Toepassingsdashboard op de Application Insights-pagina van een bot.

Als u de gegevens wilt weergeven, gaat u naar de Azure Portal. Selecteer Dashboard aan de linkerkant en selecteer vervolgens het gewenste dashboard in de vervolgkeuzelijst.

Daar ziet u enkele standaardinformatie over de prestaties van uw bot en eventuele aanvullende query's die u aan uw dashboard hebt vastgemaakt.

Aanvullende informatie