μ¬κΈ°μμ Virtual Assistant λΆμ ν νλ¦Ώμ VAμ μ°κ²°νλ μμ΅μλ₯Ό λ°λμ§λ§ λ€μ νμμ μ€λ₯κ° νμλμμ΅λλ€.
μ΄ λ¬Έμ λλ μ μ΄λ νλμ λ§€μ° μ μ¬ν λ¬Έμ κ° λ°μν κ² κ°μ΅λλ€. PowerBIλ₯Ό μ΄λ©΄ Transcript ν/λ³΄κ³ μμ λ€μ μ€λ₯κ° νμλ©λλ€.
λ°©κΈ μ¬κΈ°μμ μ΅μ pbitλ₯Ό λ€μ΄λ‘λνλλ° λ¬Έμ κ° μμ΅λλ€. https://microsoft.github.io/botframework-solutions/assets/analytics/virtual-assistant-analytics-sample.pbit
μνΈ μμ©μ λν power bi 쿼리μ μΈκΈλ μ ν λ¬Έμ :
group by -μ μΌλΆ μ΄μ λν μ ν κ°μ ν μ€νΈλ‘ λ³κ²½ν΄μΌ ν©λλ€.
μνΈ μμ©μ μν΄ 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μ μ΄ μ€μ λ³κ²½νμμμ€.
``` C#
services.AddSingleton
to this
``` C#
services.AddSingleton<TelemetryLoggerMiddleware>(s=>new TelemetryLoggerMiddleware(s.GetService<IBotTelemetryClient>(), true));
κ°μ₯ μ μ©ν λκΈ
λμμ΄ λμ§λ§ λͺ¨λ λ°μ΄ν°κ° κΈ°λ³Έ VA ν νλ¦Ώμμ μμ±λλ κ²μ μλλλ€. λν λ΄μ© λ° λν λ릴λ€μ΄μ λν λν λ©μμ§μ λ΄μ©μ κΈ°λ³Έμ μΌλ‘ λΉνμ±νλμ΄ μμ΅λλ€. μνλ κ²½μ° μ격 λΆμ λ―Έλμ¨μ΄μμ logPersonalInformation=trueλ₯Ό μ€μ ν΄μΌ ν©λλ€.
μ΄λ₯Ό νμ±ννλ €λ©΄ λ€μμμ Startup.csμ μ΄ μ€μ λ³κ²½νμμμ€.();
``` C#
services.AddSingleton