Ejemplo n.º 1
0
        public static SuggestedActions GetSuggestedQnAActions(QnAResult qnAResult)
        {
            var k = new SuggestedActions()
            {
                Actions = new List <CardAction>()
            };

            foreach (var r in qnAResult.Answers)
            {
                k.Actions.Add(new CardAction()
                {
                    Title = r.AnswerAnswer, Type = ActionTypes.PostBack, Value = $"{r.AnswerAnswer}"
                });
            }
            return(k);
        }
Ejemplo n.º 2
0
        private async Task CaptureChatInformation(ITurnContext turnContext, CancellationToken cancellationToken)
        {
            var conversationInformation = await GetConversationInformation(turnContext);

            QnAResult[] qnaResults = await _qnAService.QueryQnAServiceAsync(turnContext.Activity.Text, new QnABotState(), QnAMakerEndpoint);

            if (qnaResults.Any())
            {
                QnAResult highestRankedResult = qnaResults.OrderByDescending(x => x.Score).First();
                var       answer = highestRankedResult.Answer;

                QnAPrompts[] prompts = highestRankedResult.Context?.Prompts;

                if (prompts == null || prompts.Length < 1)
                {
                    if (highestRankedResult.Score <= _minConfidenceScore)
                    {
                        stepInformation.Step             = ChatStep.UserFeedback;
                        conversationInformation.Question = turnContext.Activity.Text;
                        await _botConversationState.SaveChangesAsync(turnContext, false, cancellationToken);

                        await turnContext.SendActivityAsync(_userFeedbackCard.Create(), cancellationToken);
                    }
                    else
                    {
                        conversationInformation.Comments.Add(answer);
                        await _botConversationState.SaveChangesAsync(turnContext, false, cancellationToken);

                        await turnContext.SendActivityAsync(answer, cancellationToken : cancellationToken);
                    }
                }
                else
                {
                    conversationInformation.Comments.Add(answer);
                    await _botConversationState.SaveChangesAsync(turnContext, false, cancellationToken);

                    await turnContext.SendActivityAsync(CardHelper.GetHeroCardWithPrompts(answer, prompts), cancellationToken : cancellationToken);
                }
            }
        }