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