Delen via


Telemetrie toevoegen aan uw apparaat

VAN TOEPASSING OP: SDK v4

Met telemetrielogboeken 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 in uw bot implementeert met behulp van Application Insights. Dit artikel behandelt:

  • De code die nodig is om telemetrie in uw bot te verbinden 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 persoonsgegevens (PII) in telemetrie verzamelt, moeten uw Application Insights-resource en uw Azure Bot-resource zich in dezelfde regio bevinden als de bot. 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. In dit artikel wordt u stapsgewijs begeleid bij het wijzigen van de CoreBot-voorbeeldcode om telemetrie op te nemen. Als u in Visual Studio volgt, hebt u de Application Insights-voorbeeldcode voor het moment dat u klaar bent.

Telemetrie inschakelen in uw bot

Dit artikel begint met de CoreBot-voorbeeld-app en voegt de code toe die is vereist voor het integreren van telemetrie in elke bot. Hierdoor kan Application Insights aanvragen bijhouden.

Belangrijk

Als u uw Application Insights-account nog niet hebt ingesteld en uw Application Insights-sleutel hebt gemaakt, doet u dit 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 de CoreBot-voorbeeldcode bijwerkt, ziet u dat de using-instructie al Microsoft.Bot.Builder.Integration.AspNet.Core bestaat in het CoreBot-voorbeeld.

  4. Neem de volgende code op in de ConfigureServices() methode in Startup.cs. Hiermee worden telemetrieservices beschikbaar 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 meegaat door de CoreBot-voorbeeldcode bij te werken, zult u merken dat dit 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 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 Instrumentatiesleutel van Application Insights 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 uw appsettings.json bestand moet deze 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 wordt het voorbereidende werk voor het inschakelen van telemetrie uitgevoerd met Behulp van Application Insights. 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 actieve informatie.

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 CoreBot-voorbeeldtoepassing worden bijvoorbeeld alle dialoogvensters toegevoegd aan het MainDialog, een ComponentDialog. Zodra u de eigenschap TelemetryClient hebt ingesteld op 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 MainDialog.csin de parameterlijst van de constructor de parameterlijst 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 verwijzen naar de Application Insights-voorbeeldcode als u problemen ondervindt.

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

Activiteitenevenement en logboekregistratie van persoonlijke gegevens in- of uitschakelen

Activiteitenlogboekregistratie in- of uitschakelen

TelemetryInitializerMiddleware Standaard wordt de TelemetryLoggerMiddleware functie gebruikt om telemetrie te registreren wanneer uw bot activiteiten verzendt/ontvangt. Activiteitenlogboeken maken aangepaste gebeurtenislogboeken in uw Application Insights-resource. Als u wilt, kunt u logboekregistratie van activiteiten gebeurtenis 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 activiteitenlogboekregistratie is ingeschakeld, worden sommige eigenschappen voor de binnenkomende/uitgaande activiteiten standaard uitgesloten van logboekregistratie, omdat ze 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 resources of kennisbanken voor QnA Maker maken. Een nieuwere versie van de vraag- en antwoordmogelijkheid is nu beschikbaar als onderdeel van Azure AI Language.

Aangepaste vraagantwoorden, 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 maken. Er is nu een nieuwere versie van taalkennis 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 taalkennis voor meer informatie over ondersteuning voor taalkennis in de Bot Framework SDK.

We implementeren vervolgens telemetriefunctionaliteit in uw LUIS-service. De LUIS-service heeft ingebouwde telemetrielogboekregistratie beschikbaar, zodat u weinig hoeft te doen om telemetriegegevens van LUIS op te halen. Zie Telemetrie toevoegen aan uw QnA Maker-bot als u telemetrie wilt inschakelen in een 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 optie in wanneer u de LuisRecognizer FlightBookingRecognizer constructor maakt. Doe dit door de telemetryClient als een nieuwe LuisRecognizerOption toe te voegen:

    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 in Application Insights registreert. 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 en 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 inzicht te geven 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 worden verzameld door Application Insights, 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.

Uw gegevens opvragen

  1. Ga naar de Azure-portal

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

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

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

  4. Hiermee wordt het queryvenster weergegeven. 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 elke query vastmaken aan uw Application Insights-dashboard door de knop in de rechterbovenhoek van de blade Logboeken (Analytics) te selecteren. Selecteer het dashboard waaraan u het wilt vastmaken en het is de volgende keer dat u dat dashboard bezoekt beschikbaar.

Het Application Insights-dashboard

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

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

Als u de gegevens wilt weergeven, gaat u ook naar 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 extra query's die u aan uw dashboard hebt vastgemaakt.

Aanvullende informatie