Analýza telemetrických dat robota
PLATÍ PRO: SDK v4
Analýza chování robota
K analýze chování robota je možné použít následující kolekci dotazů. Kolekci můžete použít k vytváření vlastních dotazů ve službě Azure Monitor Log Analytics a k vytváření řídicích panelů pro monitorování a vizualizaci Power BI .
Požadavky
Je užitečné mít základní znalosti následujících konceptů:
- Dotazy Kusto
- Jak používat Log Analytics na webu Azure Portal k zápisu dotazů na protokoly služby Azure Monitor
- Základní koncepty dotazů protokolu ve službě Azure Monitor
Tip
Pokud vytvoříte robota pomocí nástrojů, jako je Copilot Studio nebo Composer, budete chtít používat verzi adaptivního dialogu každého dotazu, pokud je k dispozici.
Řídicí panely
Řídicí panely Azure nabízejí skvělý způsob, jak zobrazit a sdílet informace vygenerované z dotazů. Můžete vytvářet vlastní řídicí panely, které vám pomůžou monitorovat aktivity robotů tím, že přidružují dotazy k dlaždicím, které přidáte na řídicí panel. Další informace o řídicích panelech a o tom, jak s nimi přidružit dotazy, najdete v tématu Vytváření a sdílení řídicích panelů dat Log Analytics. Zbývající část tohoto článku ukazuje příklady některých dotazů, které můžou být užitečné při monitorování chování robotů.
Příklady dotazů Kusto
Poznámka:
Doporučujeme se zaměřit na různé dimenze, jako je období, kanál a národní prostředí pro všechny dotazy v tomto článku.
Počet uživatelů za období
Výsledkem tohoto příkladu je spojnicový graf, který ukazuje, kolik jedinečných uživatelů komunikovalo s vaším robotem za den za posledních 14 dnů. Časové období lze snadno změnit přiřazením různých hodnot k objektu queryStartDate
a queryEndDate
interval
proměnným.
Důležité
V tomto dotazu získáte správný počet jedinečných uživatelů jenom v případě, že jsou ověření uživatelé, a výsledky můžou záviset také na možnostech kanálu.
// 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
Tip
Operátor sumarizace Kusto slouží k vytvoření tabulky, která agreguje obsah vstupní tabulky.
Funkce Bin je skalární funkce Kusto, která při použití ve spojení s summarize operator
dotazem seskupí výsledky dotazu do zadané hodnoty. V předchozím příkladu se to seskupí podle dne, Kusto také přijme h=hours, m=minutes, s=seconds, ms=milisekundy, microsecond=microseconds.
Operátor vykreslení umožňuje snadno vykreslovat grafy, jako je časový graf, spojnicový graf, kde osa x je datetime a jakýkoli jiný číselný sloupec lze použít pro osu y. Automaticky udržuje osu x pěkně rozsaděnou i v případě, že vaše data nemají pokaždé zadanou dobu. Pokud se nepoužívá žádný příkaz render, použije se výchozí hodnota table
.
Ukázka výsledků dotazu typu počet uživatelů za období
Aktivita za období
Tento příklad ukazuje, jak měřit objem aktivity na požadovanou dimenzi, například počet konverzací, dialogů nebo zpráv za den za posledních 14 dnů. Časové období lze snadno změnit přiřazením různých hodnot k objektu querystartdate
a queryEndDate
interval
proměnným. Požadovaná dimenze je definována extend
klauzulí v následujícím příkladu, metric
může být nastavena na InstanceId, DialogId nebo activityId.
Přiřaďte metriku ke dimenzi, kterou chcete zobrazit:
- Id instance měří počet konverzací.
- DialogId měří počet dialogových oken.
- Id aktivity měří počet zpráv.
// 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
Tip
Operátor rozšíření Kusto slouží k vytvoření počítaných sloupců a jejich připojení k sadě výsledků.
Ukázkové výsledky dotazu na aktivitu za období
Aktivita na uživatele za období
Tento příklad ukazuje, jak spočítat počet aktivit na uživatele za období. Tento dotaz přejde k podrobnostem o aktivitě v dotazu na období , abyste se mohli zaměřit na aktivitu jednotlivých uživatelů za období. Aktivity zahrnují dialogy, konverzace nebo zprávy. Tento dotaz měří interakci uživatelů s robotem, což může pomoct při hledání potenciálních problémů, například:
- Dny s velkým množstvím aktivit jednoho uživatele můžou znamenat útok nebo test.
- Dny s malou interakcí můžou znamenat problémy se stavem služby
Tip
Pokud chcete získat obecný objem aktivit robota, který se dá otočit podle času a dialogových oken, zpráv nebo konverzací, můžete je odebrat user_Id.
// 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
Ukázkové výsledky dotazu na aktivitu podle uživatele za období
user_Id | časová značka | Počet |
---|---|---|
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 |
Dokončení dialogového okna
Jakmile nastavíte klienta telemetrie pro dialogové okno, dialogové okno (a jeho podřízené položky) vygeneruje některá výchozí telemetrická data, například spuštěná a dokončená. Tento příklad lze použít k měření dokončených dialogových oken vzhledem k spuštěných dialogům. Pokud je počet spuštěných dialogů větší než počet dokončených, někteří uživatelé nedokončují tok dialogového okna. Tento dotaz můžete použít k identifikaci potenciální logiky dialogového okna a řešení souvisejících potíží. Dá se také použít k identifikaci, která dialogová okna se nejčastěji a nejméně často používají.
Tip
Pokud robota vytvoříte pomocí nástrojů, jako je Copilot Studio nebo Composer, budete chtít použít adaptivní verzi dialogového okna každého dotazu.
Dokončení vodopádového dialogového okna
// % 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)
Tip
Operátor spojení Kusto slouží ke sloučení řádků dvou tabulek k vytvoření nové tabulky odpovídajícími hodnotami zadaných sloupců z každé tabulky.
Operátor projektu slouží k výběru polí, která chcete zobrazit ve výstupu. extend operator
Podobně jako při přidání nového pole project operator
si můžete vybrat z existující sady polí nebo přidat nové pole.
Adaptivní dialogy se spustily a dokončily
// % 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)
Ukázkové výsledky dotazu dokončení dialogového okna
Incompletion dialog
Tento příklad lze použít ke spočítání počtu toků dialogů, které se spustily, ale nikdy se nedokončily kvůli zrušení nebo opuštění během zadaného časového období. Můžete ho použít ke kontrole neúplných dialogů a k prozkoumání toho, jestli byly aktivně zrušeny kvůli nejasnostem uživatelů nebo opuštění kvůli rušivému nebo ztrátě zájmu uživatele.
Vodopádové dialogy se nedokončily
// 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
Adaptivní dialogy se nedokončily
// 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
Tip
Operátor pořadí Kusto (stejný jako sort operator
) slouží k seřazení řádků vstupní tabulky do pořadí podle jednoho nebo více sloupců. Poznámka: Pokud chcete vyloučit hodnoty null z výsledků libovolného dotazu, můžete je v where
příkazu vyfiltrovat, například můžete přidat "and isnotnull(Timestamp)" nebo vrátit hodnoty null na začátku nebo na konec příkazu nulls first
nulls first
order.
Ukázkové výsledky dotazu při dokončování dialogového okna
Přechod k podrobnostem v posloupnosti dialogových oken
Vodopádový start/krok/dokončení dialogového okna v konverzaci
Tento příklad ukazuje posloupnost kroků dialogového okna seskupených podle konverzace (instanceId), což může být užitečné při určování kroků, které vedou k přerušení dialogového okna.
Spuštěním tohoto dotazu zadejte hodnotu požadované DialogId
hodnoty <místo 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>")
Tip
Tento dotaz byl napsán pomocí funkce definované dotazem, což je uživatelem definovaná funkce, která se definuje a používá v rámci oboru jednoho dotazu a je definována příkazem let. Tento dotaz napsaný bez použití :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
Ukázkové výsledky dotazu
časové razítko | name | StepName | InstanceId |
---|---|---|---|
2019-08-23T20:04... | Vodopádový start | 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... | WaterfallComplete 1 | null | ... 79c0f03d8701 |
2019-08-28T23:35... | Vodopádový start | null | ... 6ac8b3211b99 |
2019-08-28T23:35... | WaterfallStep 2 | GetPointOfInterestLocations | ... 6ac8b3211b99 |
2019-08-28T19:41... | Vodopádový start | null | ... 8137d76a5cbb |
2019-08-28T19:41... | WaterfallStep 2 | GetPointOfInterestLocations | ... 8137d76a5cbb |
2019-08-28T19:41... | Vodopádový start | null | ... 8137d76a5cbb |
1 Dokončeno
2 Opuštěné
Interpretace: Zdá se, že uživatelé opustí konverzaci v kroku GetPointOfInterestLocations.
Poznámka:
Vodopádové dialogy spouštějí sekvenci (spuštění, několik kroků, dokončení). Pokud se sekvence zobrazuje jako začátek bez dokončení, znamená to, že dialogové okno bylo přerušeno buď kvůli opuštění nebo zrušení dialogového okna uživatelem. V této podrobné analýze můžete vidět toto chování (viz dokončené a opuštěné kroky).
Vodopádové spuštění, krok, dokončení/ zrušení kroků agregují součty
Tento příklad ukazuje agregované součty celkového počtu spuštění sekvence dialogového okna, celkový celkový počet vodopádových kroků, počet úspěšně dokončených, počet zrušených a rozdíl mezi vodopádovým startem a kombinovaným součtem WaterfallComplete plus WaterfallCancel vám poskytne celkový počet opuštěných.
// 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>")
Ukázkové výsledky dotazu agregace vodopádového grafu
Jméno | count |
---|---|
Vodopádový start | 21 |
WaterfallStep | 47 |
WaterfallComplete | 11 |
VodopádOvýcancel | 0 |
Interpretace: Z 21 vyvolání sekvence dialogového okna bylo dokončeno pouze 11, bylo zrušeno 9 a jeden byl zrušen uživatelem.
Průměrná doba trvání v dialogovém okně
Tento příklad měří průměrnou dobu, kterou uživatelé tráví v daném dialogovém okně. Robot může mít prospěch z zjednodušení dialogových oken, které uživateli zabírají dlouhou dobu.
// 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")
Ukázka výsledků dotazu průměrné doby trvání
Průměr kroků v dialogovém okně
Tento příklad ukazuje "délku" každého vyvolaného dialogového okna vypočítanou průměrem, minimálním, maximálním a směrodatnou odchylkou. To může pomoct analyzovat kvalitu dialogového okna. Příklad:
- Dialogy s příliš mnoha kroky by se měly vyhodnotit pro příležitosti zjednodušení.
- Dialogy s širokým rozdílem mezi minimálním/maximálním/průměrem můžou znamenat, že se uživatelé při pokusu o dokončení úkolů zastaví. Možná budete muset vyhodnotit možnost, že existují kratší cesty k dokončení úkolů, nebo způsoby, jak snížit složitost dialogového okna.
- Dialogy s velkou směrodatnou odchylkou navrhují složité cesty nebo poškozené prostředí (opuštění nebo zrušení).
- Dialogy s několika kroky mohou být proto, že se nikdy nedokončily. Analýza míry dokončení/opuštění může pomoct při určování.
// 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
Ukázka výsledků dotazu s průměrnými kroky
ID dialogového okna | avg steps | min. kroky | maximální počet kroků | std | avg short by steps | avg short by percent |
---|---|---|---|---|---|---|
FindArticlesDialog | 6,2 | 2 | 7 | 2.04 | 0,8 | 11.4% |
Vytvořitticket | 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% |
onboarding | 2.7 | 2 | 4 | 0.94 | 1.3 | 32.5% |
__Interpretation: Například FindArticlesDialog má široké rozpětí mezi minimální/maximální a mělo by být prozkoumáno a pravděpodobně přepracováno a optimalizováno.
Aktivita kanálu podle metriky aktivit
Tento příklad měří množství aktivity, kterou robot v daném období přijímá na kanál. To provede počítáním některé z následujících metrik: příchozích zpráv, uživatelů, konverzací nebo dialogů. To může být užitečné pro analýzu stavu služby nebo měření oblíbenosti kanálů.
// 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
Tip
Možná budete chtít zvážit vyzkoušení těchto variant:
- Spusťte dotaz bez kontejneru časových razítek:
bin(timestamp, groupByInterval)
. - Můžete také použít
dcount
pro různé uživatele acount
pro všechny aktivity událostí uživatele. To také funguje pro opakované uživatele.
Ukázkové výsledky dotazu na kanál aktivity podle aktivity
Interpretace: Testování emulátoru bývalo nejoblíbenější, ale jakmile jsme šli živě, DirectLineSpeech, je nejoblíbenější kanál.
Total Intents by popularity
Tento příklad platí pro roboty s podporou služby LUIS. Zobrazuje souhrn všech záměrů podle popularity a odpovídající skóre jistoty detekce záměru.
Poznámka:
Služba Language Understanding (LUIS) bude vyřazena 1. října 2025. Od 1. dubna 2023 nebudete moct vytvářet nové prostředky LUIS. Novější verze language understanding je teď dostupná jako součást jazyka Azure AI.
Konverzační jazyk understanding (CLU), funkce jazyka Azure AI, je aktualizovaná verze služby LUIS. Další informace o podpoře porozumění jazyku v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.
- V praxi by se mělo zobrazení oddělit pro každou metriku.
- Oblíbené cesty záměru by měly být optimalizované pro uživatelské prostředí.
- Nízké průměrné skóre značí špatné rozpoznávání a možné chybějící skutečné záměry uživatele.
// 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")
Ukázkové záměry podle oblíbenosti výsledků dotazu
Interpretace: Například nejoblíbenější záměr, potvrzení je zjištěno pouze s 23% spolehlivostí v průměru.
Tip
Barcharty jsou jednou z více než desítek možností dostupných s dotazy Kusto. Mezi další možnosti patří: anomálie, plošný graf, sloupcový graf, spojnicový graf, bodový graf. Další informace najdete v tématu operátoru vykreslování.
Schéma instrumentace bot Analytics
Následující tabulky ukazují nejběžnější pole, do kterého robot bude protokolovat telemetrická data.
Obecná obálka
Běžná pole analýzy protokolů v instrumentaci Application Insights
Pole | Popis | Ukázkové hodnoty |
---|---|---|
name | Typ zprávy | 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 |
časové razítko | Čas události | 2019-09-05T18:32:45.287082Z |
instance_Id | ID konverzace | f7b2c416-a680-4b2c-b4cc-79c0f03d8711 |
operation_Id | Turn ID | 084b2856947e3844a5a18a8476d99aa |
user_Id | Jedinečné ID uživatele kanálu | emulator7c259c8e-2f47... |
client_IP | IP adresa klienta | 127.0.0.1 (může chybět kvůli blokování ochrany osobních údajů) |
client_City | Klientské město | Redmond (pokud je zjištěn, může chybět) |
Poznámka:
Azure AI QnA Maker bude vyřazený 31. března 2025. Od 1. října 2022 nebudete moci vytvářet nové zdroje ani znalostní báze QnA Maker. Novější verze funkce pro otázky a odpovědi je teď dostupná jako součást jazyka Azure AI.
Vlastní odpověď na otázky, funkce jazyka Azure AI, je aktualizovaná verze služby QnA Maker. Další informace o podpoře otázek a odpovědí v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.
Poznámka:
Služba Language Understanding (LUIS) bude vyřazena 1. října 2025. Od 1. dubna 2023 nebudete moct vytvářet nové prostředky LUIS. Novější verze language understanding je teď dostupná jako součást jazyka Azure AI.
Konverzační jazyk understanding (CLU), funkce jazyka Azure AI, je aktualizovaná verze služby LUIS. Další informace o podpoře porozumění jazyku v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.
Vlastní dimenze
Většina dat aktivit specifických pro robota se ukládá do vlastního poleDimensions .
Pole | Popis | Ukázkové hodnoty |
---|---|---|
activityId | ID zprávy | <id>: 8da6d750-d00b-11e9-80e0-c14234b3bc2a |
activityType | Typ zprávy | message, conversationUpdate, event, invoke |
channelId | Identifikátor kanálu | emulátor, directline, msteams, webchat |
fromId | Identifikátor Od | <id> |
fromName | Uživatelské jméno od klienta | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
locale | Národní prostředí původního klienta | en-us, zh-cn, en-GB, de-de, zh-CN |
recipientId | Identifikátor příjemce | <id> |
recipientName | Jméno příjemce | John Bonham, Keith Moon, Steve Smith, Steve Gadd |
text | Text ve zprávě | najít kavárnu |
Vlastní dimenze: LUIS
Poznámka:
Služba Language Understanding (LUIS) bude vyřazena 1. října 2025. Od 1. dubna 2023 nebudete moct vytvářet nové prostředky LUIS. Novější verze language understanding je teď dostupná jako součást jazyka Azure AI.
Konverzační jazyk understanding (CLU), funkce jazyka Azure AI, je aktualizovaná verze služby LUIS. Další informace o podpoře porozumění jazyku v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.
Instrumentace LUIS ukládá data do následujících polí vlastních dimenzí.
Pole | Popis | Ukázkové hodnoty |
---|---|---|
Záměr | Zjištěný záměr služby LUIS | pointOfInterestSkill |
intentScore | Skóre rozpoznávání služby LUIS | 0.98 |
Entity | Zjištěné entity služby LUIS | FoodOfGrocery = [["káva"]], KEYWORD= ["kavárna"] |
Otázka | Zjištěná otázka služby LUIS | najít kavárnu |
sentimentLabel | Služba LUIS zjistila mínění | pozitivní |
Vlastní dimenze: QnAMaker
Poznámka:
Azure AI QnA Maker bude vyřazený 31. března 2025. Od 1. října 2022 nebudete moci vytvářet nové zdroje ani znalostní báze QnA Maker. Novější verze funkce pro otázky a odpovědi je teď dostupná jako součást jazyka Azure AI.
Vlastní odpověď na otázky, funkce jazyka Azure AI, je aktualizovaná verze služby QnA Maker. Další informace o podpoře otázek a odpovědí v sadě SDK služby Bot Framework najdete v tématu Principy přirozeného jazyka.
Instrumentace QnAMaker ukládá data do následujících polí vlastních dimenzí.
Tip
Pokud chcete povolit protokolování osobních údajů, jako jsou otázky a odpovědi, měl by být parametr osobních údajů protokolu nastavený na hodnotu true v konstruktoru třídy QnA Maker .
Pole | Popis | Ukázkové hodnoty |
---|---|---|
question | Zjištěná otázka služby QnA | co můžete dělat? |
answer | Odpověď QnA | Máte otázky, možná mám odpovědi. |
Článek Nalezeno | QnA | true |
questionId | ID otázky QnA | 488 |
knowledgeBaseId | ID znalostní báze QnA | 2a4936f3-b2c8-44ff-b21f-67bc413b9727 |
MatchedQuestion | Pole odpovídajících otázek | ["Můžete mi vysvětlit, co je vaše role?","Můžeš mi něco říct o sobě?","Můžeš mi říct o tobě?", "mohl bys mi pomoct","hmmm, abys mohl dělat?","jak mi můžeš pomoct?","Jak mi pomůžeš?","Jak mi můžete pomoct?","jak můžu v mých projektech používat?", "Promluvte si se mnou o své schopnosti","Co jste schopni?", ...] |
Viz také
- Kurz zápisu dotazů na protokoly najdete v tématu Začínáme s dotazy na protokoly ve službě Azure Monitor.
- Vizualizace dat z Azure Monitoru
- Zjistěte, jak do robota přidat telemetrii.
- Další informace o dotazech protokolu služby Azure Monitor
- Kompletní výpis událostí Application Insights služby Bot Framework
- Vytváření a sdílení řídicích panelů s daty Log Analytics