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, és bemutatják, mely funkciókat használják a leggyakrabban, észlelik a nemkívánatos viselkedést, és betekintést nyújtanak 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 beírásához é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ásokból, például az Azure AI-szolgáltatásokból származó használati adatok rögzítéséhez.
- A telemetriai adatok megjelenítése az Application Insightsban.
Fontos
Olyan regionális robotok esetében, amelyek személyazonosításra alkalmas adatokat (PII) gyűjthetnek telemetriában, 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
Megjegyzés
Az Application Insights mintakódja a CoreBot mintakódra épül. Ez a cikk végigvezeti a CoreBot mintakódjának a telemetria beépítése érdekében történő módosításán. Ha a Visual Studióban követi a műveletet, a befejezésig megkapja az Application Insights mintakódját.
Telemetria engedélyezése a robotban
Ez a cikk a CoreBot mintaalkalmazásból indul, és hozzáadja a telemetriai adatok bármely robotba való integrálásához szükséges kódot. Ez lehetővé teszi, hogy az Application Insights megkezdje a kérelmek nyomon követését.
Fontos
Ha még nem állította be az Application Insights-fiókot , és nem hozta létre az Application Insights-kulcsot, a folytatás előtt tegye meg.
Nyissa meg a CoreBot mintaalkalmazást a Visual Studióban.
Adja hozzá a(z)
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 fájlban
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, megfigyelheti, hogy a using utasítás
Microsoft.Bot.Builder.Integration.AspNet.Core
már létezik a CoreBot-mintában.Adja meg az alábbi kódot a
ConfigureServices()
metódusban a metódusbanStartup.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, észre fogja venni, 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. Ezt a konstruktor paraméterlistájábanAdapterWithErrorHandler.cs
a TelemetryInitializerMiddleware telemetryInitializerMiddleware paraméterrel, a konstruktorban pedig azUse(telemetryInitializerMiddleware);
itt látható utasítással teheti meg: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 using utasítások listájához a következőbenAdapterWithErrorHandler.cs
: .Adja hozzá az Application Insights eszközkulcsot a
appsettings.json
fájlhoz. Aappsettings.json
fájl metaadatokat tartalmaz a robot futása során használt külső szolgáltatásokról. A Cosmos DB, az Application Insights és az Azure AI-szolgáltatások kapcsolatát és metaadatait például ott tárolja a rendszer. A fájlnakappsettings.json
a következő formátumban kell lennie:{ "MicrosoftAppId": "", "MicrosoftAppPassword": "", "ApplicationInsights": { "InstrumentationKey": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } }
Megjegyzés
Az Application Insights-eszközkulcs beszerzéséről az Application Insights-kulcsok című cikkben talál további információt.
Ezen a ponton az Application Insights használatával végzett telemetria-engedélyezés előzetes feladata. 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 alkalmazás általános állapotát é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 ComponentDialog elemhez, az örökli a Szülő párbeszédpanel Microsoft.Bot.Builder.IBotTelemetryClient elemét. A CoreBot mintaalkalmazásban például minden párbeszédpanel hozzá lesz adva a MainDialoghoz, amely egy ComponentDialog. Miután beállította a TelemetryClient tulajdonságot a MainDialog tulajdonságra, a hozzá hozzáadott párbeszédpanelek automatikusan öröklik a telemetryClientet, így nem kell explicit módon beállítani párbeszédpanelek hozzáadásakor.
Kövesse az alábbi lépéseket a CoreBot-példa frissítéséhez:
A fájlban
MainDialog.cs
frissítse a konstruktor paraméterlistáját, 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, ha problémákba ütközik, tekintse meg az Application Insights mintakódját .
A telemetriai adatok mostantól hozzá lesznek adva a robot párbeszédpaneljeihez. Ha most futtatja a robotot, látnia kell a naplózott dolgokat az Application Insightsban; Ha azonban rendelkezik integrált technológiával, például egy Azure AI-szolgáltatással, a kódot is hozzá kell adnia TelemetryClient
a 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
a használatával TelemetryLoggerMiddleware
naplózza a 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ény-naplózást úgy, hogy false (hamis) értékre állítja logActivityTelemetry
a TelemetryInitializerMiddleware
rendszer a Startup.cs-ben 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 lesznek 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 felveheti a naplózásba, ha a következő módosítást a Startup.cs fájlra módosítja 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);
});
...
}
A következő lépésben látni fogjuk, hogy mit kell belefoglalni a telemetriai funkciók párbeszédpanelekhez való hozzáadásához. Ez lehetővé teszi, hogy további információkat kapjon, például hogy milyen párbeszédpanelek futnak, és statisztikát kapjon mindegyikről.
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
Megjegyzé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ázisokat. 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 Language 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: Természetes nyelvfelismerés.
Megjegyzés
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 társalgási nyelvfelismerés (CLU) a LUIS frissített verziója. A Bot Framework SDK nyelvfelismerési támogatásával kapcsolatos további információkért lásd: 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 a telemetriai adatok LUIS-ból való lekéréséhez nem kell sokat tennie. Ha engedélyezni szeretné 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éterre a konstruktorban van szükség aFlightBookingRecognizer
következőbenFlightBookingRecognizer.cs
:public FlightBookingRecognizer(IConfiguration configuration, IBotTelemetryClient telemetryClient)
Ezután engedélyezze a
telemetryClient
konstruktorban való létrehozáskorLuisRecognizer
.FlightBookingRecognizer
Ehhez vegye fel atelemetryClient
következőt új LuisRecognizerOption néven: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); }
Ilyen esetben rendelkeznie kell egy funkcionális robottal, amely telemetriai adatokat naplóz az Application Insightsban. A robot helyi futtatásához használhatja a Bot Framework Emulator. A robot viselkedésében nem jelenhet meg változás, de az adatokat az Application Insightsba naplózhatja. Ha több üzenetet küld a robotnak, a következő szakaszban á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:
A telemetriai adatok vizualizációja az Application Insightsban
Az Application Insights monitorozza a robotalkalmazás rendelkezésre állását, teljesítményét és használatát, függetlenül attól, hogy az 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 megvárja, amíg a felhasználó jelentést készít róluk. Az Application Insights által gyűjtött telemetriai adatok megtekintésére többféleképpen is lehetőség van, a két elsődleges módszer a lekérdezések és az irányítópult.
A 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ó egyéb dokumentációra mutató hivatkozásokat tartalmaz.
Adatok lekérdezése
Nyissa meg az Azure Portalt
Az Application Insights lapra 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ések) 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. Egyszerűen válassza 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ópultja feliratú gombra kattintva tekintheti meg.
Az adatok megtekintéséhez lépjen a Azure Portal. Válassza az Irányítópult lehetőséget a bal oldalon, majd válassza ki a kívánt irányítópultot a legördülő menüből.
Itt látni fog néhány alapértelmezett információt a robot teljesítményéről és az irányítópulton rögzített további lekérdezésekről.