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
- De CoreBot-voorbeeldcode
- De Application Insights-voorbeeldcode
- 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. 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.
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 de CoreBot-voorbeeldcode bijwerkt, ziet u dat de using-instructie al
Microsoft.Bot.Builder.Integration.AspNet.Core
bestaat in het CoreBot-voorbeeld.Neem de volgende code op in de
ConfigureServices()
methode inStartup.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.Geef de adapter de opdracht om de middlewarecode te gebruiken die aan de
ConfigureServices()
methode is toegevoegd. U doet ditAdapterWithErrorHandler.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 Instrumentatiesleutel van Application Insights 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 uwappsettings.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:
Werk
MainDialog.cs
in de parameterlijst van de constructor de parameterlijst 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 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
De
IBotTelemetryClient telemetryClient
parameter is vereist in deFlightBookingRecognizer
constructor inFlightBookingRecognizer.cs
:public FlightBookingRecognizer(IConfiguration configuration, IBotTelemetryClient telemetryClient)
Schakel vervolgens de
telemetryClient
optie in wanneer u deLuisRecognizer
FlightBookingRecognizer
constructor maakt. Doe dit door detelemetryClient
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
Ga naar de Azure-portal
Als u naar uw Application Insights-pagina wilt gaan, selecteert u Controleren, vervolgens Toepassingen en zoekt u deze daar.
Selecteer logboeken (analyse) in uw Application Insights.
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
Hiermee wordt het percentage watervaldialoogvensters geretourneerd dat wordt uitgevoerd tot voltooiing.
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.
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.