Botframework-solutions: QnAMakerDialog๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์— ๋Œ€ํ•ด ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

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

๊ฐ€์ƒ ๋น„์„œ ๋ฐ ๊ธฐ์ˆ 

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

ํƒ€์ดํ”„์Šคํฌ๋ฆฝํŠธ

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

QnAMakerDialog ๊ฐ€ ํŠน์ • ์–ธ์–ด(์˜ˆ: DE)๋กœ ์ƒ์„ฑ๋˜๋ฉด ์–ธ์–ด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋‹ค๋ฅธ ์–ธ์–ด(์˜ˆ: EN)๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ํ•ญ์ƒ ํ•ด๋‹น ์–ธ์–ด๋ฅผ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

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

์‚ฌ์šฉ์ž 1 : ๋ฐœํ™”๋ฅผ ๋ด‡( DE )์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.
Bot : Bot์€ ๋ฐœํ™”๋ฅผ QnA ์˜๋„๋กœ ํ•ด์„ํ•˜๊ณ  knowledgebaseId๋ฅผ Dialog์˜ Id๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ QnADialog๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

`` private registerQnADialog(knowledgebaseId: string, cognitiveModels: ICognitiveModelSet, locale: string): void { const qnaEndpoint: QnAMakerEndpoint | undefined = cognitiveModels.qnaConfiguration.get(knowledgebaseId); if (qnaEndpoint == undefined){ throw new Error( ID๊ฐ€ ${ knowledgebaseId }์ธ QnA Maker ์ง€์‹ ๊ธฐ๋ฐ˜ ๊ตฌ์„ฑ์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.`);
}

    if (this.dialogs.find(knowledgebaseId) == undefined) {
        const qnaDialog: QnAMakerDialog = new QnAMakerDialog(
            qnaEndpoint.knowledgeBaseId,
            qnaEndpoint.endpointKey,
            // The following line is a workaround until the method getQnAClient of QnAMakerDialog is fixed
            // as per issue https://github.com/microsoft/botbuilder-js/issues/1885
            new URL(qnaEndpoint.host).hostname.split('.')[0],
            this.templateEngine.generateActivityForLocale('UnsupportedMessage', locale) as Activity,
            // Before, instead of 'undefined' a '0.3' value was used in the following line
            undefined,
            this.templateEngine.generateActivityForLocale('QnaMakerAdaptiveLearningCardTitle', locale).text,
            this.templateEngine.generateActivityForLocale('QnaMakerNoMatchText', locale).text
        );

        qnaDialog.id = knowledgebaseId;

        this.addDialog(qnaDialog);
    }
}

```

๋ด‡ : ์‚ฌ์šฉ์ž 1์˜ ๋กœ์ผ€์ผ(DE)๋กœ ์‚ฌ์šฉ์ž 1์—๊ฒŒ QnA ๋‹ต๋ณ€์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž 2 : ๋ฐœํ™”๋ฅผ ๋ด‡( EN )์— ๋ณด๋ƒ…๋‹ˆ๋‹ค.
Bot : Bot์€ QnA ์˜๋„๋กœ ๋ฐœํ™”๋ฅผ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž 1์ด ๋ณด๋‚ธ ๊ฒƒ๊ณผ ๋™์ผ). ๋™์ผํ•œ ์ง€์‹ ๊ธฐ๋ฐ˜ ID๋ฅผ ๊ฐ€์ง„ ํ•˜๋‚˜์˜ Dialog๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ๋กœ์šด QnaMakerDialog๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๋ด‡ : ๋ด‡์ด QnA ๋Œ€ํ™” ์ƒ์ž(์‚ฌ์šฉ์ž 1 ๋ฐ˜๋ณต์—์„œ ์ถ”๊ฐ€๋จ)๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ณ  ์ฒซ ๋ฒˆ์งธ ์‚ฌ์šฉ์ž์˜ ์ง€์‹ ๊ธฐ๋ฐ˜(DE)์—์„œ ๋‹ต๋ณ€์„ ์–ป์Šต๋‹ˆ๋‹ค.
๋ด‡ : ์‚ฌ์šฉ์ž 1์˜ ๋กœ์ผ€์ผ๋กœ ์‚ฌ์šฉ์ž 2์—๊ฒŒ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

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

์˜ฌ๋ฐ”๋ฅธ ์–ธ์–ด์™€ ์˜ฌ๋ฐ”๋ฅธ ์ง€์‹ ๊ธฐ๋ฐ˜ ID๋กœ ๋˜ ๋‹ค๋ฅธ QnAMakerDialog ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

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

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

์•ˆ๋…•ํ•˜์„ธ์š” @Batta32 ์ž…๋‹ˆ๋‹ค .

๊ท€ํ•˜์˜ ์ง€์›์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์ง€์ ์—์„œ ํ†ตํ•ฉํ•œ ์ƒˆ๋กœ์šด ๋ด‡ ์†”๋ฃจ์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :) ์–ธ์ œ ์ถœ์‹œํ•  ์˜ˆ์ •์ธ์ง€ ๋Œ€๋žต์ ์œผ๋กœ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ?

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

@tommyJimmy87 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์˜์กด์„ฑ ์ฃผ์ž… ๊ตฌํ˜„๊ณผ ๊ด€๋ จ๋œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ๋Š” ์ฆ‰์‹œ ๋‹ค์‹œ ์—ฐ๋ฝ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!

@tommyJimmy87๋‹˜ , ๋ด‡์— ์ข…์†์„ฑ ์ฃผ์ž… ์„ ํ†ตํ•ฉ ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ

๋‹น์‹ ์ด ๊ทธ๋ ‡๊ฒŒ ์นœ์ ˆํ•˜๋‹ค๋ฉด ๋‹ค์Œ ์žฌํ˜„ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด๊ณ  ์ด ๋ถ„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

  1. ๋ด‡ ์†”๋ฃจ์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ด๋™
  2. npm install ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  3. npm run build ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์†”๋ฃจ์…˜์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.
  4. npm pack ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ tgz๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  5. ๊ฐ€์ƒ ๋„์šฐ๋ฏธ ์ƒ˜ํ”Œ๋กœ ์ด๋™
  6. ๋‹ค์Œ๊ณผ ๊ฐ™์ด Virtual Assistant package.json ์—์„œ ์ƒ์„ฑ๋œ tgz๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    "bot-solutions": "๋ด‡ ์†”๋ฃจ์…˜ TGZ๋กœ ๊ฐ€๋Š” ๊ฒฝ๋กœ"

  7. ๋‹ค๊ตญ์–ด๋กœ ๊ฐ€์ƒ ๋„์šฐ๋ฏธ ๋ฐฐํฌ

  8. ์–ธ๊ธ‰ํ•œ QnAMakerDialog ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด PR์—๋Š” ๋‹ค์Œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

  1. Virtual Assistant์—์„œ ์˜์กด์„ฑ ์ฃผ์ž…( inversifyjs ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ๊ตฌํ˜„ ๋ฐ TypeScript ๊ธฐ์ˆ 
  2. ํ…œํ”Œ๋ฆฟ ์—…๋ฐ์ดํŠธ

๊ณ ๊ฐ๋‹˜์˜ ๋‹ต๋ณ€์— ๊ท€๊ธฐ์šธ์ด๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š .

์•ˆ๋…•ํ•˜์„ธ์š” @Batta32 ์ž…๋‹ˆ๋‹ค .

๊ท€ํ•˜์˜ ์ง€์›์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ์ง€์ ์—์„œ ํ†ตํ•ฉํ•œ ์ƒˆ๋กœ์šด ๋ด‡ ์†”๋ฃจ์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. :) ์–ธ์ œ ์ถœ์‹œํ•  ์˜ˆ์ •์ธ์ง€ ๋Œ€๋žต์ ์œผ๋กœ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @ Batta32 , ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ TypeError: Reflect.hasOwnMetadata is not a function ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค.
inversify๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ…Œ์ŠคํŠธ๋ฅผ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๊นŒ?

@tommyJimmy87 ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ์ด ๋ถ€๋ถ„์„ ๊ฒ€ํ† ํ•œ ํ›„ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋Œ€๋กœ ๋‹ค์‹œ ์•Œ๋ ค๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š.

@Batta32๋‹˜ , ์ด ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํ…Œ์ŠคํŠธ ๊ธฐ๋ฐ˜ js ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. require('reflect-metadata');

์•ˆ๋…•ํ•˜์„ธ์š” @tommyJimmy87 - ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์™€ ๊ด€๋ จํ•˜์—ฌ ๋ง์”€ํ•˜์‹  ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์งˆ๋ฌธ ์„

  1. ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ถ„๊ธฐ ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?
  2. ์–ด๋–ค ๊ตฌ์„ฑ ์š”์†Œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?
  3. ์ˆ˜ํ–‰ํ•œ ์žฌํ˜„ ๋‹จ๊ณ„๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ์šฐ๋ฆฌ์˜ ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค :

  • ์šฐ๋ฆฌ๋Š” ์ด ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค: feature/southworks/dependency-injection-implementation
  • TypeScript ๊ฐ€์ƒ ๋„์šฐ๋ฏธ ์ƒ˜ํ”Œ
  • TypeScript ๊ธฐ์ˆ  ์ƒ˜ํ”Œ

Virtual Assistant ๋ฐ Skill์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ด‡ ์†”๋ฃจ์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ด๋™
  2. npm install ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  3. npm run build ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์†”๋ฃจ์…˜์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.
  4. npm pack ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ .tgz
  5. ๊ฐ€์ƒ ๋„์šฐ๋ฏธ ์ƒ˜ํ”Œ๋กœ ์ด๋™
  6. Virtual Assistant package.json ์—์„œ ์ƒ์„ฑ๋œ .tgz ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  7. "๋ด‡ ์†”๋ฃจ์…˜": ""
  8. npm install ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ข…์†์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.
  9. npm run build ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์†”๋ฃจ์…˜์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.
  10. npm run test ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์†”๋ฃจ์…˜์„ ์ปดํŒŒ์ผํ•ฉ๋‹ˆ๋‹ค.
  11. ํ…Œ์ŠคํŠธ ์‹คํ–‰ ํ™•์ธ

image

image

์•ˆ๋…•ํ•˜์„ธ์š” @tommyJimmy87 - PR #3559์— ์ œ์•ˆ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ˆ˜์ž… ํ…Œ์ŠคํŠธ ํŒŒ์ผ์„ ์ถ”๊ฐ€ ๊ฐ€์ƒ ์ง€์› ๋ฐ ๊ธฐ์ˆ  ๋ด‡ ์—…๋ฐ์ดํŠธ : require('reflect-metadata'); ํŠน๋ณ„ํžˆ์—์„œ BotTestBase ๋ฐ SkillTestBase , ๋‹น์‹ ์€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์— ๊ด€ํ•œ ์–ธ๊ธ‰ํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด.

๋‹ค์Œ ๋‹จ๊ณ„ ์— ๋”ฐ๋ผ ๊ฐ€์ƒ ๋„์šฐ๋ฏธ ๋ฐ ๊ธฐ์ˆ ์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”,
๋””์—๊ณ .

์•ˆ๋…•ํ•˜์„ธ์š” @Batta32 ์™€ @DiegoCardozo94 ,

์ผ๋ฐ˜์ ์ธ ์งˆ๋ฌธ์ด ํ•˜๋‚˜ ์žˆ์ง€๋งŒ ์•„์ง ๋ฆด๋ฆฌ์Šค๋˜์ง€ ์•Š์•˜์Œ์—๋„ ํ”„๋กœ์ ํŠธ์—์„œ ์ด ๋ถ„๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์— ์งˆ๋ฌธํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” MS Teams๊ฐ€ ์œ ์ผํ•œ ์ฑ„๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. TeamsActivityHandler๋Š” VA์—์„œ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ ๊ธฐ์ˆ  ์ƒ˜ํ”Œ์—์„œ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋งž์Šต๋‹ˆ๊นŒ? ์•„๋งˆ๋„ ๋‚ด๊ฐ€ ์ž˜๋ชป TeamsActivityHandler ๊ธฐ์ˆ ์„ ํ™•์žฅํ•˜๊ณ  ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ์ฒด์ ์œผ๋กœ ํ•œ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ endOfConversation ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ์ˆ ์˜ DefaultActivityHandler ์—์„œ cancel ์— ํ˜ธ์ถœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. . ํ•˜์ง€๋งŒ ์Šคํ‚ฌ ๋‚ด์—์„œ "์ผ๋ฐ˜" ActivityHandler ํ™•์žฅ์œผ๋กœ ์ „ํ™˜ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €๋ฅผ ๋„์™€์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ ์•„๋‹ˆ๋ฉด ์ด์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๊ฐ์‚ฌ ํ•ด์š”

@tommyJimmy87๋‹˜ , TeamsActivityHandler ๋Š” Microsoft Teams ํŠน์ • ์ด๋ฒคํŠธ ๋ฐ ์ƒํ˜ธ ์ž‘์šฉ์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋Š” ActivityHandler ์—์„œ ํŒŒ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Virtual Assistant๋Š” Skills์— ์—ฐ๊ฒฐ๋œ Virtual Assistant์˜ ์Šคํ‚ค๋งˆ์—์„œ Microsoft Teams Channel๊ณผ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ Virtual Assistant์˜ DefaultActivityHandler ๋Š” Skill์ด ์•„๋‹ˆ๋ผ TeamsActivityHandler ์—์„œ ํ™•์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์–ธ๊ธ‰๋œ ์Šคํ‚ค๋งˆ์—์„œ.

DefaultActivityHandler ํ…œํ”Œ๋ฆฟ / ์ƒ˜ํ”Œ ๊ตฌํ˜„์— ๊ฐ€์ƒ ์–ด์‹œ์Šคํ„ดํŠธ์˜ TeamsActivityHandler ์ƒ์ž ๋ฐ–์œผ๋กœ ํŒ€ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒํ•œ๋‹ค.

๋˜ํ•œ ๊ฒ€ํ† ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š” ๐Ÿ˜Š.

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

@Batta32 ์•„์ง ์ถœ์‹œ

์•ˆ๋…•ํ•˜์„ธ์š” @tommyJimmy87 - ์ƒˆ ํŒจํ‚ค์ง€ ์ถœ์‹œ ๊ณ„ํš์„ ๋งˆ๋ฌด๋ฆฌ ์ค‘์ž…๋‹ˆ๋‹ค. ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋Œ€๋กœ ์—ฌ๊ธฐ๋กœ ๋‹ค์‹œ ์—ฐ๋ฝ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ˜Š.

@ Batta32 ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

์•ˆ๋…•ํ•˜์„ธ์š” @cwhitten,์ด ๋ฌธ์ œ๋Š” ์ด๋ฏธ @peterinnesmsft์˜ ์š”์ฒญ ๋œ ๋ณ€๊ฒฝ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š” PR # 3559๋กœ ๊ณ ์ •๋ฉ๋‹ˆ๋‹ค.

PR์ด ๋ณ‘ํ•ฉ๋˜๋Š” ์ฆ‰์‹œ next ๋ถ„๊ธฐ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

#3559์˜ ์ƒํƒœ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? @๋ฐ”ํƒ€32

๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ๋Š” 9์›” 11์ผ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”

@tonyanziano๋‹˜ , PR #3559๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  @peterinnesmsft์˜ ์š”์ฒญ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํฌํ•จํ•˜์—ฌ ๋ณ‘ํ•ฉํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

PR์ด ๋ณ‘ํ•ฉ๋˜๋Š” ์ฆ‰์‹œ next ๋ถ„๊ธฐ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

@joshgummersall #3752์˜ ์ƒํƒœ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์–ธ์ œ ํ†ตํ•ฉํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜์‹ญ๋‹ˆ๊นŒ?

๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๊ฒ€ํ† ํ•˜๊ณ  ์Šน์ธํ•˜๋Š” ์ฆ‰์‹œ!

@joshgummersall ,

์ด ํ‹ฐ์ผ“์„ ๋‹ซ์„ ์ˆ˜ ์žˆ๋„๋ก PR์„ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@virtual-josh, ํ•œ ๋ฒˆ ๋” PR ๊ฒ€ํ† ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฏธ ํ•œ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์Šน์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฆฌ๋ทฐ๋ฅผ ์œ„ํ•ด ๋ˆ„๊ตฌ์—๊ฒŒ ํ•‘์„ ๋ณด๋‚ผ์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

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