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
- De CoreBot-voorbeeldcode
- De Voorbeeldcode van Application Insights
- Een abonnement op Microsoft Azure
- Een Application Insights-sleutel
- Bekendheid met Application Insights
- git
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.
Open de CoreBot-voorbeeld-app in Visual Studio.
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: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.Neem de volgende code op in de
ConfigureServices()
methode inStartup.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.Geef de adapter de opdracht om de middlewarecode te gebruiken die aan de
ConfigureServices()
methode is toegevoegd. U doet dit inAdapterWithErrorHandler.cs
met de parameter TelemetryInitializerMiddleware telemetryInitializerMiddleware in de parameterlijst van de constructor en deUse(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); }
U moet ook toevoegen
Microsoft.Bot.Builder.Integration.ApplicationInsights.Core
aan uw lijst met gebruiksinstructies inAdapterWithErrorHandler.cs
.Voeg de Application Insights-instrumentatiesleutel toe aan uw
appsettings.json
bestand. Hetappsettings.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 hetappsettings.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:
Werk in
MainDialog.cs
de lijst met parameters van de constructor bij om deIBotTelemetryClient
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
De
IBotTelemetryClient telemetryClient
parameter is vereist in deFlightBookingRecognizer
constructor inFlightBookingRecognizer.cs
:public FlightBookingRecognizer(IConfiguration configuration, IBotTelemetryClient telemetryClient)
Schakel vervolgens de
telemetryClient
in wanneer u uwLuisRecognizer
in deFlightBookingRecognizer
constructor maakt. Doe dit door detelemetryClient
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
Ga naar de Azure-portal
Als u naar uw Application Insights-pagina wilt gaan, selecteert u Controleren en vervolgens Toepassingen en zoekt u deze daar.
Selecteer logboeken (analyse) in uw Application Insights.
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
Hiermee wordt het percentage watervaldialoogvensters geretourneerd dat wordt uitgevoerd tot voltooiing.
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.
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.