Telemetria hozzáadása a robothoz
A KÖVETKEZŐKRE VONATKOZIK: SDK v4
A telemetriai naplózás lehetővé teszi, hogy a robotalkalmazások eseményadatokat küldjenek a telemetriai szolgáltatásoknak, például az Application Insightsnak. A telemetriai adatok betekintést nyújtanak a robotba azáltal, hogy megjeleníti a leggyakrabban használt funkciókat, észleli a nemkívánatos viselkedést, és betekintést nyújt a rendelkezésre állásba, a teljesítménybe és a használatba.
Ez a cikk bemutatja, hogyan valósíthat meg telemetriát a robotban az Application Insights használatával. Ez a cikk a következőket ismerteti:
- A robot telemetriai adatainak lekötéséhez és az Application Insightshoz való csatlakozáshoz szükséges kód.
- Telemetria engedélyezése a robot párbeszédpaneljeiben.
- Telemetria engedélyezése más szolgáltatások, például az Azure AI-szolgáltatások használati adatainak rögzítéséhez.
- A telemetriai adatok vizualizációja az Application Insightsban.
Fontos
Az olyan regionális robotok esetében, amelyek a telemetriában személyes azonosításra alkalmas adatokat (PII) gyűjthetnek, az Application Insights-erőforrásnak és az Azure Bot-erőforrásnak ugyanabban a régióban kell lennie a robottal. Ha az erőforrások különböző régiókban találhatók, előfordulhat, hogy a PII elhagyja a robot földrajzi régióját.
Előfeltételek
- A CoreBot mintakódja
- Az Application Insights mintakódja
- Microsoft Azure-előfizetés
- Application Insights-kulcs
- Az Application Insights ismerete
- git
Feljegyzés
Az Application Insights mintakódja a CoreBot-mintakódra épült. Ez a cikk végigvezeti a CoreBot mintakódjának módosításán a telemetriai adatok beépítése érdekében. Ha a Visual Studióban követi a műveletet, az Application Insights mintakódját a befejezésig megkapja.
Telemetria engedélyezése a robotban
Ez a cikk a CoreBot mintaalkalmazásból indul ki, és hozzáadja a telemetriai adatok robotba való integrálásához szükséges kódot. Ez lehetővé teszi az Application Insights számára a kérelmek nyomon követését.
Fontos
Ha még nem állította be az Application Insights-fiókot , és létrehozta az Application Insights-kulcsot, a folytatás előtt tegye meg.
Nyissa meg a CoreBot mintaalkalmazást a Visual Studióban.
Adja hozzá a
Microsoft.Bot.Builder.Integration.ApplicationInsights.Core
NuGet-csomagot. További információ a NuGet használatáról: Csomagok telepítése és kezelése a Visual Studióban:Adja meg a következő utasításokat a következőben
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;
Tipp.
Ha a CoreBot-mintakód frissítésével követi a műveletet, láthatja, hogy a CoreBot-mintában már létezik a felhasználói utasítás
Microsoft.Bot.Builder.Integration.AspNet.Core
.Adja meg a következő kódot a metódusban a
ConfigureServices()
következőbenStartup.cs
: Ez elérhetővé teszi a telemetriai szolgáltatásokat a robot számára függőséginjektáláson (DI) keresztül:// 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>(); ... }
Tipp.
Ha a CoreBot-mintakód frissítésével követi a műveletet, láthatja, hogy
services.AddSingleton<IBotFrameworkHttpAdapter, AdapterWithErrorHandler>();
már létezik.Utasítsa az adaptert, hogy használja a metódushoz
ConfigureServices()
hozzáadott köztes szoftverkódot. EztAdapterWithErrorHandler.cs
a TelemetryInitializerMiddleware telemetryInitializerMiddleware paraméterrel teheti meg a konstruktor paraméterlistájában, és aUse(telemetryInitializerMiddleware);
konstruktorban az itt látható utasítással:public AdapterWithErrorHandler(IConfiguration configuration, ILogger<BotFrameworkHttpAdapter> logger, TelemetryInitializerMiddleware telemetryInitializerMiddleware, ConversationState conversationState = null) : base(configuration, logger) { ... Use(telemetryInitializerMiddleware); }
Emellett hozzá kell adnia
Microsoft.Bot.Builder.Integration.ApplicationInsights.Core
a használt utasítások listájához a következőben: .</a0> Adja hozzá az Application Insights eszközkulcsot a
appsettings.json
fájlhoz. Aappsettings.json
fájl metaadatokat tartalmaz a robot futás közben használt külső szolgáltatásairól. A Cosmos DB, az Application Insights és az Azure AI-szolgáltatások kapcsolata és metaadatai például ott vannak tárolva. A fájlnak aappsettings.json
következő formátumban kell lennie:{ "MicrosoftAppId": "", "MicrosoftAppPassword": "", "ApplicationInsights": { "InstrumentationKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } }
Feljegyzés
Az Application Insights rendszerállapotkulcsának beszerzéséről az Application Insights-kulcsok című cikkben olvashat.
Ezen a ponton a telemetriai adatok Application Insights használatával történő engedélyezésének előzetes munkái befejeződnek. A robotot helyileg futtathatja az Emulator használatával, majd az Application Insightsban megtekintheti a naplózott adatokat, például a válaszidőt, az általános alkalmazásállapotot és az általános futtatási információkat.
Telemetria engedélyezése a robot párbeszédpaneljeiben
Amikor új párbeszédpanelt ad hozzá bármely ComponentDialoghoz, a szülő párbeszédpanel Microsoft.Bot.Builder.IBotTelemetryClient elemét örökli. A CoreBot mintaalkalmazásban például a rendszer minden párbeszédpanelt hozzáad a MainDialoghoz, amely egy ComponentDialog. Miután beállította a TelemetryClient tulajdonságot a MainDialogra, a hozzá hozzáadott párbeszédpanelek automatikusan öröklik a telemetriaClient tulajdonságot, így nem kell explicit módon beállítani a párbeszédpanelek hozzáadásakor.
A CoreBot-példa frissítéséhez kövesse az alábbi lépéseket:
Ebben
MainDialog.cs
az esetben frissítse a konstruktor paraméterlistáját úgy, hogy tartalmazza aIBotTelemetryClient
paramétert, majd állítsa a MainDialog TelemetryClient tulajdonságát erre az értékre az alábbi kódrészletben látható módon: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; ... }
Tipp.
Ha követi és frissíti a CoreBot-mintakódot, akkor az Application Insights mintakódját is megtekintheti, ha problémákba ütközik.
A telemetria mostantól hozzáadódik a robot párbeszédpaneljeihez. Ha most futtatja a robotot, látnia kell a naplózott dolgokat az Application Insightsban; Ha azonban rendelkezik bármilyen integrált technológiával, például egy Azure AI-szolgáltatással, azt is hozzá kell adnia a TelemetryClient
kódhoz.
Tevékenységesemények és személyes adatok naplózásának engedélyezése vagy letiltása
Tevékenységnaplózás engedélyezése vagy letiltása
Alapértelmezés szerint a TelemetryInitializerMiddleware
rendszer naplózza a TelemetryLoggerMiddleware
telemetriát, amikor a robot tevékenységeket küld/ fogad. A tevékenységnaplózás egyéni eseménynaplókat hoz létre az Application Insights-erőforrásban. Ha szeretné, letilthatja a tevékenységesemények naplózását úgy, hogy hamis értéket állít be logActivityTelemetry
a TelemetryInitializerMiddleware
Startup.cs való regisztráláskor.
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);
});
...
}
Személyes adatok naplózásának engedélyezése vagy letiltása
Alapértelmezés szerint, ha a tevékenységnaplózás engedélyezve van, a bejövő/kimenő tevékenységek egyes tulajdonságai ki vannak zárva a naplózásból, mivel valószínűleg személyes adatokat tartalmaznak, például a felhasználónevet és a tevékenység szövegét. Ezeket a tulajdonságokat a naplózásba úgy is felveheti, hogy az alábbi módosítást Startup.cs a TelemetryLoggerMiddleware
regisztráció során.
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);
});
...
}
Ezután látni fogjuk, mit kell tartalmaznia ahhoz, hogy telemetriai funkciókat adjon hozzá a párbeszédpanelekhez. Ez lehetővé teszi további információk, például a párbeszédpanelek futtatásának és az egyesekkel kapcsolatos statisztikák beszerzését.
Telemetria engedélyezése más szolgáltatásokból, például a LUIS-ból és a QnA Makerből származó használati adatok rögzítéséhez
Feljegyzés
Az Azure AI QnA Maker 2025. március 31-én megszűnik. 2022. október 1-től nem hozhat létre új QnA Maker-erőforrásokat vagy tudásbázis. A kérdés- és válaszképesség újabb verziója már elérhető az Azure AI Language részeként.
Az Egyéni kérdések megválaszolása, az Azure AI Nyelv egyik funkciója a QnA Maker szolgáltatás frissített verziója. A Bot Framework SDK kérdés-válasz támogatásával kapcsolatos további információkért lásd a természetes nyelv megértését.
Feljegyzés
A Language Understanding (LUIS) 2025. október 1-jén megszűnik. 2023. április 1-től nem hozhat létre új LUIS-erőforrásokat. Az Azure AI Language részeként már elérhető a nyelvértés újabb verziója.
Az Azure AI Language egyik funkciója, a beszélgetési nyelv megértése (CLU) a LUIS frissített verziója. További információ a Bot Framework SDK nyelvfelismerési támogatásáról: Természetes nyelvfelismerés.
A következő lépésként telemetriafunkciót implementálunk a LUIS-szolgáltatásban. A LUIS szolgáltatás beépített telemetriai naplózással rendelkezik, így nem sok teendője van a telemetriaadatok LUIS-ból való lekéréséhez. Ha szeretné engedélyezni a telemetriát egy QnA Maker-kompatibilis robotban, olvassa el a Telemetriai adatok hozzáadása a QnA Maker-robothoz című témakört.
A
IBotTelemetryClient telemetryClient
paraméter szükséges a konstruktorban aFlightBookingRecognizer
következőbenFlightBookingRecognizer.cs
:public FlightBookingRecognizer(IConfiguration configuration, IBotTelemetryClient telemetryClient)
Ezután engedélyezze a
telemetryClient
konstruktorban valóFlightBookingRecognizer
létrehozáskorLuisRecognizer
. Ehhez vegye fel aztelemetryClient
új LuisRecognizerOptiont: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); }
Ez az, egy funkcionális robotnak kell lennie, amely telemetriai adatokat naplóz az Application Insightsba. A Bot Framework Emulator használatával helyileg futtathatja a robotot. A robot viselkedésében nem jelenhet meg semmilyen változás, de az adatokat az Application Insightsba naplózhatja. Több üzenet küldésével kommunikálhat a robottal, a következő szakaszban pedig áttekintjük a telemetriai eredményeket az Application Insightsban.
A robot tesztelésével és hibakeresésével kapcsolatos információkért tekintse meg a következő cikkeket:
Telemetriai adatok vizualizációja az Application Insightsban
Az Application Insights figyeli a robotalkalmazás rendelkezésre állását, teljesítményét és használatát, függetlenül attól, hogy a felhőben vagy a helyszínen van-e üzemeltetve. Az Azure Monitor hatékony adatelemzési platformjával mély betekintést nyújt az alkalmazás műveleteibe, és anélkül diagnosztizálja a hibákat, hogy egy felhasználóra várna, hogy jelentse őket. Az Application Insights által gyűjtött telemetriai adatok többféleképpen is megtekinthetők, a két elsődleges módszer a lekérdezések és az irányítópult.
Telemetriai adatok lekérdezése az Application Insightsban a Kusto-lekérdezések használatával
Ebből a szakaszból kiindulva megtudhatja, hogyan használhat napló lekérdezéseket az Application Insightsban. Két hasznos lekérdezést mutat be, és további információkat tartalmazó hivatkozásokat biztosít más dokumentációkhoz.
Adatok lekérdezése
Nyissa meg az Azure Portalt
Az Application Insights lapjára való ugráshoz válassza a Figyelés, majd az Alkalmazások lehetőséget, és keresse meg ott.
Az Application Insightsban válassza a Naplók (Elemzés) lehetőséget.
Ekkor megjelenik a Lekérdezés ablak. Írja be a következő lekérdezést, és válassza a Futtatás lehetőséget:
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
Ez visszaadja a befejezésig futó vízesés párbeszédpanelek százalékos arányát.
Tipp.
Bármilyen lekérdezést rögzíthet az Application Insights-irányítópulton a Naplók (Elemzések) panel jobb felső sarkában található gombra kattintva. Csak jelölje ki azt az irányítópultot, amelyhez rögzíteni szeretné, és az az irányítópult következő felkeresésekor lesz elérhető.
Az Application Insights irányítópultja
Amikor létrehoz egy Application Insights-erőforrást az Azure-ban, a rendszer automatikusan létrehoz és társít hozzá egy új irányítópultot. Az irányítópultot az Application Insights panel tetején található, Alkalmazás irányítópult feliratú gombra kattintva tekintheti meg.
Másik lehetőségként az adatok megtekintéséhez nyissa meg az Azure Portalt. Válassza a bal oldali Irányítópult lehetőséget, majd a legördülő menüből válassza ki a kívánt irányítópultot.
Itt megjelenik néhány alapértelmezett információ a robot teljesítményéről és az irányítópulton rögzített további lekérdezésekről.