Example #1
0
        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);
        }
Example #2
0
        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);
        }