Π― ΡΠ»Π΅Π΄ΠΈΠ» Π·Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π»ΠΎΡΡ ΠΊ ΡΠ°Π±Π»ΠΎΠ½Ρ Π°Π½Π°Π»ΠΈΡΠΈΠΊΠΈ Virtual Assistant Π΄Π»Ρ VA, Π½ΠΎ ΠΎΠ½ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅:
ΠΠ°ΠΆΠ΅ΡΡΡ, Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΈΠ»ΠΈ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ΠΉ. ΠΠΎΠ³Π΄Π° Ρ ΠΎΡΠΊΡΡΠ²Π°Ρ PowerBI, Ρ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π½Π° Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ / Π² ΠΎΡΡΠ΅ΡΠ΅ Β«Π’ΡΠ°Π½ΡΠΊΡΠΈΠΏΡΒ».
Π― ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π·Π°Π³ΡΡΠ·ΠΈΠ» ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ pbit ΠΎΡΡΡΠ΄Π°, ΠΈ Ρ Π½Π΅Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°: https://microsoft.github.io/botframework-solutions/assets/analytics/virtual-assistant-analytics-sample.pbit
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠΈΠΏΠΎΠΌ, ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ Π² Π·Π°ΠΏΡΠΎΡΠ΅ power bi Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠ»Π±ΡΠΎΠ² Π² Π³ΡΡΠΏΠΏΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ - Π½Π° ΡΠ΅ΠΊΡΡ.
ΠΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π·Π°ΠΏΡΠΎΡ Π² ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠΌ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ΅ Power BI Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π» Π½ΠΈΠΆΠ΅:
let
Source = #"EventTelemetry",
#"Added UserUtterance Column" = Table.AddColumn(Source, "UserUtterance", each if [EventName] = "BotMessageReceived" then [Text] else null),
#"Added UserOriginalUtterance Column" = Table.AddColumn(#"Added UserUtterance Column", "UserOrigUtterance", each if [EventName] = "BotMessageReceived" then [Text] else null),
#"Added BotMessageSpeakColumn" = Table.AddColumn(#"Added UserOriginalUtterance Column", "BotResponseSpeak", each if [EventName] = "BotMessageSend" then [Speak] else null),
#"Added OperationID Column" = Table.AddColumn(#"Added BotMessageSpeakColumn", "OperationID", each if [EventName] = "BotMessageSend" then [ReplyActivityId] else [ActivityId]),
#"Added BotMessageText Column" = Table.AddColumn(#"Added OperationID Column", "BotResponseText", each if [EventName] = "BotMessageSend" then [Text] else null),
#"Grouped Rows" = Table.Group(#"Added BotMessageText Column", {"OperationID", "ConversationId"}, {{"UserUtterance", each List.Max([UserUtterance]), type text}, {"UserOrigUtterance", each List.Max([UserOrigUtterance]), type text}, {"Time", each List.Min([Time]), type datetimezone}, {"Locale", each List.Max([Locale]), type text}, {"DialogId", each List.Max([DialogId]), type text}, {"DialogStatus", each List.Max([DialogStatus]), type text}, {"DialogStepName", each List.Max([DialogStepName]), type text}, {"DialogInstanceId", each List.Max([DialogInstanceId]), type text}, {"BotResponseSpeak", each List.Max([BotResponseSpeak]), type text}, {"BotResponseText", each List.Max([BotResponseText]), type text}, {"LuisIntent", each List.Max([Luis_Intent]), type text}, {"LuisScore", each List.Max([Luis_IntentScore]), type text}, {"LuisSentimentLabel", each List.Max([Luis_SentimentLabel]), type text}, {"LuisSentimentScore", each List.Max([Luis_SentimentScore]), type text}}),
#"Changed Type" = Table.TransformColumnTypes(#"Grouped Rows",{{"LuisSentimentScore", type number}})
in
#"Changed Type"
ΠΠ°ΠΉΡΠ΅ ΠΌΠ½Π΅ Π·Π½Π°ΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ ΠΊΠΎΠΌΡ-ΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ :)
ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, Π½ΠΎ Π½Π΅ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ VA ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±Π΅ΡΠ΅Π΄Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΎΠΊ ΡΡΠ΅Π½ΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π±Π΅ΡΠ΅Π΄ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΎ. ΠΡΠ»ΠΈ Π²Ρ ΡΡΠΎΠ³ΠΎ Ρ ΠΎΡΠΈΡΠ΅, Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ logPersonalInformation = true Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΠΈ.
Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΡ ΡΡΡΠΎΠΊΡ Π² Startup.cs Ρ ΡΡΠΎΠ³ΠΎ
`` Π‘ #
services.AddSingleton
to this
``` C#
services.AddSingleton<TelemetryLoggerMiddleware>(s=>new TelemetryLoggerMiddleware(s.GetService<IBotTelemetryClient>(), true));
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, Π½ΠΎ Π½Π΅ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ VA ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π±Π΅ΡΠ΅Π΄Ρ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΎΠΊ ΡΡΠ΅Π½ΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ Π±Π΅ΡΠ΅Π΄ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΎ. ΠΡΠ»ΠΈ Π²Ρ ΡΡΠΎΠ³ΠΎ Ρ ΠΎΡΠΈΡΠ΅, Π²Π°ΠΌ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ logPersonalInformation = true Π² ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠΈ ΡΠ΅Π»Π΅ΠΌΠ΅ΡΡΠΈΠΈ.
Π§ΡΠΎΠ±Ρ Π²ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΎ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΡΡΡ ΡΡΡΠΎΠΊΡ Π² Startup.cs Ρ ΡΡΠΎΠ³ΠΎ();
`` Π‘ #
services.AddSingleton