Share via


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

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.

  1. Nyissa meg a CoreBot mintaalkalmazást a Visual Studióban.

  2. 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:

  3. 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.

  4. Adja meg az alábbi kódot a ConfigureServices() metódusban a metódusban Startup.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.

  5. Utasítsa az adaptert, hogy használja a metódushoz ConfigureServices() hozzáadott köztes szoftverkódot. Ezt a konstruktor paraméterlistájában AdapterWithErrorHandler.cs a TelemetryInitializerMiddleware telemetryInitializerMiddleware paraméterrel, a konstruktorban pedig az Use(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);
    }
    
  6. Emellett hozzá kell adnia Microsoft.Bot.Builder.Integration.ApplicationInsights.Core a using utasítások listájához a következőben AdapterWithErrorHandler.cs: .

  7. Adja hozzá az Application Insights eszközkulcsot a appsettings.json fájlhoz. A appsettings.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ájlnak appsettings.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:

  1. A fájlban MainDialog.csfrissítse a konstruktor paraméterlistáját, hogy tartalmazza a IBotTelemetryClient 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 TelemetryInitializerMiddlewarerendszer 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 TelemetryLoggerMiddlewareregisztrá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.

  1. A IBotTelemetryClient telemetryClient paraméterre a konstruktorban van szükség a FlightBookingRecognizer következőben FlightBookingRecognizer.cs:

    public FlightBookingRecognizer(IConfiguration configuration, IBotTelemetryClient telemetryClient)
    
  2. Ezután engedélyezze a telemetryClient konstruktorban való létrehozáskorLuisRecognizer.FlightBookingRecognizer Ehhez vegye fel a telemetryClient 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

  1. Nyissa meg az Azure Portalt

  2. Az Application Insights lapra való ugráshoz válassza a Figyelés, majd az Alkalmazások lehetőséget, és keresse meg ott.

  3. Az Application Insightsban válassza a Naplók (Elemzések) lehetőséget.

    Képernyőkép a robot Application Insights oldalán található Naplók (Elemzés) gombbal.

  4. 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
    
  5. Ez visszaadja a befejezésig futó vízesés párbeszédpanelek százalékos arányát.

    Az App Insights-lekérdezés mintakimenete.

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.

Képernyőkép egy robot Application Insights oldalán található Alkalmazás irányítópult gombjáról.

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.

További információ