Analysera robotens telemetridata
GÄLLER FÖR: SDK v4
Analysera robotbeteende
Följande samling frågor kan användas för att analysera robotbeteendet. Du kan använda samlingen för att skapa anpassade frågor i Azure Monitor Log Analytics och för att skapa instrumentpaneler för övervakning och Power BI-visualisering .
Förutsättningar
Det är bra att ha en grundläggande förståelse för följande begrepp:
- Kusto-frågor
- Så här använder du Log Analytics i Azure Portal för att skriva Azure Monitor-loggfrågor
- De grundläggande begreppen för loggfrågor i Azure Monitor
Dricks
Om du skapar din robot med verktyg som Copilot Studio eller Composer, vill du använda den adaptiva dialogversionen av varje fråga när den är tillgänglig.
Instrumentpaneler
Azure-instrumentpaneler är ett bra sätt att visa och dela den information som genereras från dina frågor. Du kan skapa anpassade instrumentpaneler för att övervaka robotaktiviteten genom att associera dina frågor med panelerna som du lägger till på instrumentpanelen. Mer information om instrumentpaneler och hur du associerar dina frågor med dem finns i Skapa och dela instrumentpaneler med Log Analytics-data. Resten av den här artikeln visar exempel på några av de frågor som du kan ha nytta av när du övervakar robotarnas beteende.
Exempel på Kusto-frågor
Kommentar
Vi rekommenderar att du pivoterar på olika dimensioner, till exempel punkt, kanal och nationella inställningar för alla frågor i den här artikeln.
Antal användare per period
Det här exemplet resulterar i ett linjediagram som visar hur många distinkta användare som kommunicerat med din robot per dag under de senaste 14 dagarna. Tidsperioden kan enkelt ändras genom att tilldela olika värden till variablerna queryStartDate
och queryEndDate
interval
.
Viktigt!
Du får bara rätt antal unika användare i den här frågan om de är autentiserade användare, och resultatet kan också bero på kanalfunktionerna.
// 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
Dricks
Kusto summarize-operatorn används för att skapa en tabell som aggregerar innehållet i indatatabellen.
Funktionen Bin är en kusto-skalärfunktion som när den summarize operator
används tillsammans med kommer att gruppera frågeresultaten i det angivna värdet. I exemplet ovan grupperas detta efter dag, Kusto accepterar även h=hours, m=minutes, s=seconds, ms=millisekunder, microsecond=microseconds.
Med återgivningsoperatorn kan du enkelt återge diagram, till exempel tidsschemat, ett linjediagram där x-axeln är en datetime och andra numeriska kolumner kan användas för y-axeln. Den behåller automatiskt x-axelns blanksteg på ett bra sätt även om dina data inte har angetts varje gång. Om ingen återgivningssats används är standardvärdet table
.
Exempel på frågeresultat för antal användare per period
Aktivitet per period
Det här exemplet visar hur du mäter mängden aktivitet per önskad dimension, till exempel antalet konversationer, dialogrutor eller meddelanden per dag under de senaste 14 dagarna. Tidsperioden kan enkelt ändras genom att tilldela olika värden till variablerna querystartdate
och queryEndDate
interval
. Den önskade dimensionen definieras av extend
-satsen i följande exempel, metric
kan anges till antingen InstanceId, DialogId eller activityId.
Tilldela mått till den dimension som du vill visa:
- InstanceId mäter antalet konversationer
- DialogId mäter antalet dialogrutor
- ActivityId mäter antalet meddelanden
// 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
Dricks
Kusto extend-operatorn används för att skapa beräknade kolumner och lägga till dem i resultatuppsättningen.
Exempel på frågeresultat för aktivitet per period
Aktivitet per användare och period
Det här exemplet visar hur du räknar antalet aktiviteter per användare och period. Den här frågan ökar detaljnivån i frågan aktivitet per period för att fokusera på aktiviteten per användare och period. Aktiviteterna omfattar dialogrutor, konversationer eller meddelanden. Den här frågan mäter användarinteraktion med din robot, vilket kan hjälpa dig att hitta potentiella problem, till exempel:
- Dagar med mycket aktivitet av en enskild användare kan innebära en attack eller ett test
- Dagar med liten interaktion kan tyda på problem med tjänstens hälsotillstånd
Dricks
Du kan ta bort med user_Id för att hämta den allmänna robotaktivitetsvolymen som kan pivoteras i tid och dialogrutor, meddelanden eller konversationer.
// 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
Exempel på frågeresultat för aktivitet per användare och period
user_Id | Tidsstämpel | Antal |
---|---|---|
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 |
Dialogrutan har slutförts
När du har ställt in telemetriklienten för en dialogruta genererar dialogrutan (och dess underordnade) vissa standardtelemetridata, till exempel startade och slutförda. Det här exemplet kan användas för att mäta slutförda dialogrutor i förhållande till påbörjade dialogrutor. Om antalet dialogrutor som startats är större än det antal som har slutförts slutförs inte några av dina användare i dialogflödet. Du kan använda den här frågan för att identifiera och felsöka eventuell dialoglogik. Den kan också användas för att identifiera vilka dialogrutor som används mest och minst ofta.
Dricks
Om du skapar din robot med verktyg som Copilot Studio eller Composer, vill du använda den anpassningsbara dialogversionen av varje fråga.
Slutförande av vattenfallsdialogruta
// % 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)
Dricks
Operatorn Kusto-koppling används för att sammanfoga raderna i två tabeller för att bilda en ny tabell genom att matcha värdena för de angivna kolumnerna från varje tabell.
Projektoperatorn används för att välja de fält som du vill visa i dina utdata. På samma extend operator
sätt som det som lägger till ett nytt fält project operator
kan antingen välja från den befintliga uppsättningen fält eller lägga till ett nytt fält.
Anpassningsbara dialogrutor har startats och slutförts
// % Completed adaptive dialog: shows completes relative to starts. This type is the default dialog type when using Copilot Studio 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)
Exempel på frågeresultat för dialogruta
Inkomplettering av dialogruta
Det här exemplet kan användas för att räkna antalet dialogflöden som startats men aldrig slutförts på grund av annullering eller övergivenhet under den angivna tidsperioden. Du kan använda den för att granska ofullständiga dialogrutor och undersöka om de aktivt avbröts på grund av användarförvirring eller avbrutna på grund av användarens distraktion eller intresseförlust.
Vattenfallsdialogrutorna har inte slutförts
// 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
Anpassningsbara dialogrutor har inte slutförts
// Show incomplete dialogs for adaptive dialogs; this type is the default dialog type when using Copilot Studio 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
Dricks
Kusto-orderoperatorn (samma som sort operator
) används för att sortera raderna i indatatabellen efter en eller flera kolumner. Obs! Om du vill undanta null-värden från resultatet av en fråga kan du filtrera bort dem i instruktionen where
, till exempel lägga till "and isnotnull(Timestamp)" eller returnera null-värden i början eller slutet genom att lägga till nulls first
eller nulls first
i slutet av order-instruktionen.
Exempel på frågeresultat för dialogrutainkomplettering
Ökad detaljnivå i dialogsekvens
Vattenfallsstart/steg/slutföra för dialog i konversation
Det här exemplet visar sekvensen med dialogsteg grupperade efter konversation (instanceId), vilket kan vara användbart för att avgöra vilka steg som leder till avbrott i dialogrutan.
Kör den här frågan och ange värdet för önskat DialogId
värde i stället för <SampleDialogId>
// 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>")
Dricks
Den här frågan skrevs med en frågedefinierad funktion, som är en användardefinierad funktion som definieras och används inom omfånget för en enskild fråga och definieras via en let-instruktion. Den här frågan skrivs utan användning av query-defined function
:
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
Exempel på frågeresultat
timestamp | name | StepName | InstanceId |
---|---|---|---|
2019-08-23T20:04... | VattenfallStart | NULL | ... 79c0f03d8701 |
2019-08-23T20:04... | VattenfallSteg | GetPointOfInterestLocations | ... 79c0f03d8701 |
2019-08-23T20:04... | VattenfallSteg | ProcessPointOfInterestSelection | ... 79c0f03d8701 |
2019-08-23T20:04... | VattenfallSteg | GetRoutesToDestination | ... 79c0f03d8701 |
2019-08-23T20:05... | VattenfallSteg | ResponseToStartRoutePrompt | ... 79c0f03d8701 |
2019-08-23T20:05... | WaterfallComplete 1 | NULL | ... 79c0f03d8701 |
2019-08-28T23:35... | VattenfallStart | NULL | ... 6ac8b3211b99 |
2019-08-28T23:35... | VattenfallSteg 2 | GetPointOfInterestLocations | ... 6ac8b3211b99 |
2019-08-28T19:41... | VattenfallStart | NULL | ... 8137d76a5cbb |
2019-08-28T19:41... | VattenfallSteg 2 | GetPointOfInterestLocations | ... 8137d76a5cbb |
2019-08-28T19:41... | VattenfallStart | NULL | ... 8137d76a5cbb |
1 Slutförd
2 Övergiven
Tolkning: Användarna verkar överge konversationen i steget GetPointOfInterestLocations.
Kommentar
Vattenfallsdialogrutor kör en sekvens (start, flera steg, slutför). Om en sekvens visas som börjar utan att slutföras innebär det att dialogrutan avbröts antingen på grund av att användaren övergav eller avbröt dialogrutan. I den här detaljerade analysen kan man se det här beteendet (se slutförda eller övergivna steg).
Aggregerade summor för vattenfallsstart/steg/slutföra/avbryta steg
Det här exemplet visar totalsummorna för det totala antalet gånger som en dialogsekvens startades, det sammanlagda totala antalet vattenfallssteg, hur många som slutfördes, hur många som avbröts och skillnaden mellan WaterfallStart och den sammanlagda summan av WaterfallComplete plus WaterfallCancel ger dig det totala antalet övergivna.
// 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>")
Exempel på vattenfallsaggregerade frågeresultat
Namn | antal |
---|---|
VattenfallStart | 21 |
VattenfallSteg | 47 |
WaterfallComplete | 11 |
VattenfallCancel | 1 |
Tolkning: Av 21 anrop av dialogsekvensen har endast 11 slutförts, 9 har avbrutits och en avbröts av användaren.
Genomsnittlig varaktighet i dialogrutan
I det här exemplet mäts den genomsnittliga tid som användarna tillbringar i en viss dialogruta. Din robot kan ha nytta av att förenkla dialogrutor som tar lång tid för en användare att slutfö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")
Exempel på frågeresultat för genomsnittlig varaktighet
Genomsnittliga steg i dialogrutan
Det här exemplet visar varje anropad dialogrutas "längd" som beräknas med medelvärde, min, max och standardavvikelse. Detta kan hjälpa dig att analysera dialogrutans kvalitet. Till exempel:
- Dialogrutor med för många steg bör utvärderas för förenklingsmöjligheter.
- Dialogrutor med ett stort mellanrum mellan min/max/genomsnitt kan innebära att användarna stoppas när de försöker slutföra uppgifterna. Du kan behöva utvärdera möjligheten att det finns kortare sökvägar för att slutföra uppgifterna, eller sätt att minska dialogrutans komplexitet.
- Dialogrutor med stor standardavvikelse tyder på komplexa sökvägar eller en bruten upplevelse (avbryt/avbryt).
- Dialogrutor med några få steg kan vara så eftersom de aldrig slutfördes. Genom att analysera slutförande-/övergivenhetsfrekvensen kan det vara till hjälp att fastställa detta.
// 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
Exempel på frågeresultat för genomsnittssteg
Dialog-ID | avg-steg | minsta steg | maxsteg | st.av | avg short by steps | genomsnittligt med procent |
---|---|---|---|---|---|---|
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% |
registrering | 2,7 | 2 | 4 | 0.94 | 1.3 | 32.5% |
__Interpretation: FindArticlesDialog har till exempel en bred spridning mellan min/max och bör undersökas och eventuellt göras om och optimeras.
Kanalaktivitet efter aktivitetsmått
Det här exemplet mäter hur mycket aktivitet roboten tar emot per kanal under den angivna perioden. Den gör detta genom att räkna något av följande mått: inkommande meddelanden, användare, konversationer eller dialogrutor. Detta kan vara användbart för analys av tjänstens hälsotillstånd eller för att mäta en kanals popularitet.
// 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
Dricks
Du kanske vill prova dessa varianter:
- Kör frågan utan tidsstämpelns bucketing:
bin(timestamp, groupByInterval)
. - Du kan också använda
dcount
för distinkta användare ochcount
för alla användarhändelseaktiviteter. Detta fungerar även för upprepande användare.
Exempel på frågeresultat för kanalaktivitet efter aktivitet
Tolkning: Emulatortestning brukade vara populärast, men när vi gick live är DirectLineSpeech den mest populära kanalen.
Totalt antal avsikter efter popularitet
Det här exemplet gäller luis-aktiverade robotar. Den visar en sammanfattning av alla avsikter efter popularitet och motsvarande avsiktsidentifieringssäkerhetspoäng.
Kommentar
Language Understanding (LUIS) dras tillbaka den 1 oktober 2025. Från och med den 1 april 2023 kan du inte skapa nya LUIS-resurser. En nyare version av språktolkning är nu tillgänglig som en del av Azure AI Language.
Conversational Language Understanding (CLU), en funktion i Azure AI Language, är den uppdaterade versionen av LUIS. Mer information om stöd för språktolkning i Bot Framework SDK finns i Förstå naturligt språk.
- I praktiken bör vyn avgränsas för varje mått.
- Populära avsiktssökvägar bör optimeras för användarupplevelsen.
- Låga genomsnittliga poäng indikerar dålig igenkänning och eventuell saknad faktisk användaravsikt.
// 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")
Exempel på frågeresultat för avsikter efter popularitet
Tolkning: Till exempel den mest populära avsikten, bekräfta identifieras endast med 23% konfidens i genomsnitt.
Dricks
Barcharts är ett av över ett dussin alternativ som är tillgängliga med Kusto-frågor. Några andra alternativ är: anomalychart, areachart, columnchart, linechart, scatterchart. Mer information finns i avsnittet rendera operator .
Schema för Bot Analytics-instrumentation
Följande tabeller visar de vanligaste fälten som roboten loggar telemetridata till.
Allmänt kuvert
Vanliga log analytics-fält i Application Insights-instrumentation.
Fält | Beskrivning | Exempelvärden |
---|---|---|
name | Meddelandetyp | 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 | Tidpunkt för händelsen | 2019-09-05T18:32:45.287082Z |
instance_Id | Konversations-ID | f7b2c416-a680-4b2c-b4cc-79c0f03d8711 |
operation_Id | Tur-ID | 084b2856947e3844a5a18a8476d99aaaa |
user_Id | Unikt kanalanvändar-ID | emulator7c259c8e-2f47... |
client_IP | Klientens IP-adress | 127.0.0.1 (kan vara frånvarande på grund av sekretessblock) |
client_City | Klientstad | Redmond (om det upptäcks kan vara frånvarande) |
Kommentar
Azure AI QnA Maker dras tillbaka den 31 mars 2025. Från och med den 1 oktober 2022 kan du inte skapa nya QnA Maker resurser eller kunskapsbaser för 2022. En nyare version av fråge- och svarsfunktionen är nu tillgänglig som en del av Azure AI Language.
Svar på anpassade frågor, en funktion i Azure AI Language, är den uppdaterade versionen av QnA Maker-tjänsten. Mer information om stöd för frågor och svar i Bot Framework SDK finns i Förstå naturligt språk.
Kommentar
Language Understanding (LUIS) dras tillbaka den 1 oktober 2025. Från och med den 1 april 2023 kan du inte skapa nya LUIS-resurser. En nyare version av språktolkning är nu tillgänglig som en del av Azure AI Language.
Conversational Language Understanding (CLU), en funktion i Azure AI Language, är den uppdaterade versionen av LUIS. Mer information om stöd för språktolkning i Bot Framework SDK finns i Förstå naturligt språk.
Anpassade dimensioner
De flesta robotspecifika aktivitetsdata lagras i fältet customDimensions .
Fält | Beskrivning | Exempelvärden |
---|---|---|
activityId | Meddelande-ID | <id>: 8da6d750-d00b-11e9-80e0-c14234b3bc2a |
activityType | Typ av meddelande | message, conversationUpdate, event, invoke |
channelId | Kanalidentifierare | emulator, directline, msteams, webchat |
fromId | Från identifierare | <id> |
fromName | Användarnamn från klient | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
locale | Språk för klientursprung | en-us, zh-cn, en-GB, de-de, zh-CN |
recipientId | Mottagarens identifierare | <id> |
recipientName | Mottagarens namn | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
text | Meddelandetext | hitta ett kafé |
Anpassade dimensioner: LUIS
Kommentar
Language Understanding (LUIS) dras tillbaka den 1 oktober 2025. Från och med den 1 april 2023 kan du inte skapa nya LUIS-resurser. En nyare version av språktolkning är nu tillgänglig som en del av Azure AI Language.
Conversational Language Understanding (CLU), en funktion i Azure AI Language, är den uppdaterade versionen av LUIS. Mer information om stöd för språktolkning i Bot Framework SDK finns i Förstå naturligt språk.
LUIS-instrumentation lagrar sina data i följande fält för anpassade dimensioner.
Fält | Beskrivning | Exempelvärden |
---|---|---|
avsikt | LUIS-identifierad avsikt | pointOfInterestSkill |
intentScore | LUIS-igenkänningspoäng | 0,98 |
Entiteter | LUIS-identifierade entiteter | FoodOfGrocery = [["coffee"]], KEYWORD= ["coffee shop"] |
Fråga | LUIS-identifierad fråga | hitta ett kafé |
sentimentLabel | LUIS identifierade sentiment | positivt |
Anpassade dimensioner: QnAMaker
Kommentar
Azure AI QnA Maker dras tillbaka den 31 mars 2025. Från och med den 1 oktober 2022 kan du inte skapa nya QnA Maker resurser eller kunskapsbaser för 2022. En nyare version av fråge- och svarsfunktionen är nu tillgänglig som en del av Azure AI Language.
Svar på anpassade frågor, en funktion i Azure AI Language, är den uppdaterade versionen av QnA Maker-tjänsten. Mer information om stöd för frågor och svar i Bot Framework SDK finns i Förstå naturligt språk.
QnAMaker-instrumentation lagrar sina data i följande fält för anpassade dimensioner.
Dricks
Om du vill aktivera loggning av personlig information som frågor och svar bör parametern för personlig logginformation anges till true i konstruktorn för klassen QnA Maker .
Fält | Beskrivning | Exempelvärden |
---|---|---|
-fråga | QnA-identifierad fråga | Vad kan du göra? |
svar | QnA-svar | Du har frågor, jag kanske har svar. |
articleFound | QnA | true |
questionId | QnA-fråge-ID | 488 |
knowledgeBaseId | QnA KB-ID | 2a4936f3-b2c8-44ff-b21f-67bc413b9727 |
matchedQuestion | Matris med matchade frågor | ["Kan du förklara för mig vad din roll är?","Kan du berätta lite om dig själv?","Kan du berätta om dig?","kan du hjälpa mig","hmmm så vad kan du göra?","Hur kan du hjälpa mig","Hur kan du hjälpa mig?","Hur kan du hjälpa till?","så hur kan jag använda dig i mina projekt?", "Prata med mig om din förmåga","Vad är du kapabel till?", ...] |
Se även
- En självstudiekurs om hur du skriver loggfrågor finns i Kom igång med loggfrågor i Azure Monitor
- Visualisera data från Azure Monitor
- Lär dig hur du lägger till telemetri i din robot
- Läs mer om Azure Monitor-loggfrågor
- Fullständig lista över Händelser i Bot Framework Application Insights
- Skapa och dela instrumentpaneler för Log Analytics-data