Megosztás a következőn keresztül:


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

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.

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

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

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

  4. Adja meg a következő kódot a metódusban a ConfigureServices() következőben 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, láthatja, 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 AdapterWithErrorHandler.cs a TelemetryInitializerMiddleware telemetryInitializerMiddleware paraméterrel teheti meg a konstruktor paraméterlistájában, és a Use(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);
    }
    
  6. Emellett hozzá kell adnia Microsoft.Bot.Builder.Integration.ApplicationInsights.Core a használt utasítások listájához a következőben: .</a0>

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

  1. Ebben MainDialog.csaz esetben frissítse a konstruktor paraméterlistáját úgy, 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, 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 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);
            });
    ...
}

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.

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

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

  1. Nyissa meg az Azure Portalt

  2. Az Application Insights lapjára 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és) 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. 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.

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

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.

További információ