public static async Task EchoMessage(ConnectorClient connector, Activity activity) { var message = activity.GetTextWithoutMentions(); if (string.Compare(message, "hello", true) == 0 || string.Compare(message, "help", true) == 0) { // Send help message var response = activity.CreateReply(); response.Text = "Hi! I am the Event Management bot for Dev Days 2019 happening in Taiwan. Ask me questions about the event and I can help you find answers Ask me questions like \n\n" + " *\r What is the venue? \r\n\n" + " *\r What tracks are available? \r\n\n" + " *\r Do we have workshops planned? \n\n".Replace("\n", Environment.NewLine); await connector.Conversations.ReplyToActivityWithRetriesAsync(response); return; } //if(string.Compare(message, "feedback", true) == 0) //{ // var replyy = activity.CreateReply(); // var cardRes = CardResponse(); // replyy.Attachments.Add(cardRes); // await connector.Conversations.ReplyToActivityWithRetriesAsync(replyy); // return; //} Helperr helper = new Helperr(); var userInput = activity.GetTextWithoutMentions(); var reply = activity.CreateReply(); var apiResponse = await helper.GetQnAAnswer(userInput); if (!string.IsNullOrEmpty(apiResponse)) { QnAAnswer ans = (new JavaScriptSerializer().Deserialize <QnAAnswer>(apiResponse)); var answer = ans.answers.FirstOrDefault(); if (answer != null) { if (answer.answer == "No good match found in KB.") { reply.Text = "Sorry! I do not have answer to this question. Please ask me questions about events"; } else { reply.Text = answer.answer; } } else { reply.Text = "Sorry, did not get you question."; } } else { reply.Text = "Unable to fetch response from QnA maker service. Please try again."; } await connector.Conversations.ReplyToActivityWithRetriesAsync(reply); }
public static ComposeExtensionResponse HandleMessageExtensionQuery(ConnectorClient connector, Activity activity, Dictionary <int, StudentValues> results) { Helperr helper = new Helperr(); List <SpeakerBios> speakers = helper.SpeakerInformation(); var query = activity.GetComposeExtensionQueryData(); if (query == null /*|| (query.CommandId != "Speakers" || query.CommandId != "Sessions")*/) { return(null); } if (query.CommandId == "Speakers") { var title = ""; var titleParam = query.Parameters?.FirstOrDefault(p => p.Name == "SpeakerTitle"); var response = new ComposeExtensionResponse(new ComposeExtensionResult("list", "result")); ComposeExtensionAttachment[] attachments = null; if (titleParam != null) { title = titleParam.Value.ToString(); List <string> searchNames = speakers.Select(a => a.SpeakerName).Where(c => c.ToLower().Contains(title.ToLower())).Select(d => d).ToList(); List <string> searchImages = speakers.Where(a => a.SpeakerName.ToLower().Contains(title.ToLower())).Select(c => c.Snap).ToList(); List <string> searchBio = speakers.Where(a => a.SpeakerName.ToLower().Contains(title.ToLower())).Select(c => c.Bio).ToList(); List <string> searchTitle = speakers.Where(a => a.SpeakerName.ToLower().Contains(title.ToLower())).Select(c => c.Title).ToList(); int attacCount = searchNames.Count(); attachments = new ComposeExtensionAttachment[attacCount]; for (int i = 0; i < attacCount; i++) { attachments[i] = GetAttachment(searchImages[i], searchNames[i], searchTitle[i], searchBio[i]); } response.ComposeExtension.Attachments = attachments.ToList(); } else { List <string> searchNames = speakers.Select(c => c.SpeakerName).ToList(); List <string> searchImages = speakers.Select(c => c.Snap).ToList(); List <string> searchTitle = speakers.Select(c => c.Title).ToList(); List <string> searchBio = speakers.Select(c => c.Bio).ToList(); attachments = new ComposeExtensionAttachment[searchNames.Count]; for (int i = 0; i < searchNames.Count; i++) { attachments[i] = GetAttachment(searchImages[i], searchNames[i], searchTitle[i], searchBio[i]); } response.ComposeExtension.Attachments = attachments.ToList(); } return(response); } else if (query.CommandId == "Sessions") { List <SessionList> sessions = helper.SessionInformation(); var title = ""; var titleParam = query.Parameters?.FirstOrDefault(p => p.Name == "sessionTitle"); var response = new ComposeExtensionResponse(new ComposeExtensionResult("list", "result")); ComposeExtensionAttachment[] attachments = null; if (titleParam != null) { title = titleParam.Value.ToString(); List <string> searchSessionNames = sessions.Select(a => a.Session).Where(c => c.ToLower().Contains(title.ToLower())).Select(d => d).ToList(); List <string> searchSpeaker = sessions.Where(a => a.Session.ToLower().Contains(title.ToLower())).Select(d => d.Speaker).ToList(); List <string> searchSessionAbstract = sessions.Where(a => a.Session.ToLower().Contains(title.ToLower())).Select(d => d.Abstract).ToList(); List <string> searchSessionType = sessions.Where(a => a.Session.ToLower().Contains(title.ToLower())).Select(d => d.SessionType).ToList();; int attacCount = searchSessionNames.Count(); attachments = new ComposeExtensionAttachment[attacCount]; for (int i = 0; i < attacCount; i++) { string speakerAndSessionType = searchSpeaker[i] + " - " + searchSessionType[i]; attachments[i] = GetAttachments(searchSessionNames[i], speakerAndSessionType, searchSessionAbstract[i]); } response.ComposeExtension.Attachments = attachments.ToList(); } else { List <string> searchSessionNames = sessions.Select(c => c.Session).Take(20).ToList(); List <string> searchSpeaker = sessions.Select(c => c.Speaker).Take(20).ToList(); List <string> searchSessionAbstract = sessions.Select(c => c.Abstract).Take(20).ToList(); List <string> searchSessionType = sessions.Select(c => c.SessionType).ToList(); attachments = new ComposeExtensionAttachment[searchSessionNames.Count]; for (int i = 0; i < searchSessionNames.Count; i++) { string speakerAndSessionType = searchSpeaker[i] + " - " + searchSessionType[i]; attachments[i] = GetAttachments(searchSessionNames[i], speakerAndSessionType, searchSessionAbstract[i]); } response.ComposeExtension.Attachments = attachments.ToList(); } return(response); } return(null); }