コード例 #1
0
        private async Task <QueryResult> GetGeneralResponseFromKB(ITurnContext turnContext, ShowQnAResultState qnaStatus, bool considerActiveLearning = false, CancellationToken cancellationToken = default(CancellationToken))
        {
            var qnaOptions = new QnAMakerOptions();

            if (considerActiveLearning)
            {
                qnaOptions.Top            = Constants.ActiveLearningTop;
                qnaOptions.ScoreThreshold = Constants.ActiveLearningThreshold;
            }
            else
            {
                qnaOptions.Top            = Constants.DefaultTop;
                qnaOptions.ScoreThreshold = Constants.DefaultThreshold;
            }

            var response = await _services.QnAServices[QnAMakerKey].GetAnswersAsync(turnContext, qnaOptions);

            if (response != null && response.GetLength(0) != 0 && response[0].Score >= Constants.DefaultThreshold)
            {
                if (response.GetLength(0) == 1 || !considerActiveLearning || response[0].Score > 0.95F)
                {
                    return(response[0]);
                }

                var activeLearningResponse = HandleActiveLearning(response, qnaStatus, turnContext.Activity.Text);
                TelemetryUtils.LogActiveLearningResponse(this._services.TelemetryClient, TelemetryConstants.ActiveLearningEvent, turnContext.Activity, activeLearningResponse);
                return(activeLearningResponse);
            }

            return(null);
        }