Share via


A robot telemetriai adatainak elemzése

A KÖVETKEZŐKRE VONATKOZIK: SDK v4

Robot viselkedésének elemzése

A következő lekérdezésgyűjtemény használható a robot viselkedésének elemzéséhez. A gyűjtemény segítségével egyéni lekérdezéseket készíthet az Azure Monitor Log Analyticsben, valamint monitorozási és Power BI-vizualizációs irányítópultokat hozhat létre.

Előfeltételek

A következő fogalmak alapszintű ismerete hasznos:

Tipp.

Ha a robotot olyan eszközökkel hozza létre, mint a Power Virtual Agents vagy a Composer, akkor az egyes lekérdezések Adaptív párbeszédpanel-verzióját kell használnia, ha elérhető.

Dashboards

Az Azure-irányítópultok nagyszerű módot kínálnak a lekérdezésekből származó információk megtekintésére és megosztására. Egyéni irányítópultokat hozhat létre a robotok tevékenységének figyeléséhez úgy, hogy a lekérdezéseket az irányítópulthoz hozzáadott csempékkel társítja. Az irányítópultokról és a lekérdezések hozzájuk való társításáról további információt a Log Analytics-adatok irányítópultjainak létrehozása és megosztása című témakörben talál. A cikk további részében néhány olyan lekérdezésre mutatunk be példákat, amelyek hasznosnak bizonyulhatnak a robotok viselkedésének monitorozásában.

Példa Kusto-lekérdezésekre

Megjegyzés:

Javasoljuk, hogy a cikkben szereplő összes lekérdezéshez különböző dimenziókon, például ponton, csatornán és területi beállításon fordítsa a kimutatást.

Felhasználók száma időszakonként

Ez a példa egy vonaldiagramot eredményez, amely megmutatja, hogy hány különböző felhasználó kommunikált naponta a robottal az elmúlt 14 napban. Az időtartam egyszerűen módosítható úgy, hogy különböző értékeket rendel a queryStartDate, queryEndDate és interval változókhoz.

Fontos

Ebben a lekérdezésben csak akkor kap megfelelő számú egyedi felhasználót, ha hitelesített felhasználók, és az eredmények a csatorna képességeitől is függhetnek.

// number of users per period
let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| summarize uc=dcount(user_Id) by bin(timestamp, groupByInterval)
| render timechart

Tipp.

A Kusto summarize operátor egy olyan tábla létrehozásához használható, amely a bemeneti tábla tartalmát összesíti.

A Bin függvény egy Kusto skaláris függvény, amely a lekérdezés eredményeit a megadott értékre csoportosítja a summarize operator lekérdezési akarattal együtt használva. A fenti példában ez nap szerint van csoportosítva, a Kusto a h=óra, m=perc, s=másodperc, ms=ezredmásodperc, mikroszekundum=mikroszekundumokat is elfogadja.

A renderelő operátor lehetővé teszi a diagramok egyszerű megjelenítését, például az idődiagramot, egy vonaldiagramot, ahol az x tengely dátumidő, és bármely más numerikus oszlop használható az y tengelyhez. Automatikusan elterül az x tengely, még akkor is, ha az adatok nem minden alkalommal vannak megadva. Ha nem használ renderelési utasítást, az alapértelmezés szerint a .table

Minta a felhasználók számának időszakonkénti lekérdezési eredményeire

Sample chart of number of users per period.

Tevékenység időszakonként

Ez a példa bemutatja, hogyan lehet mérni a kívánt dimenziónkénti tevékenységmennyiséget, például a beszélgetések, párbeszédpanelek vagy üzenetek napi számát az elmúlt 14 napban. Az időtartam egyszerűen módosítható úgy, hogy különböző értékeket rendel a querystartdate, queryEndDate és interval változókhoz. A kívánt dimenziót a következő példában szereplő extend záradék határozza meg, metric és az InstanceId, DialogId vagy activityId értékre állítható be.

Metrika hozzárendelése a megjeleníteni kívánt dimenzióhoz:

  • Az InstanceId a beszélgetések számát méri
  • A DialogId a párbeszédpanelek számát méri
  • Az ActivityId az üzenetek számát méri
// Measures the number of activity's (conversations, dialogs, messages) per period.
let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend InstanceId = tostring(customDimensions['InstanceId'])
| extend DialogId = tostring(customDimensions['DialogId'])
| extend ActivityId = tostring(customDimensions['activityId'])
| where DialogId != '' and  InstanceId != '' and user_Id != ''
| extend metric = InstanceId // DialogId or ActivityId
| summarize Count=dcount(metric) by  bin(timestamp, groupByInterval)
| order by Count desc nulls last
| render timechart

Tipp.

A Kusto extend operátor használatával számított oszlopokat hozhat létre, és hozzáfűzheti őket az eredményhalmazhoz.

Időszakonkénti tevékenységenkénti lekérdezési eredmények mintája

Sample chart of activity per period.

Felhasználónkénti tevékenység időszakonként

Ez a példa bemutatja, hogyan számolhatja meg a felhasználónkénti tevékenységek számát időszakonként. Ez a lekérdezés lehatolást végez az időszakonkénti tevékenységre, hogy a felhasználónkénti tevékenységre összpontosítson. A tevékenységek közé tartoznak a párbeszédpanelek, beszélgetések vagy üzenetek. Ez a lekérdezés méri a robottal való felhasználói interakciót, amely segíthet megtalálni a lehetséges problémákat, például:

  • Az egyetlen felhasználó által végzett sok tevékenységgel töltött napok támadást vagy tesztet jelenthetnek
  • A kevés interakcióval töltött napok szolgáltatásállapot-problémákat jelezhetnek

Tipp.

A user_Id eltávolíthatja az általános robottevékenység-kötetet, amely az idő és a párbeszédpanelek, üzenetek vagy beszélgetések alapján forgatható.

// number of users per period per dialogs
let queryStartDate = ago(14d);
let queryEndDate = now();
let interval = 6h;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend InstanceId = tostring(customDimensions['InstanceId'])
| extend DialogId = tostring(customDimensions['DialogId'])
| extend ActivityId = tostring(customDimensions['activityId'])
| where DialogId != '' and InstanceId != '' and user_Id != ''
| extend metric = ActivityId // InstanceId // DialogId // or InstanceId for conversation count
| summarize Count=dcount(metric) by user_Id, bin(timestamp, groupByInterval)
| order by Count desc nulls last

Mintául szolgáló tevékenység felhasználónkénti lekérdezési eredmények

user_Id Időbélyeg Gróf
User-8107ffd2 2019-09-03T00:00:00Z 14
User-75f2cc8f 2019-08-30T00:00:00Z 13
User-75f2cc8d 2019-09-03T00:00:00Z 13
User-3060aada 2019-09-03T00:00:00Z 10

Párbeszédpanel befejezése

Miután beállította a telemetria-ügyfelet egy párbeszédpanelhez, a párbeszédpanel (és annak gyermekei) kibocsát néhány alapértelmezett telemetriai adatot, például elindult és befejeződött. Ez a példa a kész párbeszédpanelek kezdő párbeszédpanelekhez viszonyított mérésére használható. Ha az elindított párbeszédpanelek száma nagyobb, mint a befejezett szám, néhány felhasználó nem végzi el a párbeszédpanel-folyamatot. Ezzel a lekérdezésrel azonosíthatja és elháríthatja a lehetséges párbeszédpanel-logikát. Azt is azonosíthatja, hogy mely párbeszédpaneleket használják a leggyakrabban és a legkevésbé.

Tipp.

Ha a robotot olyan eszközökkel hozza létre, mint a Power Virtual Agents vagy a Composer, akkor az egyes lekérdezések adaptív párbeszédpanel-verzióját kell használnia.

Vízesés párbeszédpanel befejezése

// % Completed Waterfall Dialog: shows completes relative to starts
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| 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 started=countif(name=='WaterfallStart'), completed=countif(name1=='WaterfallComplete') by tostring(DialogId)
| where started > 100  // filter for sample
// Show starts vs. completes
| project tostring(DialogId), started, completed
| order by started desc, completed asc  nulls last
| render barchart  with (kind=unstacked, xcolumn=DialogId, ycolumns=completed, started, ysplit=axes)

Tipp.

A Kusto illesztési operátor két tábla sorainak egyesítése új tábla létrehozásához a megadott oszlop(ok) értékeinek megfeleltetésével.

A projekt operátorával kiválaszthatja a kimenetben megjeleníteni kívánt mezőket. Az új mezőt hozzáadó mezőhöz extend operator hasonlóan választhat a project operator meglévő mezőkészletből, vagy hozzáadhat egy új mezőt.

Az adaptív párbeszédpanelek elindultak és befejeződtek

// % Completed adaptive dialog: shows completes relative to starts. This type is the default dialog type when using Power Virtual Agents or Composer. 
customEvents
| where name=="AdaptiveDialogStart" or name == "AdaptiveDialogComplete"
| extend DialogId = tostring(customDimensions['DialogId'])
| summarize started=countif(name=='AdaptiveDialogStart'), completed=countif(name=='AdaptiveDialogComplete') by DialogId
| project DialogId, started, completed
| order by started desc, completed asc nulls last
| render barchart with (kind=unstacked, xcolumn=DialogId, ycolumns=completed, started, ysplit=axes)

Minta párbeszédpanel-befejezési lekérdezés eredményei

Sample chart of dialogs started and dialogs completed.

Párbeszédpanel-kiegészítés

Ez a példa az elindított, de a megadott időszakon belül megszakítás vagy megszakítás miatt nem befejezett párbeszédpanel-folyamatok számának megszámlálására használható. Segítségével áttekintheti a hiányos párbeszédpaneleket, és megvizsgálhatja, hogy a felhasználók zavarása vagy érdeklődési körének elvesztése miatt aktívan törölték-e őket.

A vízesés párbeszédpanelek nem fejeződtek be

// Show incomplete dialogs when using waterfall dialogs.
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents 
| where timestamp > queryStartDate 
| where timestamp < queryEndDate
| where name == "WaterfallStart" 
| extend DialogId = customDimensions['DialogId']
| extend instanceId = tostring(customDimensions['InstanceId'])
| join kind=leftanti (
  customEvents
  | where name == "WaterfallComplete" 
  | extend instanceId = tostring(customDimensions['InstanceId'])
  ) on instanceId
| summarize cnt=count() by  tostring(DialogId)
| order by cnt
| render barchart

Az adaptív párbeszédpanelek nem fejeződtek be

// Show incomplete dialogs for adaptive dialogs; this type is the default dialog type when using Power Virtual Agents or Composer.
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where name == "AdaptiveDialogStart"
| extend DialogId = tostring(customDimensions['DialogId'])
| join kind=rightanti (
customEvents
| where name == "AdaptiveDialogComplete"
| extend DialogId = tostring(customDimensions['DialogId'])
) on name, DialogId
| summarize cnt=count() by DialogId
| order by cnt
| render barchart

Tipp.

A Kusto-rendelés operátor (ugyanaz, mint a sort operator) a bemeneti tábla sorait rendezi sorrendbe egy vagy több oszlop szerint. Megjegyzés: Ha bármely lekérdezés eredményéből ki szeretné zárni a null értékeket, szűrheti őket az where utasításban, például hozzáadhatja az "and isnotnull(Timestamp)" értéket, vagy null értékeket ad vissza a rendelési utasítás elején vagy végén nulls firstnulls first .

Minta párbeszédpanel-incompletion lekérdezés eredményei

Sample summary chart for incomplete dialogs.

Párbeszédpanel-sorozat lehatolása

Vízesés indítása/lépés/kész párbeszédpanel a beszélgetésben

Ez a példa a párbeszéd (instanceId) szerint csoportosított párbeszédpanel-lépések sorozatát mutatja be, amely hasznos lehet annak meghatározásához, hogy mely lépések vezetnek a párbeszédpanel megszakadásához.

A lekérdezés futtatásakor adja meg a kívánt DialogId értéket a <SampleDialogId helyett>

// Drill down: Show waterfall start/step/complete for specific dialog
let queryStartDate = ago(14d);
let queryEndDate = now();
let DialogActivity=(dlgid:string) {
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = customDimensions['DialogId']
| extend StepName = customDimensions['StepName']
| extend InstanceId = customDimensions['InstanceId']
| where DialogId == dlgid
| project timestamp, name, StepName, InstanceId
| order by tostring(InstanceId), timestamp asc
};
// For example see SampleDialogId behavior
DialogActivity("<SampleDialogId>")

Tipp.

Ez a lekérdezés egy lekérdezés által definiált függvény használatával lett megírva, amely egy felhasználó által definiált függvény, amely egyetlen lekérdezés hatókörén belül van definiálva, és egy let utasítással van definiálva. Ez a lekérdezés a következő használata query-defined functionnélkül íródott:

let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = customDimensions['DialogId']
| extend StepName = customDimensions['StepName']
| extend InstanceId = customDimensions['InstanceId']
| where DialogId == "<SampleDialogId>"
| project timestamp, name, StepName, InstanceId
| order by tostring(InstanceId), timestamp asc
Minta lekérdezési eredmények
timestamp név StepName InstanceId
2019-08-23T20:04... WaterfallStart null ... 79c0f03d8701
2019-08-23T20:04... WaterfallStep GetPointOfInterestLocations ... 79c0f03d8701
2019-08-23T20:04... WaterfallStep ProcessPointOfInterestSelection ... 79c0f03d8701
2019-08-23T20:04... WaterfallStep GetRoutesToDestination ... 79c0f03d8701
2019-08-23T20:05... WaterfallStep ResponseToStartRoutePrompt ... 79c0f03d8701
2019-08-23T20:05... Vízeséskiegészítés 1 null ... 79c0f03d8701
2019-08-28T23:35... WaterfallStart null ... 6ac8b3211b99
2019-08-28T23:35... WaterfallStep 2 GetPointOfInterestLocations ... 6ac8b3211b99
2019-08-28T19:41... WaterfallStart null ... 8137d76a5cbb
2019-08-28T19:41... WaterfallStep 2 GetPointOfInterestLocations ... 8137d76a5cbb
2019-08-28T19:41... WaterfallStart null ... 8137d76a5cbb

1Befejezve

2Elhagyatott

Értelmezés: A felhasználók úgy tűnik, hogy a GetPointOfInterestLocations lépésben abbahagyják a beszélgetést.

Megjegyzés:

A vízesés párbeszédpanelek végrehajtanak egy sorozatot (indítás, több lépés, kész). Ha egy sorozat befejezetlen indítással kezdődik, az azt jelenti, hogy a párbeszédpanel megszakadt, vagy a felhasználó megszakította vagy megszakította a párbeszédpanelt. Ebben a részletes elemzésben láthatja ezt a viselkedést (lásd a befejezett és az elhagyott lépéseket).

Vízesés start/step/complete/cancel steps totals

Ez a példa a párbeszédpanel-sorozat indításának összesítését, a vízeséslépések összesített számát, a sikeres befejezések számát, a megszakítások számát, valamint a WaterfallStart és a WaterfallComplete és a WaterfallCancel együttes összegét mutatja.

// Drill down: Aggregate view of waterfall start/step/complete/cancel steps totals for specific dialog
let queryStartDate = ago(14d);
let queryEndDate = now();
let DialogSteps=(dlgid:string) {
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = customDimensions['DialogId']
| where DialogId == dlgid
| project name
| summarize count() by name
};
// For example see SampleDialogId behavior
DialogSteps("<SampleDialogId>")
Vízesés-összesítő lekérdezés eredményeinek mintája
név count
WaterfallStart 21
WaterfallStep 47
Vízeséskiegészítés 11
WaterfallCancel 1

Értelmezés: A párbeszédpanel-sorozat 21 meghívásából csak 11 fejeződött be, 9-et felhagytak, egyet pedig a felhasználó törölt.

Átlagos időtartam a párbeszédpanelen

Ez a példa azt méri, hogy a felhasználók átlagosan mennyi időt töltenek egy adott párbeszédpanelen. A robot számára előnyös lehet az olyan párbeszédpanelek egyszerűsítése, amelyek hosszú időt vesznek igénybe a felhasználó számára.

// Average dialog duration
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| where name=="WaterfallStart"
| extend DialogId = customDimensions['DialogId']
| extend instanceId = tostring(customDimensions['InstanceId'])
| join kind=leftouter (customEvents | where name=="WaterfallCancel" | extend instanceId = tostring(customDimensions['InstanceId'])) on instanceId
| join kind=leftouter (customEvents | where name=="WaterfallComplete" | extend instanceId = tostring(customDimensions['InstanceId'])) on instanceId
| extend duration = case(not(isnull(timestamp1)), timestamp1 - timestamp,
not(isnull(timestamp2)), timestamp2 - timestamp, 0s) // Abandoned aren't counted. Alternate: now()-timestamp
| extend seconds = round(duration / 1s)
| summarize AvgSeconds=avg(seconds) by tostring(DialogId)
| order by AvgSeconds desc nulls last
| render barchart with (title="Duration in Dialog")

Átlagos időtartamú lekérdezési eredmények mintája

Sample chart of dialog duration.

Átlagos lépések a párbeszédpanelen

Ez a példa az egyes meghívott párbeszédpanelek "hosszát" mutatja be az átlag, a minimális, a maximális és a szórás alapján kiszámítva. Ez segíthet a párbeszédpanel minőségének elemzésében. Például:

  • A túl sok lépést tartalmazó párbeszédpaneleket ki kell értékelni az egyszerűsítési lehetőségek szempontjából.
  • A minimális/maximális/átlag közötti széles eltérést tartalmazó párbeszédpanelek azt jelenthetik, hogy a felhasználók elakadnak a feladatok elvégzéséhez. Előfordulhat, hogy ki kell értékelnie annak lehetőségét, hogy a feladatok elvégzéséhez rövidebb útvonalakat kell megadnia, vagy csökkentenie kell a párbeszédpanelek összetettségét.
  • A nagy szórást tartalmazó párbeszédpanelek összetett útvonalakra vagy hibás felületre (megszakításra/megszakításra) utalnak.
  • A néhány lépést tartalmazó párbeszédpanelek azért lehetnek ilyenek, mert soha nem fejezték be őket. A befejezési/lemondási arányok elemzése segíthet a meghatározásban.
// min/max/std/avg steps per dialog
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend DialogId = tostring(customDimensions['DialogId'])
| extend StepName = tostring(customDimensions['StepName'])
| extend InstanceId = tostring(customDimensions['InstanceId'])
| where name == "WaterfallStart" or  name == "WaterfallStep" or  name == "WaterfallComplete"
| order by InstanceId, timestamp asc
| project timestamp, DialogId, name, InstanceId, StepName
| summarize cnt=count() by InstanceId, DialogId
| summarize avg=avg(cnt), minsteps=min(cnt),maxsteps=max(cnt), std=stdev(cnt) by DialogId
| extend avgsteps = round(avg, 1)
| extend avgshortbysteps=maxsteps-avgsteps
| extend avgshortbypercent=round((1.0 - avgsteps/maxsteps)*100.0, 1)
| project DialogId, avgsteps, minsteps, maxsteps, std, avgshortbysteps, avgshortbypercent
| order by std desc nulls last

Átlaglépéses lekérdezési eredmények mintája

Párbeszédpanel azonosítója avg lépések minimális lépések maximális lépések szórás avg rövid lépések szerint avg short by percent
FindArticlesDialog 6,2 2 7 2.04 0,8 11.4%
CreateTicket 4.3 2 5 1.5 0,7 14%
CheckForCurrentLocation 3.9 2 5 1.41 1,1 22%
BaseAuth 3.3 2 4 1,03 0,7 17.5%
regisztráció 2.7 2 4 0.94 1.3 32.5%

__Interpretation: A FindArticlesDialog például széles szórással rendelkezik a min/max között, ezért meg kell vizsgálni, és esetleg újra kell tervezni > optimalizálva.

Csatornatevékenység tevékenységmetrika szerint

Ez a példa azt méri, hogy a robot mennyi tevékenységet kap csatornánként az adott időszakban. Ezt a következő metrikák bármelyikének megszámolásával hajtja végre: bejövő üzenetek, felhasználók, beszélgetések vagy párbeszédpanelek. Ez hasznos lehet a szolgáltatásállapot-elemzéshez vagy a csatornák népszerűségének méréséhez.

// number of metric: messages, users, conversations, dialogs by channel
let queryStartDate = ago(14d);
let queryEndDate = now();
let groupByInterval = 1d;
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| extend InstanceId = tostring(customDimensions['InstanceId'])
| extend DialogId = tostring(customDimensions['DialogId'])
| extend ActivityId = tostring(customDimensions['activityId'])
| extend ChannelId = tostring(customDimensions['channelId'])
| where DialogId != '' and  InstanceId != '' and user_Id != ''
| extend metric = user_Id // InstanceId or ActivityId or user_Id
| summarize Count=count(metric) by  ChannelId, bin(timestamp, groupByInterval)
| order by Count desc nulls last
| render barchart with (title="Users", kind=stacked) // or Incoming Messages or Conversations or Users

Tipp.

Érdemes lehet kipróbálni az alábbi változatokat:

  • Futtassa a lekérdezést időbélyeg-gyűjtő használata nélkül: bin(timestamp, groupByInterval).
  • Használhatja a különböző felhasználókat és count az összes felhasználói eseménytevékenységet isdcount. Ez az ismétlődő felhasználók esetében is működik.

Minta csatornánkénti tevékenységenkénti lekérdezés eredményei

Sample chart of channel usage.

Értelmezés: Az Emulator tesztelése korábban a legnépszerűbb volt, de miután élőben mentünk, a DirectLineSpeech a legnépszerűbb csatorna.

Összes szándék népszerűség szerint

Ez a példa a LUIS-kompatibilis robotokra vonatkozik. Az összes szándék népszerűség szerinti összegzését és a szándékészlelési biztos pontszámot jeleníti meg.

Megjegyzé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 gyakorlatban a nézetet el kell különíteni az egyes metrikákhoz.
  • A népszerű szándékútvonalakat a felhasználói élményhez kell optimalizálni.
  • Az alacsony átlagos pontszámok rossz felismerést jeleznek , és lehetséges, hogy hiányzik a tényleges felhasználói szándék.
// show total intents
let queryStartDate = ago(14d);
let queryEndDate = now();
customEvents
| where timestamp > queryStartDate
| where timestamp < queryEndDate
| where name startswith "LuisResult"
| extend intentName = tostring(customDimensions['intent'])
| extend intentScore = todouble(customDimensions['intentScore'])
| summarize ic=count(), ac=avg(intentScore)*100 by intentName
| project intentName, ic, ac
| order by ic desc nulls last
| render barchart with (kind=unstacked, xcolumn=intentName, ycolumns=ic,ac, title="Intents Popularity")

Minta szándékok népszerűség szerinti lekérdezési eredményei

Sample chart of intent popularity.

Értelmezés: Például a legnépszerűbb szándék, megerősítés csak 23%-os megbízhatósággal észlelhető átlagosan.

Tipp.

A Barcharts a Kusto-lekérdezésekkel elérhető több mint egy tucat lehetőség egyike. További lehetőségek: anomálichart, területdiagram, oszlopdiagram, vonaldiagram, pontdiagram. További információkért tekintse meg a renderelési operátor témakörét.

A Bot Analytics Instrumentation sémája

Az alábbi táblázatok azokat a leggyakoribb mezőket mutatják be, amelyekbe a robot telemetriai adatokat naplóz.

Általános boríték

Az Alkalmazás Elemzések rendszerállapot gyakori naplóelemzési mezői.

Mező Ismertetés Mintaértékek
név Üzenettípus BotMessageSend, BotMessageReceived, LuisResult, WaterfallStep, WaterfallStart, SkillWebSocketProcessRequestLatency, SkillWebSocketOpenCloseLatency, WaterfallComplete, QnaMessage, WaterfallCancel, SkillWebSocketTurnLatency, AuthPromptValidatorAsyncFailure
customDimensions SDK Bot Analytics activityId=<id>, activityType=message, channelId=emulator, fromId=<id>, fromName=User, locale=en-us, recipientId=<id>, recipientName=Bot, text=find a coffee shop
timestamp Az esemény időpontja 2019-09-05T18:32:45.287082Z
instance_Id Beszélgetés azonosítója f7b2c416-a680-4b2c-b4cc-79c0f03d8711
operation_Id Azonosító bekapcsolása 084b2856947e3844a5a18a8476d99aaaaa
user_Id Egyedi csatorna felhasználói azonosítója emulator7c259c8e-2f47...
client_IP Ügyfél IP-címe 127.0.0.1 (adatvédelmi blokk miatt előfordulhat, hogy hiányzik)
client_City Ügyfél város Redmond (ha észlelik, lehet, hogy hiányzik)

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

Megjegyzé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.

Egyéni dimenziók

A robotspecifikus tevékenységadatok többsége a customDimensions mezőben van tárolva.

Mező Ismertetés Mintaértékek
activityId Üzenetazonosító <id>: 8da6d750-d00b-11e9-80e0-c14234b3bc2a
activityType Üzenet típusa üzenet, conversationUpdate, event, invoke
channelId Csatornaazonosító emulátor, directline, msteams, webchat
fromId Azonosítóból <id>
fromName Felhasználónév az ügyféltől John Bonham, Keith Moon, Steve Smith, Steve Gadd
területi beállítás Ügyfél forrásának területi beállítása en-us, zh-cn, en-GB, de-de, zh-CN
recipientId Címzett azonosítója <id>
recipientName Címzett neve John Bonham, Keith Moon, Steve Smith, Steve Gadd
text Szöveg az üzenetben kávézó keresése

Egyéni dimenziók: LUIS

Megjegyzé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 LUIS-rendszerállapot az alábbi Egyéni dimenziók mezőkben tárolja az adatait.

Mező Ismertetés Mintaértékek
szándék LUIS észlelt szándék pointOfInterestSkill
intentScore LUIS-felismerési pontszám 0,98
Entitások LUIS által észlelt entitások FoodOfGrocery = [["kávé"]], KULCSSZÓ= ["kávézó"]
Question A LUIS észlelte a kérdést kávézó keresése
sentimentLabel LUIS észlelt hangulat pozitív

Egyéni dimenziók: QnAMaker

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

A QnAMaker-rendszerállapot az alábbi Egyéni dimenziók mezőkben tárolja az adatait.

Tipp.

A személyes adatok, például kérdések és válaszok naplózásának engedélyezéséhez a napló személyes adatainak paraméterét igaz értékre kell állítani a QnA Maker-osztály konstruktorában.

Mező Ismertetés Mintaértékek
question (kérdés) QnA észlelt kérdés mit tehetsz?
Válasz QnA-válasz Kérdései vannak, lehet, hogy vannak válaszaim.
articleFound QnA true
questionId QnA-kérdés azonosítója 488
knowledgeBaseId QnA KB-azonosító 2a4936f3-b2c8-44ff-b21f-67bc413b9727
matchedQuestion Megfeleltethető kérdések tömbje ["Meg tudná magyarázni nekem, hogy mi a szerepe?","Tud mondani nekem egy kicsit magadról?","Tudsz mondani rólad?","tudna segíteni nekem","hmmm így mit tudsz csinálni?","hogyan tudsz segíteni nekem","Hogyan tudsz segíteni nekem?","Hogyan tudsz segíteni?","Hogyan segíthetsz?","hogyan használhatom Önt a projektjeimben?", "Beszélj hozzám a képességedről","Mire vagy képes?", ...]

Kapcsolódó információk