private async Task <QueryResult> GetResponseWithLuisIntent(ITurnContext turnContext, string topIntent, CancellationToken cancellationToken = default(CancellationToken)) { if (topIntent != null && topIntent != "None") { var qnaOptions = new QnAMakerOptions(); var metadata = new Microsoft.Bot.Builder.AI.QnA.Metadata(); metadata.Name = Constants.MetadataName.Intent; metadata.Value = topIntent; qnaOptions.StrictFilters = new Microsoft.Bot.Builder.AI.QnA.Metadata[] { metadata }; qnaOptions.Top = Constants.DefaultTop; qnaOptions.ScoreThreshold = 0.3F; var activityText = turnContext.Activity.Text; turnContext.Activity.Text = Constants.MetadataName.Intent + "=" + topIntent; var response = await _services.QnAServices[QnAMakerKey].GetAnswersAsync(turnContext, qnaOptions); turnContext.Activity.Text = activityText; if (response != null && response.GetLength(0) != 0 && response[0].Score >= Constants.DefaultThreshold) { return(response[0]); } } return(null); }
private async Task <QueryResult> GetMultiturnResponseFromKB(ITurnContext turnContext, QnAMakerAnswer previousAnswer, CancellationToken cancellationToken = default(CancellationToken)) { if (previousAnswer == null || string.IsNullOrEmpty(previousAnswer.Name)) { return(null); } var qnaOptions = new QnAMakerOptions(); var metadata = new Microsoft.Bot.Builder.AI.QnA.Metadata(); metadata.Name = Constants.MetadataName.Parent; metadata.Value = previousAnswer.Name; qnaOptions.StrictFilters = new Microsoft.Bot.Builder.AI.QnA.Metadata[] { metadata }; qnaOptions.Top = Constants.DefaultTop; qnaOptions.ScoreThreshold = Constants.MultiturnThreshold; var response = await _services.QnAServices[QnAMakerKey].GetAnswersAsync(turnContext, qnaOptions); if (response != null && response.GetLength(0) != 0 && response[0].Score >= Constants.MultiturnThreshold) { return(response[0]); } return(null); }