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); }