// 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
                }
            });
        }
Пример #3
0
        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);
        }
Пример #4
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);
        }