Botframework-solutions: Power Bi ๋ณด๊ณ ์„œ์— ๋Œ€ํ™” ์ปจํ…์ŠคํŠธ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2020๋…„ 08์›” 10์ผ  ยท  22์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: microsoft/botframework-solutions

์–ด๋–ค ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›๋‚˜์š”?

๊ฐ€์ƒ ๋„์šฐ๋ฏธ ๋ฐ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ Power Bi ๋ณด๊ณ ์„œ

์ด๊ฒƒ์€ ์–ด๋–ค ์–ธ์–ด๋กœ ๋˜์–ด ์žˆ์Šต๋‹ˆ๊นŒ?

ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ

๋ฌด์Šจ ์ผ์ด์•ผ?

Power Bi ๋Œ€์‹œ๋ณด๋“œ์— ํ‘œ์‹œํ•  ๋Œ€ํ™” ์ปจํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. PII๋ฅผ ๊ธฐ๋กํ•˜๋„๋ก ์›๊ฒฉ ๋ถ„์„ ๋กœ๊ฑฐ๋ฅผ ์—…๋ฐ์ดํŠธํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋ณด๊ณ ์„œ์— ๋Œ€ํ™” ์ปจํ…์ŠคํŠธ๊ฐ€ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ํƒญ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฑ„์›Œ์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋Œ€ํ™” ์ƒ์ž ํƒญ์—์„œ ์ถœ๋ ฅ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋‹จ๊ณ„๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๊ฐ€์ƒ ๋„์šฐ๋ฏธ ๋งŒ๋“ค๊ธฐ,
์›๊ฒฉ ์ธก์ • ๋กœ๊ฑฐ์— ๋ถ€์šธ ๊ฐ’ "true"๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
const telemetryLoggerMiddleware = ์ƒˆ๋กœ์šด TelemetryLoggerMiddleware(telemetryClient, true);
const telemetryInitializerMiddleware = ์ƒˆ๋กœ์šด TelemetryInitializerMiddleware(telemetryLoggerMiddleware, true);
Power Bi ๋ณด๊ณ ์„œ์—์„œ "๋ชจ๋“  ๋Œ€ํ™” ์ƒ์ž ๊ฐœ์š”" ๋ฐ "๋Œ€ํ™” ์ƒ์ž ๊ฐœ์š”" ํƒญ์„ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚  ๊ฒƒ์ด๋ผ๊ณ  ์˜ˆ์ƒํ–ˆ์Šต๋‹ˆ๊นŒ?

๋ณด๊ณ ์„œ์— ์ฑ„์›Œ์งˆ ๋Œ€ํ™” ์ƒ์ž ์ •๋ณด

๋กœ๊ทธ, ์˜ค๋ฅ˜ ์ถœ๋ ฅ ๋“ฑ์„ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ค๋ฅ˜๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์Šคํฌ๋ฆฐ์ƒท์ด๋‚˜ ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

image

Bot Services Kobuk bug customer-replied-to customer-reported in-progress stale

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@VictorGrycuk ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ–ˆ์œผ๋ฉฐ ์ด์ œ ๋ชจ๋“  ๊ธฐ์ˆ  ๋Œ€ํ™” ์ƒ์ž๊ฐ€ Power Bi ๋ณด๊ณ ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์Šคํ‚ฌ์—์„œ ์•ฑ ์ธ์‚ฌ์ดํŠธ ํ‚ค๋ฅผ VA์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •ํ•œ ํ›„ ์Šคํ‚ฌ๊ณผ VA์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๋Œ€ํ™” ์ƒ์ž๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค.

๋ชจ๋“  22 ๋Œ“๊ธ€

@tomSauret847์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์—ฐ๋ฝ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

@tomSauret847๋‹˜ , ์•ˆ๋…•ํ•˜์„ธ์š”. ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ด ๋ฌธ์ œ๋ฅผ ์กฐ์‚ฌํ•˜๊ณ  ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ ๊ทน์ ์œผ๋กœ ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋‹จ ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด ๊ฑฐ๊ธฐ์—์„œ ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋‹ค๋ ค ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•˜๊ณ  ์ง€์—ฐ์— ๋Œ€ํ•ด ์‚ฌ๊ณผ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š” @tomSauret847 - ๋ฌธ์ œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์žฌํ˜„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ TypeScript Skill ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ C# Virtual Assistant/Skill์—์„œ๋„ ์ด ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ œ๋Œ€๋กœ ์ž‘๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— TypeScript Virtual Assistant ์—๋งŒ ๊ด€๋ จ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•œ ์žฌํ˜„ ๋‹จ๊ณ„๋ฅผ ํ™•์ธ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์žฌํ˜„ ๋‹จ๊ณ„

  1. Power BI Desktop ์„ค์น˜
  2. Virtual Assistant ๋ถ„์„ Power BI ํ…œํ”Œ๋ฆฟ ๋‹ค์šด๋กœ๋“œ
  3. TypeScript ๊ฐ€์ƒ ๋„์šฐ๋ฏธ ๋ฐฐํฌ
  4. ์ด๋ฏธ์ง€์— ํ‘œ์‹œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋‹ค์Œ ๋‘ ์ƒ์„ฑ์ž๋ฅผ true๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ index ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
    image

  5. Power BI ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Virtual Assistant ๋ถ„์„ ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ ์—ด๊ธฐ

  6. Application Insights ๋ฆฌ์†Œ์Šค์—์„œ Application Insights ID๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  7. Power BI ๊ตฌ์„ฑ์—์„œ ์ด์ „ ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€
  8. ๋ด‡ ์‹œ์ž‘
  9. Power BI๊ฐ€ ๋ฉ”ํŠธ๋ฆญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜์‹ ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  10. ๋ชจ๋“  ๋Œ€ํ™” ์ƒ์ž ๊ฐœ์š” ํŽ˜์ด์ง€์— ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ •๋ณด๋„ ์ˆ˜์‹ ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Virtual Assistant Insights ๋ฉ”ํŠธ๋ฆญ์„ ๊ตฌ์„ฑํ•˜๊ณ  ์–ป๊ธฐ ์œ„ํ•ด Power BI ์„ค๋ช…์„œ๋ฅผ ๊ฐ€์ด๋“œ๋กœ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ๋˜๋Š” ๋Œ€๋กœ ๋ฐ”๋กœ ์—ฐ๋ฝ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š.

_TypeScript Virtual Assistant๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์žฌํ˜„๋œ ๋ฌธ์ œ_
image

์กฐ์‚ฌํ•ด ์ฃผ์‹  @Batta32๋‹˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์œ„์— ๋‚˜์—ด๋œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ GA๊ฐ€ Power BI ๋ณด๊ณ ์„œ์˜ ๋Œ€ํ™” ์ปจํ…์ŠคํŠธ๋ฅผ ์ฑ„์šฐ๋Š” GA ์ด์ „์— ๋นŒ๋“œํ•œ ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์œผ๋กœ ๊ฒŒ์‹œ๋œ NPM ํŒจํ‚ค์ง€๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ํ›„ ์‹œ์ž‘๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @tomSauret847 - PR #3584, ํŠนํžˆ ์ด ์ปค๋ฐ‹์— ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•˜๋Š” TypeScript Virtual Assistant 1.0 ๋ฆด๋ฆฌ์Šค์˜ ๋ฌธ์ œ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜์ • ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์˜ ํƒ€์ดํ”„ ๊ฐ€์ƒ ์–ด์‹œ์Šคํ„ดํŠธ ์ž‘์—…์„ ์–ป์„ ์ˆ˜์žˆ๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ,์ด ํŒŒ์ผ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝํ•˜์‹ญ์‹œ์˜ค

  1. telemetryClient ๊ฐœ์ฒด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋Œ€ํ™” ์ƒ์ž์˜ constructor ์—…๋ฐ์ดํŠธ

    //Add the BotTelemetryClient dependency from botbuilder
    import {
        ...
        BotTelemetryClient } from 'botbuilder';
    
    // At the constructor parameter list, add telemetryClient as the final parameter
    public constructor(
        ...,
        telemetryClient: BotTelemetryClient
    ) {
        // Inside the constructor assign the incoming telemetryClient to the local property
        this.telemetryClient = telemetryClient;
        });
    }
    
  2. ๋ณด๋‚ด๊ธฐ telemetryClient ์˜ ๋Œ€ํ™” ์ดˆ๊ธฐํ™”์—์„œ ๊ฐœ์ฒด๋ฅผ index.ts

    // Add the telemetryClient as the final parameter in the OnboardingDialog constructor
    const onboardingDialog: OnboardingDialog = new OnboardingDialog(..., telemetryClient);
    
    // Add the telemetryClient as the final parameter in the MainDialog constructor
    const mainDialog: MainDialog = new MainDialog(
         ...
         telemetryClient
    );
    
  3. ์ด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„ ์— ๋”ฐ๋ผ Power BI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Virtual Assistant์—์„œ ๋ฉ”ํŠธ๋ฆญ์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. Power BI๊ฐ€ ๋ฉ”ํŠธ๋ฆญ์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ˆ˜์‹ ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  5. ๋ชจ๋“  ๋Œ€ํ™” ์ƒ์ž ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ๋ด‡ ์ •๋ณด๋ฅผ ์ˆ˜์‹ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

์งˆ๋ฌธ์ด๋‚˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์žˆ์œผ๋ฉด ์ฃผ์ €ํ•˜์ง€ ๋ง๊ณ  ๋ฌธ์˜ํ•˜์‹ญ์‹œ์˜ค.

_๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์‚ฌ์šฉํ•œ ๊ฐ€์ƒ ์–ด์‹œ์Šคํ„ดํŠธ ์ธก์ •ํ•ญ๋ชฉ_
image

@Batta32 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์œผ๋ฉฐ ์ด์ œ Power Bi ๋ณด๊ณ ์„œ์— ๋Œ€ํ™” ์ปจํ…์ŠคํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

@ Batta32 ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ณด๊ณ ์— ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ํ‘œ์‹œ๋˜์ง€๋งŒ ๋ชจ๋“  ๊ธฐ์ˆ ์€ ๊ธฐ์ˆ ์ด ์•„๋‹ˆ๋ผ "์Šคํ‚ฌ ๋Œ€ํ™” ์ „ํ™˜" ์•„๋ž˜์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋ชจ๋“  ๊ธฐ์ˆ ์—์„œ ์›๊ฒฉ ์ธก์ •์„ ํ™œ์„ฑํ™”ํ–ˆ์œผ๋ฉฐ ์ด๋ฅผ VA์™€ ๋™์ผํ•œ ์ƒ์„ฑ์ž์— ์ „๋‹ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ‚ฌ ๋Œ€ํ™” ์ƒ์„ฑ์ž์—์„œ ์„ค์ •์ด ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๊นŒ?

@tomSauret847 ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์šฐ๋ฆฌ๋Š” ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฒ€ํ† ํ•  ๊ฒƒ์ด๋ฉฐ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋Œ€๋กœ ๋‹ค์‹œ ์—ฐ๋ฝ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š!

@Batta32 ์—๊ฒŒ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. QNA ์ œ์ž‘์ž์—๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” QNAMakerDialog์— ์›๊ฒฉ ์ธก์ • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ „๋‹ฌ๋˜์ง€ ์•Š์€ ๊ฒƒ๋„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด QNA ์ œ์ž‘์ž๋„ ๋ณด๊ณ ์„œ์— ์ฑ„์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

QnAMakerDialog ๋ฌธ์ œ์— ๋Œ€ํ•ด ์•Œ๋ ค์ฃผ์…”์„œ @tomSauret847์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ฐœ๊ฒฌ ์ˆ˜์ •์€ ์ˆ˜์ •ํ•˜๋Š” tryCreateQnADialog์˜ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•˜๊ณ  SET telemetryClient (ํ™”์ƒ ์„  # 201 # 214 ์ฐธ์กฐ) QnAMaker ๋Œ€ํ™”์˜ ์†์„ฑ.

๋•Œ๋ฌธ์ด๋‹ค QnAMakerDialog์ด ์œผ๋กœ๋ถ€ํ„ฐ ์—ฐ์žฅ W aterfallDialog ํšŒ์ „์— dialogthat๊ฐ€ ๊ฐ€์ง€๊ณ ๋กœ๋ถ€ํ„ฐ ์—ฐ์žฅ, ์›๊ฒฉ ํด๋ผ์ด์–ธํŠธ ์†์„ฑ NullTelemetryClient ๊ทธ๋Ÿฌ๋‚˜ ์„ธํŠธ.

TypeScript Virtual Assistant 1.0 ๋ถ„๊ธฐ์—์„œ ์ด ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ์›๊ฒฉ ์ธก์ • ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌํ•  ํ•„์š” ์—†์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ master์˜ C# ๋ด‡์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

QnAMakerDialog ๋Œ€ํ•œ ์›๊ฒฉ ์ธก์ • ๋“ฑ๋ก์ด ์ˆ˜์ •๋˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

SwitchSkillDialog ์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋ฅผ ๊ณ„์† ๊ฒ€ํ† ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

image

์ด ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์‹  @VictorGrycuk ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ์„ ํ–ˆ๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณด๊ณ ์— QNA ๋ฉ”์ด์ปค ๋Œ€ํ™” ์ƒ์ž๊ฐ€ ์ฑ„์›Œ์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ QNA ์„ฑ๋Šฅ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ฑ„์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋Œ€ํ™” ์ƒ์ž์— ํ‘œ์‹œ๋œ ๋Œ€๋กœ QNA ์ œ์ž‘์ž๋ฅผ ๊ณต๊ฒฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๋ณด๊ณ ์— ์„ฑ๋Šฅ์ด ์ฑ„์›Œ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
image

image

@tomSauret847 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ์—ฐ๋ฝ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š” @ tomSauret847, ์šฐ๋ฆฌ๋Š” ๋‹น์‹ ์ด SwitchSkillDialog์— ๋Œ€ํ•ด ์–ธ๊ธ‰ ํ•œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ณ ์ด ๋™์ž‘์€ ๋™์ผ C #์—์„œ ๊ฐ™์€ ๋””์ž์ธ์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์ •.

๋Œ€์•ˆ ์€ Skills์˜ appsettings.json์—์„œ Virtual Assistant Application Insights์— ๋Œ€ํ•œ ๊ณ„์ธก ํ‚ค๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ์›๊ฒฉ ์ธก์ • ์„
  2. Virtual Assistant๋ฅผ ๋ฐฐํฌํ•œ ํ›„ appsettings ํŒŒ์ผ์—์„œ instrumentationKey ๊ฐ’์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  3. ์Šคํ‚ฌ์„ ๋ฐฐํฌํ•œ ํ›„ ์Šคํ‚ฌ์„ ๊ต์ฒดํ•˜๊ณ  instrumentationKey ๊ฐ’์„ 2๋‹จ๊ณ„์—์„œ ๋ณต์‚ฌํ•œ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  4. ๊ฐ€์ƒ ๋„์šฐ๋ฏธ๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ๊ธฐ์ˆ ์„ ํ˜ธ์ถœ
  5. ๊ธฐ์ˆ  ๋Œ€ํ™” ์ƒ์ž์— ๋Œ€ํ•œ ํ˜ธ์ถœ์ด Power BI์— ๋“ฑ๋ก๋˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : MainDialog ์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋ด‡์—์„œ ์ด๋ฆ„์ด ๊ฐ™์€ ๋Œ€ํ™” ์ƒ์ž๋Š” ํ•จ๊ป˜ ๊ทธ๋ฃนํ™”๋ฉ๋‹ˆ๋‹ค .

๊ณ ๊ฐ๋‹˜์˜ ๋‹ต๋ณ€์— ๊ท€๋ฅผ ๊ธฐ์šธ์ด๊ณ  QnA Performance ๐Ÿ˜Š ๋ฌธ์ œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

image

์ž์„ธํ•œ ๋‚ด์šฉ์€

๋ฐฐํฌ ์‹œ์ ์— ๊ฐ ๋ด‡์€ ๊ณ ์œ ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ†ต์ฐฐ๋ ฅ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๊ฐ ๋ด‡์˜ ์›๊ฒฉ ๋ถ„์„์€ ์„œ๋กœ ๊ฒฉ๋ฆฌ๋˜๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋™์ผํ•œ Power BI ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋ชจ๋“  ๋ด‡์˜ ์›๊ฒฉ ๋ถ„์„์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •์—์„œ ๋™์ผํ•œ ๊ณ„์ธก ํ‚ค.

SwitchSkillDialog ๊ฐ€ Power BI ๋Œ€์‹œ๋ณด๋“œ์— ๋“ฑ๋ก๋œ ์ด์œ ๋ฅผ ์กฐ์‚ฌํ•œ ๊ฒฐ๊ณผ ๋Œ€ํ™” ์ƒ์ž์˜ id ์†์„ฑ์„ ๋“ฑ๋กํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค.

์ด๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์ „ํ™˜ํ•˜๋Š” ์ˆœ๊ฐ„ SwitchSkillDialog ์˜ id ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ–ˆ์œผ๋ฉฐ, ์ „ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ ์— ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ๊ณ ์œ ํ•œ ์ด๋ฆ„์ด id ์ธ ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

image

@VictorGrycuk ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ ์šฉํ–ˆ์œผ๋ฉฐ ์ด์ œ ๋ชจ๋“  ๊ธฐ์ˆ  ๋Œ€ํ™” ์ƒ์ž๊ฐ€ Power Bi ๋ณด๊ณ ์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์Šคํ‚ฌ์—์„œ ์•ฑ ์ธ์‚ฌ์ดํŠธ ํ‚ค๋ฅผ VA์™€ ๋™์ผํ•˜๊ฒŒ ์„ค์ •ํ•œ ํ›„ ์Šคํ‚ฌ๊ณผ VA์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“  ๋Œ€ํ™” ์ƒ์ž๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค.

ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. @tomSauret847 , ์ž˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด์ œ QnA ์„ฑ๋Šฅ์ด ์ฑ„์›Œ์ง€์ง€ ์•Š๋Š” ์ด์œ ์— ์ดˆ์ ์„ ๋งž์ถœ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ๋Š” ์ฆ‰์‹œ ์•Œ๋ ค ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

@tomSauret847 ๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”,

์šฐ๋ฆฌ๋Š” ๋งˆ์Šคํ„ฐ ๋ธŒ๋žœ์น˜์™€ 1.0 ๋ฆด๋ฆฌ์Šค ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ด์‹œ์Šคํ„ดํŠธ๋กœ ์ด๊ฒƒ์„ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ํ™˜๊ฒฝ:

  • index.ts์—์„œ ์›๊ฒฉ ์ธก์ • ๋ผ์ธ์ด ํ™œ์„ฑํ™”๋œ TS ๊ฐ€์ƒ ๋„์šฐ๋ฏธ. Azure์— ๋ฐฐํฌ๋จ
  • ์–ด์‹œ์Šคํ„ดํŠธ์— ์—ฐ๊ฒฐ๋œ App Insights
  • Virtual Assistant ๋ถ„์„ ํ…œํ”Œ๋ฆฟ์ด ํฌํ•จ๋œ Power BI

์‚ฌ์šฉ๋œ ๋‹จ๊ณ„:

  1. QnA๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๋ฐœํ™”(์˜ˆ: "๊ฐ€์ƒ ๋น„์„œ๋ž€ ๋ฌด์—‡์ธ๊ฐ€")๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ ๋น„์„œ์™€ ๋Œ€ํ™”
  2. ์—ฐ๊ฒฐ๋œ App Insights์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Power BI์—์„œ Virtual Assistant ๋ถ„์„ ํ…œํ”Œ๋ฆฟ์„ ์—ฝ๋‹ˆ๋‹ค.
  3. QnA์— ์„ฑ๋Šฅ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธ

๋งˆ์Šคํ„ฐ์™€ 1.0 ๋ชจ๋‘์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

image

@tomSauret847๋‹˜ , QnA Maker ๋Œ€ํ™” ์ƒ์ž๊ฐ€ Power BI์—์„œ ์„ฑ๋Šฅ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ถˆํ–‰ํžˆ๋„ BotBuilder SDK ์˜

QnA ์„ฑ๋Šฅ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ๋ฌด์—‡๋ณด๋‹ค๋„ ์ด ๋ฌธ์ œ #3447์˜

๊ทธ๋Ÿฌ๋‚˜ ์ฐธ์กฐ๋œ ํ”Œ๋ž˜๊ทธ _logPersonalInformation_์€ BotBuilder-Dotnet์˜ ๋™์ผํ•œ ํด๋ž˜์Šค ์™€ ๋‹ฌ๋ฆฌ BotBuilder-JS์˜ QnAMakerDialog ํด๋ž˜์Šค ์— ์—†์Šต๋‹ˆ๋‹ค.
๊ฒŒ๋‹ค๊ฐ€ getQnAClient ๋ฉ”์†Œ๋“œ์—์„œ QnAMaker ๊ฐ์ฒด ์ƒ์„ฑ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐœ์ธ ์ •๋ณด ๋กœ๊น…์„ ์œ„ํ•œ ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ์ƒ๋žตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
image
image

๋กœ์ปฌ ๋ด‡์—์„œ node_modules์˜ QnAMakerDialog ํด๋ž˜์Šค๋ฅผ ์ˆ˜๋™์œผ๋กœ ์ˆ˜์ •ํ•˜๊ณ  logPersonalInformation ํ”Œ๋ž˜๊ทธ๋ฅผ true๋กœ ๊ฐ•์ œ ์ถ”๊ฐ€ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์ž‘์—…์„ ํ…Œ์ŠคํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.

public logPersonalInformation: BoolExpression = new BoolExpression(true);

๊ทธ๋Ÿฐ ๋‹ค์Œ getQnAClient ๋ฉ”์„œ๋“œ์—์„œ ํ”Œ๋ž˜๊ทธ๋ฅผ QnAMaker๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

    /**
     * Creates and returns an instance of the QnAMaker class used to query the knowledgebase.
    **/
    private getQnAClient(): QnAMaker {
        const endpoint = {
            knowledgeBaseId: this.knowledgeBaseId,
            endpointKey: this.endpointKey,
            host: this.getHost()
        };
        const options = this.getQnAMakerOptions();
        return new QnAMaker(endpoint, options, this.telemetryClient, this.logPersonalInformation.value);
    }

๊ทธ๋ฆฌ๊ณ  Power BI์—์„œ QnA ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
image

@matiasroldan6 ์ด ๋ฌธ์ œ ๋ฅผ

์ด ๋ฌธ์ œ๋Š” 30์ผ ๋™์•ˆ ํ™œ๋™์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜๋œ ๋ ˆ์ด๋ธ”์ด๋‚˜ ๋Œ“๊ธ€์„ ์ œ๊ฑฐํ•˜์ง€ ์•Š์œผ๋ฉด 5์ผ ํ›„์— ๋‹ซํž™๋‹ˆ๋‹ค.

@matiasroldan6 Botbuilder-js ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๊ธฐ๋ฅผ ์—ฌ์ „ํžˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ @tomSauret847 , ์ด ๋งˆ์ง€๋ง‰ ๋ฌธ์ œ๋Š” microsoft/botbuilder-js#2779์—์„œ ์ œ๊ธฐํ•œ SDK์˜ ๋ถˆ์ผ์น˜์˜€์Šต๋‹ˆ๋‹ค. SDK ํŒ€์€ ๋ถˆ์ผ์น˜๋ฅผ ํ™•์ธํ–ˆ์œผ๋ฉฐ ํ˜„์žฌ ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์˜ํ•˜์‹œ๋ฉด ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ SDK ํŒ€์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ฆ‰์‹œ ์—ฌ๊ธฐ๋กœ ๋‹ค์‹œ ์—ฐ๋ฝ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š.

@Batta32 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ์ข…๋ฃŒํ•˜๊ณ  ์ œ๊ณตํ•œ ๋ฌธ์ œ๋ฅผ ์ง€์ผœ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰