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 jsou Power Virtual Agents 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 queryStartDatea queryEndDateinterval 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í

Sample chart of number of users per period.

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 querystartdatea queryEndDateinterval 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:

// 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í

Sample chart of activity per period.

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é razítko 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 vytvoříte robota pomocí nástrojů, jako jsou Power Virtual Agents 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 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)

Ukázkové výsledky dotazu dokončení dialogového okna

Sample chart of dialogs started and dialogs completed.

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

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 firstnulls first order.

Ukázkové výsledky dotazu při dokončování dialogového okna

Sample summary chart for incomplete dialogs.

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

1Dokončeno

2Opuš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í

Sample chart of dialog duration.

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 a count 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

Sample chart of channel usage.

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

Sample chart of intent popularity.

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 Přehledy aplikací

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é