Uri IQnAService.BuildFeedbackRequest(string userId, string userQuery, string kbQuestion, string kbAnswer, out QnAMakerTrainingRequestBody postBody, out string subscriptionKey, out string knowledgebaseId) { knowledgebaseId = this.qnaInfo.KnowledgebaseId; subscriptionKey = this.qnaInfo.SubscriptionKey; var builder = new UriBuilder($"{UriBase}/{knowledgebaseId}/train"); var feedbackRecord = new FeedbackRecord { UserId = userId, UserQuestion = userQuery, KbQuestion = kbQuestion, KbAnswer = kbAnswer }; var feedbackRecords = new List <FeedbackRecord>(); feedbackRecords.Add(feedbackRecord); postBody = new QnAMakerTrainingRequestBody { KnowledgeBaseId = knowledgebaseId, FeedbackRecords = feedbackRecords }; return(builder.Uri); }
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument) { var message = await argument; if (message != null && !string.IsNullOrEmpty(message.Text)) { var tasks = this.services.Select(s => s.QueryServiceAsync(message.Text)).ToArray(); await Task.WhenAll(tasks); if (tasks.Any()) { var sendDefaultMessageAndWait = true; qnaMakerResults = tasks.FirstOrDefault(x => x.Result.ServiceCfg != null)?.Result; if (tasks.Count(x => x.Result.Answers?.Count > 0) > 0) { var maxValue = tasks.Max(x => x.Result.Answers[0].Score); qnaMakerResults = tasks.First(x => x.Result.Answers[0].Score == maxValue).Result; if (qnaMakerResults != null && qnaMakerResults.Answers != null && qnaMakerResults.Answers.Count > 0) { if (this.IsConfidentAnswer(qnaMakerResults)) { await this.RespondFromQnAMakerResultAsync(context, message, qnaMakerResults); await this.DefaultWaitNextMessageAsync(context, message, qnaMakerResults); } else { feedbackRecord = new FeedbackRecord { UserId = message.From.Id, UserQuestion = message.Text }; await this.QnAFeedbackStepAsync(context, qnaMakerResults); } sendDefaultMessageAndWait = false; } } if (sendDefaultMessageAndWait) { await context.PostAsync(qnaMakerResults.ServiceCfg.DefaultMessage); await this.DefaultWaitNextMessageAsync(context, message, qnaMakerResults); } } } }
public async Task MessageReceivedAsync(IDialogContext context, IAwaitable <IMessageActivity> argument) { var message = await argument; var activity = (Activity)await argument; if (activity.Type == ActivityTypes.ConversationUpdate) { if (activity.MembersAdded != null && activity.MembersAdded.Any()) { string membersName = string.Join( ", ", activity.MembersAdded.Select( newMember => (newMember.Id != activity.Recipient.Id) ? $"{newMember.Name}" : $"{activity.Recipient.Name}")); string membersID = string.Join( ", ", activity.MembersAdded.Select( newMember => (newMember.Id != activity.Recipient.Id) ? $"{newMember.Id}" : $"{activity.Recipient.Id}")); if (string.Compare(membersName, "KnowledgeGuru", true) == 0) { //_botName = membersName; _botName = SetMentorName(); //await context.PostAsync($"Hello, I am {_botName}, your Digital Mentor. Please type your query and i would be happy to help. Type Done when you want to exit."); await context.PostAsync($"Hello, I am {_botName}, your Student Services Executive. Please type your query and i would be happy to help. Type Thanks when you want to exit."); } else { _membersName = membersName; //await context.PostAsync($"Welcome {membersName}."); } await this.DefaultWaitNextMessageAsync(context, message, qnaMakerResults); } } if (message.Type == ActivityTypes.Message) { if (message != null && !string.IsNullOrEmpty(message.Text)) { if (string.Compare(message.Text, "Thanks", true) == 0 || string.Compare(message.Text, "Done", true) == 0 || string.Compare(message.Text, "Bye", true) == 0 || string.Compare(message.Text, "Close", true) == 0 || string.Compare(message.Text, "Fine", true) == 0) { await this.QnARatingStepAsync(context, qnaMakerResults); } else { var tasks = this.services.Select(s => s.QueryServiceAsync(message.Text)).ToArray(); await Task.WhenAll(tasks); if (tasks.Any()) { var sendDefaultMessageAndWait = true; qnaMakerResults = tasks.First(x => x.Result.ServiceCfg != null).Result; if (tasks.Count(x => x.Result.Answers?.Count > 0) > 0) { var maxValue = tasks.Max(x => x.Result.Answers[0].Score); qnaMakerResults = tasks.First(x => x.Result.Answers[0].Score == maxValue).Result; if (qnaMakerResults != null && qnaMakerResults.Answers != null && qnaMakerResults.Answers.Count > 0) { if (this.IsConfidentAnswer(qnaMakerResults)) { await this.RespondFromQnAMakerResultAsync(context, message, qnaMakerResults); //Added By Sumit if (string.Compare(message.Text, "Hi", true) == 0) { await this.DefaultWaitNextMessageAsync(context, message, qnaMakerResults); } else { await this.DefaultWaitNextMessageWithCustomMessageAsync(context, message, qnaMakerResults); } //Commented By Sumit //await this.DefaultWaitNextMessageAsync(context, message, qnaMakerResults); } else { feedbackRecord = new FeedbackRecord { UserId = message.From.Id, UserQuestion = message.Text }; await this.QnAFeedbackStepAsync(context, qnaMakerResults); } sendDefaultMessageAndWait = false; } } if (sendDefaultMessageAndWait) { await context.PostAsync(qnaMakerResults.ServiceCfg.DefaultMessage); await this.DefaultWaitNextMessageAsync(context, message, qnaMakerResults); } } } } } }