// Called when the task module is fetched for an action public async Task <MessagingExtensionActionResponse> HandleMessagingExtensionFetchTaskAsync(ITurnContext turnContext, MessagingExtensionAction query) { var emptyRequest = new ConsultingRequestDetails(); ConsultingDataService dataService = new ConsultingDataService(); emptyRequest.possibleProjects = await dataService.GetProjects(""); IEnumerable <TeamsChannelAccount> members = await TeamsInfo.GetMembersAsync(turnContext); emptyRequest.possiblePersons = members.Select((w) => new Person { name = w.Name, email = w.Email }) .ToList(); var card = await AddToProjectCard.GetCardAsync(turnContext, emptyRequest); var response = new Microsoft.Bot.Schema.Teams.TaskModuleContinueResponse() { Type = "continue", Value = new TaskModuleTaskInfo() { Title = "Select a sample", Card = card.ToAttachment() } }; return(new MessagingExtensionActionResponse { Task = response }); }
// Called when the messaging extension query is entered public async Task <MessagingExtensionResponse> HandleMessagingExtensionQueryAsync(ITurnContext turnContext, MessagingExtensionQuery query) { var queryText = ""; queryText = query?.Parameters.FirstOrDefault(p => p.Name == "queryText").Value as string; var consultingDataService = new ConsultingDataService(); var projects = await consultingDataService.GetProjects(queryText); var attachments = new List <MessagingExtensionAttachment>(); foreach (var project in projects) { var resultCard = ProjectResultsCard.GetCard(project, getMapUrl(project.Client)); var previewCard = ProjectPreviewCard.GetCard(project); attachments.Add(resultCard.ToAttachment().ToMessagingExtensionAttachment(previewCard.ToAttachment())); } return(new MessagingExtensionResponse { ComposeExtension = new MessagingExtensionResult() { Type = "result", AttachmentLayout = "list", Attachments = attachments } }); }
private async Task <bool> ProjectNameValidatorAsync(PromptValidatorContext <string> promptContext, CancellationToken cancellationToken) { ConsultingDataService dataService = new ConsultingDataService(); var keyword = promptContext.Recognized.Value; var projects = await ResolveProject(keyword); return(projects != null && projects.Count > 0); }
private async Task <List <ConsultingProject> > ResolveProject(string keyword) { if (!string.IsNullOrEmpty(keyword)) { ConsultingDataService dataService = new ConsultingDataService(); var possibleResults = await dataService.GetProjects(keyword); if (possibleResults.Count > 0) { // We have a single result, return it return(possibleResults); } } return(null); }