From a44bfbcc88c49af3731a5f220320459f04a2ebbe Mon Sep 17 00:00:00 2001 From: Cecilia Avila <44245136+ceciliaavila@users.noreply.github.com> Date: Fri, 14 Jul 2023 12:25:43 -0300 Subject: [PATCH] Add userId property to Language Service QnA (#4493) Co-authored-by: JhontSouth --- libraries/botbuilder-ai/etc/botbuilder-ai.api.md | 1 + libraries/botbuilder-ai/src/customQuestionAnswering.ts | 3 ++- .../botbuilder-ai/src/qnamaker-interfaces/qnamakerOptions.ts | 5 +++++ .../botbuilder-ai/src/qnamaker-utils/languageServiceUtils.ts | 1 + libraries/botbuilder-ai/tests/languageService.test.js | 2 +- 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/libraries/botbuilder-ai/etc/botbuilder-ai.api.md b/libraries/botbuilder-ai/etc/botbuilder-ai.api.md index ff9d3cbbdb..f54d340bb9 100644 --- a/libraries/botbuilder-ai/etc/botbuilder-ai.api.md +++ b/libraries/botbuilder-ai/etc/botbuilder-ai.api.md @@ -589,6 +589,7 @@ export interface QnAMakerOptions { strictFiltersJoinOperator?: JoinOperator; timeout?: number; top?: number; + userId?: string; } // @public diff --git a/libraries/botbuilder-ai/src/customQuestionAnswering.ts b/libraries/botbuilder-ai/src/customQuestionAnswering.ts index 1b20622e39..b1a8023139 100644 --- a/libraries/botbuilder-ai/src/customQuestionAnswering.ts +++ b/libraries/botbuilder-ai/src/customQuestionAnswering.ts @@ -269,7 +269,8 @@ export class CustomQuestionAnswering implements QnAMakerClient, QnAMakerTelemetr telemetryMetrics: { [key: string]: number } ): Promise { const question: string = this.getTrimmedMessageText(context); - const queryOptions: QnAMakerOptions = { ...this._options, ...options } as QnAMakerOptions; + const userId = context?.activity?.from?.id; + const queryOptions: QnAMakerOptions = { ...this._options, ...options, userId } as QnAMakerOptions; let result: QnAMakerResults; diff --git a/libraries/botbuilder-ai/src/qnamaker-interfaces/qnamakerOptions.ts b/libraries/botbuilder-ai/src/qnamaker-interfaces/qnamakerOptions.ts index ff7263f5ec..79ece1b3a0 100644 --- a/libraries/botbuilder-ai/src/qnamaker-interfaces/qnamakerOptions.ts +++ b/libraries/botbuilder-ai/src/qnamaker-interfaces/qnamakerOptions.ts @@ -83,4 +83,9 @@ export interface QnAMakerOptions { * includeUnstructuredSources - option to fetch answers from unsrtuctured sources */ includeUnstructuredSources?: boolean; + + /** + * Channel id for the user or bot on this channel + */ + userId?: string; } diff --git a/libraries/botbuilder-ai/src/qnamaker-utils/languageServiceUtils.ts b/libraries/botbuilder-ai/src/qnamaker-utils/languageServiceUtils.ts index f0ea671b6e..237a255000 100644 --- a/libraries/botbuilder-ai/src/qnamaker-utils/languageServiceUtils.ts +++ b/libraries/botbuilder-ai/src/qnamaker-utils/languageServiceUtils.ts @@ -99,6 +99,7 @@ export class LanguageServiceUtils { context: queryOptions.context, answerSpanRequest: { enable: queryOptions.enablePreciseAnswer }, includeUnstructuredSources: queryOptions.includeUnstructuredSources, + userId: options.userId, }); const qnaResults = await this.httpRequestUtils.executeHttpRequest( diff --git a/libraries/botbuilder-ai/tests/languageService.test.js b/libraries/botbuilder-ai/tests/languageService.test.js index 76a1fdf1bf..df5812f6e7 100644 --- a/libraries/botbuilder-ai/tests/languageService.test.js +++ b/libraries/botbuilder-ai/tests/languageService.test.js @@ -255,7 +255,7 @@ describe('LanguageService', function () { it('sorts the answers in the qna results from highest to lowest score', async function () { const qna = new CustomQuestionAnswering(endpoint); - const context = new TestContext({ text: "what's your favorite animal?" }); + const context = new TestContext({ text: "what's your favorite animal?", from: { id: 'user' } }); const options = { top: 5 }; const results = await qna.getAnswers(context, options);