public void TaskModuleTaskInfoInitsWithNoArgs()
        {
            var taskInfo = new TaskModuleTaskInfo();

            Assert.NotNull(taskInfo);
            Assert.IsType <TaskModuleTaskInfo>(taskInfo);
        }
        protected override Task <TaskModuleResponse> OnTeamsTaskModuleFetchAsync(ITurnContext <IInvokeActivity> turnContext,
                                                                                 TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
        {
            var asJobject = JObject.FromObject(taskModuleRequest.Data);
            var formname  = asJobject["data"].ToString();

            TaskModuleResponse taskModuleResponse = null;

            switch (formname)
            {
            case "alertform":
            {
                var taskInfo = new TaskModuleTaskInfo();
                taskInfo.Url    = taskUrl;
                taskInfo.Width  = 510;
                taskInfo.Height = 500;
                taskInfo.Title  = "Fetched from bot";

                taskModuleResponse = new TaskModuleResponse
                {
                    Task = new TaskModuleContinueResponse()
                    {
                        Value = taskInfo,
                    },
                };
            }
            break;

            default:
                break;
            }


            return(Task.FromResult(taskModuleResponse));
        }
        protected override Task <TaskModuleResponse> OnTeamsTaskModuleFetchAsync(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
        {
            var asJobject = JObject.FromObject(taskModuleRequest.Data);
            var value     = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data;

            var taskInfo = new TaskModuleTaskInfo();

            switch (value)
            {
            case TaskModuleIds.YouTube:
                taskInfo.Url = taskInfo.FallbackUrl = _baseUrl + "/" + TaskModuleIds.YouTube;
                SetTaskInfo(taskInfo, TaskModuleUIConstants.YouTube);
                break;

            case TaskModuleIds.CustomForm:
                taskInfo.Url = taskInfo.FallbackUrl = _baseUrl + "/" + TaskModuleIds.CustomForm;
                SetTaskInfo(taskInfo, TaskModuleUIConstants.CustomForm);
                break;

            case TaskModuleIds.AdaptiveCard:
                taskInfo.Card = CreateAdaptiveCardAttachment();
                SetTaskInfo(taskInfo, TaskModuleUIConstants.AdaptiveCard);
                break;

            default:
                break;
            }

            return(Task.FromResult(taskInfo.ToTaskModuleResponse()));
        }
 public static TaskModuleResponse CreateResponse(TaskModuleTaskInfo taskInfo)
 {
     return(new TaskModuleResponse
     {
         Task = new TaskModuleContinueResponse()
         {
             Value = taskInfo,
         },
     });
 }
Exemple #5
0
        public void TaskModuleContinueResponseInits()
        {
            var value = new TaskModuleTaskInfo();

            var continueResponse = new TaskModuleContinueResponse(value);

            Assert.NotNull(continueResponse);
            Assert.IsType <TaskModuleContinueResponse>(continueResponse);
            Assert.Equal(value, continueResponse.Value);
        }
Exemple #6
0
        public async Task <TaskModuleResponse> GetModuleMenuData(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
        {
            var    TaskInfo    = new TaskModuleTaskInfo();
            var    asJobject   = JObject.FromObject(taskModuleRequest.Data);
            var    Value       = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data;
            string GetMenuJson = new OrganizeStructureService().GetFoodUrlStr(Value);

            TaskInfo.Card = new OrganizeStructureService().GetTaskModuleFetchCard(Value, GetMenuJson, TaskInfo);
            new OrderfoodServices().SetTaskInfo(TaskInfo, TaskModuleUIConstants.AdaptiveCard);
            return(await Task.FromResult(TaskInfo.ToTaskModuleResponse()));
        }
        //protected readonly OrderfoodServices _orderfoodServices;
        //protected readonly CreateCardService _createCardService;
        //public OrganizeStructureService(OrderfoodServices orderfoodServices, CreateCardService createCardService)
        //{
        //    _orderfoodServices = orderfoodServices;
        //    _createCardService = createCardService;
        //}
        public Attachment GetTaskModuleFetchCard(string Value, string GetMenuJson, TaskModuleTaskInfo TaskInfo)
        {
            var StorName = new OrderfoodServices().GetStr(Value, "FoodData2468", true);
            var MenuurlOrderIdDueTime = new OrderfoodServices().GetStr(Value, "FoodData2468", false);
            var OrderIdDueTime        = new OrderfoodServices().GetStr(MenuurlOrderIdDueTime, "GuidStr13579", false);
            var OrderId  = new OrderfoodServices().GetStr(OrderIdDueTime, "DueTime13579", true);
            var DueTime  = new OrderfoodServices().GetStr(OrderIdDueTime, "DueTime13579", false);
            var NameJson = new OrderfoodServices().ArrayPlusName(GetMenuJson, "Menuproperties");

            TaskInfo.Card = new CreateCardService().CreateClickfoodModule(OrderId, StorName, NameJson, DueTime);
            return(TaskInfo.Card);
        }
Exemple #8
0
        public async Task <TaskModuleResponse> GetModifyModuleData(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
        {
            var             TaskInfo       = new TaskModuleTaskInfo();
            TeamsBuyContext context        = new TeamsBuyContext();
            var             asJobject      = JObject.FromObject(taskModuleRequest.Data);
            var             Value          = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data;
            var             MenuOrderData  = new MenuDetailService(context).GetMenuOrder(Value).ToList();
            var             MenuOrderStore = new MenuService(context).GetMenuOrder(Value).Store;

            TaskInfo.Card = new CreateCardService().GetCustomizedModification(MenuOrderStore, MenuOrderData, Value);
            SetTaskInfo(TaskInfo, TaskModuleUIConstants.UpdateMenu);
            return(await Task.FromResult(TaskInfo.ToTaskModuleResponse()));
        }
Exemple #9
0
        public async Task <TaskModuleResponse> FinishSelectDishesSubmit(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
        {
            TeamsBuyContext context  = new TeamsBuyContext();
            var             TaskInfo = new TaskModuleTaskInfo();
            JObject         Data     = JObject.Parse(JsonConvert.SerializeObject(taskModuleRequest.Data));
            var             StoreAndGuidAndDueTime = Data.Property("data").Value.ToString();

            new OrganizeStructureService().RemoveNeedlessStructure(Data);
            string  SelectJson = ProcessAllSelect(Data);
            JObject o          = new JObject();

            o["SelectMenu"] = JArray.Parse(SelectJson);
            bool DecideQuanRem  = true;
            bool Number         = true;
            var  AllSelectDatas = JsonConvert.DeserializeObject <SelectMenuDatagroup>(o.ToString());

            foreach (var item in AllSelectDatas.SelectMenu)
            {
                if (item.Quantity == "0" && item.Remarks != "")
                {
                    DecideQuanRem = false;
                }
                if (Math.Sign(decimal.Parse(item.Quantity)) < 0 || (decimal.Parse(item.Quantity) - Math.Floor(decimal.Parse(item.Quantity))) != 0)
                {
                    Number = false;
                }
            }
            if (DecideQuanRem == true && Number == true)
            {
                //取完整資料
                var OAllOrderDatasStr = ProcessUnifyData(o);
                var SelectObject      = JsonConvert.DeserializeObject <SelectAllDataGroup>(OAllOrderDatasStr);
                SelectObject.UserID = turnContext.Activity.From.Id;
                var ExistGuid = Guid.Parse("cf1ed7b9-ae4a-4832-a9f4-fdee6e492085");
                new OrderDetailService(context).CreateOrderDetail(SelectObject, SelectObject.SelectAllOrders, ExistGuid);

                TaskInfo.Card = new CreateCardService().GetResultClickfood(new OrganizeStructureService().GetOrderID(StoreAndGuidAndDueTime), new OrganizeStructureService().GetStoreName(StoreAndGuidAndDueTime), o.ToString(), new OrganizeStructureService().GetDueTime(StoreAndGuidAndDueTime), turnContext.Activity.From.Name);
                SetTaskInfo(TaskInfo, TaskModuleUIConstants.AdaptiveCard);
                await turnContext.SendActivityAsync(MessageFactory.Attachment(new CreateCardService().GetResultClickfood(new OrganizeStructureService().GetOrderID(StoreAndGuidAndDueTime), new OrganizeStructureService().GetStoreName(StoreAndGuidAndDueTime), o.ToString(), "12:00", turnContext.Activity.From.Name)));
            }
            else
            {
                TaskInfo.Card = new CreateCardService().GetError(turnContext.Activity.From.Name);
                SetTaskInfo(TaskInfo, TaskModuleUIConstants.AdaptiveCard);
                await turnContext.SendActivityAsync(MessageFactory.Attachment(new CreateCardService().GetError(turnContext.Activity.From.Name)));
            }
            return(await Task.FromResult(TaskInfo.ToTaskModuleResponse()));
        }
Exemple #10
0
        public void ModifyMenuData(TaskModuleRequest taskModuleRequest, TaskModuleTaskInfo TaskInfo)
        {
            TeamsBuyContext context   = new TeamsBuyContext();
            var             asJobject = JObject.FromObject(taskModuleRequest.Data);
            var             Value     = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data;
            JObject         Data      = JObject.Parse(JsonConvert.SerializeObject(taskModuleRequest.Data));

            new OrganizeStructureService().ModifyRemoveNeedlessStructure(Data);
            var inputlist = new List <string>();

            foreach (var item in Data)
            {
                inputlist.Add(item.Value.ToString());
            }
            inputlist.Remove(inputlist[0]);
            var StoreName = inputlist[0];

            inputlist.Remove(inputlist[0]);
            var Modify = new ModifyGroup();
            var w      = new List <ModifyMultiple>();

            for (int i = 0; 2 * i < inputlist.Count(); i++)
            {
                w.Add(new ModifyMultiple()
                {
                    ProductName = inputlist[2 * i], Amount = inputlist[2 * i + 1], MenuId = Value
                });
            }
            Modify.AllModifyMultiple = w;
            Modify.StoreName         = StoreName;
            for (var i = 0; i < Modify.AllModifyMultiple.Count; i++)
            {
                if (Modify.AllModifyMultiple[i].ProductName == "" || Modify.AllModifyMultiple[i].Amount.ToString() == "")
                {
                    Modify.AllModifyMultiple.Remove(Modify.AllModifyMultiple[i]);
                }
            }
            new MenuService(context).UpdateMenuOrderStoreName(Value, Modify.StoreName);
            new MenuDetailService(context).DeleteMenuDetail(Value);
            new MenuDetailService(context).CreateMenuDetail(Modify);

            TaskInfo.Card = new CreateCardService().GetResultCustomizedModification(Modify.StoreName, Modify.AllModifyMultiple);
            SetTaskInfo(TaskInfo, TaskModuleUIConstants.UpdateMenu);
        }
        public void TaskModuleTaskInfoInits()
        {
            var title           = "chatty";
            var height          = "medium";
            var width           = "large";
            var url             = "https://example.com";
            var card            = new Attachment();
            var fallbackUrl     = "https://fallback-url-of-example.com";
            var completionBotId = "0000-0000-0000-0000-0000";

            var taskInfo = new TaskModuleTaskInfo(title, height, width, url, card, fallbackUrl, completionBotId);

            Assert.NotNull(taskInfo);
            Assert.IsType <TaskModuleTaskInfo>(taskInfo);
            Assert.Equal(title, taskInfo.Title);
            Assert.Equal(height, taskInfo.Height);
            Assert.Equal(width, taskInfo.Width);
            Assert.Equal(url, taskInfo.Url);
            Assert.Equal(card, taskInfo.Card);
            Assert.Equal(fallbackUrl, taskInfo.FallbackUrl);
            Assert.Equal(completionBotId, taskInfo.CompletionBotId);
        }
        public TaskModuleTaskInfoResponse CreateCompetitionDetailTaskInfoResponse(Competition competition)
        {
            var localization = _localizationFactory.Create(competition.Locale);
            var body         = new List <AdaptiveCard.AdaptiveBodyItem>
            {
                new AdaptiveCard.AdaptiveBodyItem
                {
                    Type = "TextBlock",
                    Text = localization["CompetitionDetail.Competitors"],
                    Size = AdaptiveTextSize.Large
                },
            };

            body.AddRange(competition.Competitors.Select(c => new AdaptiveCard.AdaptiveBodyItem {
                Type = "TextBlock", Text = c.Name
            }));
            var taskInfo = new TaskModuleTaskInfo
            {
                Type  = "continue",
                Value = new TaskModuleTaskInfo.TaskInfoValue
                {
                    Title  = string.Empty,
                    Height = "medium",
                    Width  = "small",
                    Card   = new Attachment
                    {
                        ContentType = AdaptiveCard.ContentType,
                        Content     = new AdaptiveCard()
                        {
                            Body = body
                        }
                    }
                }
            };

            return(new TaskModuleTaskInfoResponse {
                Task = taskInfo
            });
        }
 public static TaskModuleResponse ToTaskModuleResponse(this TaskModuleTaskInfo taskInfo)
 {
     return(CreateResponse(taskInfo));
 }
Exemple #14
0
 public void SetTaskInfo(TaskModuleTaskInfo taskInfo, UISettings uIConstants)
 {
     taskInfo.Height = uIConstants.Height;
     taskInfo.Width  = uIConstants.Width;
     taskInfo.Title  = uIConstants.Title.ToString();
 }
        /// <summary>
        /// Handle request to fetch task module content.
        /// </summary>
        private async Task <HttpResponseMessage> HandleTaskModuleFetchRequest(Activity activity, string activityValue)
        {
            var action = JsonConvert.DeserializeObject <TaskModule.TaskModuleActionData <ActionDetails> >(activityValue);

            var channelData = activity.GetChannelData <TeamsChannelData>();
            var tenantId    = channelData.Tenant.Id;

            // Default to common parameters for task module
            var taskInfo = new TaskModuleTaskInfo()
            {
                Title  = ApplicationSettings.AppName,
                Height = 900,
                Width  = 600,
            };

            // Populate the task module content, based on the kind of dialog requested
            Attachment card = null;

            switch (action.Data.Data.ActionType)
            {
            case Constants.CreateOrEditAnnouncement:
                taskInfo.Title = "Create New";
                card           = await CardHelper.GetCreateNewAnnouncementCard(tenantId);

                break;

            case Constants.ShowMoreDetails:
                taskInfo.Title = "Details";
                var showDetails = JsonConvert.DeserializeObject <TaskModule.TaskModuleActionData <AnnouncementActionDetails> >(activityValue);
                card = await CardHelper.GetPreviewAnnouncementCard(showDetails.Data.Data.Id);

                taskInfo.Height = 900;
                taskInfo.Width  = 600;

                break;

            case Constants.ShowEditAnnouncementTaskModule:
                taskInfo.Title = "Edit a message";
                var editAnnouncement = JsonConvert.DeserializeObject <TaskModule.TaskModuleActionData <AnnouncementActionDetails> >(activityValue);

                var campaign = await Cache.Announcements.GetItemAsync(editAnnouncement.Data.Data.Id);

                if (campaign == null || campaign.Status == Status.Sent)
                {
                    card            = CardHelper.GetUpdateMessageCard($"This {Helper.ApplicationSettings.AppFeature} is already sent and not allowed to edit.");
                    taskInfo.Height = 100;
                    taskInfo.Width  = 500;
                }
                else
                {
                    card = await CardHelper.GetEditAnnouncementCard(editAnnouncement.Data.Data.Id, tenantId);
                }
                break;

            default:
                break;
            }

            taskInfo.Card = card;
            TaskModuleResponseEnvelope taskModuleEnvelope = new TaskModuleResponseEnvelope
            {
                Task = new TaskModuleContinueResponse
                {
                    Type  = "continue",
                    Value = taskInfo
                }
            };

            return(Request.CreateResponse(HttpStatusCode.OK, taskModuleEnvelope));
        }
        private TaskModuleTaskInfo CreateSignedInTaskModuleTaskInfo(string token = "")
        {
            var taskModuleTaskInfo = new TaskModuleTaskInfo
            {
                Card = new Attachment
                {
                    Content = new AdaptiveCard
                    {
                        Body = new List <AdaptiveElement>()
                        {
                            new AdaptiveTextBlock("You are signed in!"),
                            new AdaptiveTextBlock("Send 'Log out' or 'Sign out' to start over."),
                            new AdaptiveTextBlock("(Or click the Sign Out button below.)"),
                        },
                        Actions = new List <AdaptiveAction>()
                        {
                            new AdaptiveSubmitAction()
                            {
                                Title = "Close", Data = new JObject {
                                    { "key", "close" }
                                }
                            },
                            new AdaptiveSubmitAction()
                            {
                                Title = "Sign Out", Data = new JObject {
                                    { "key", "signout" }
                                }
                            },
                        },
                    },
                    ContentType = AdaptiveCard.ContentType,
                },
                Height = 160,
                Width  = 350,
                Title  = "Messaging Extension Auth Example",
            };

            if (!string.IsNullOrEmpty(token))
            {
                var card = taskModuleTaskInfo.Card.Content as AdaptiveCard;

                // Embed a child Adaptive Card behind a AdaptiveShowCardAction to display the User's token
                card.Actions.Add(new AdaptiveShowCardAction()
                {
                    Title = "Show Token",
                    Card  = new AdaptiveCard
                    {
                        Body = new List <AdaptiveElement>()
                        {
                            new AdaptiveTextBlock($"Your token is { token }")
                            {
                                Wrap = true
                            },
                        },
                    },
                });

                taskModuleTaskInfo.Height = 300;
                taskModuleTaskInfo.Width  = 500;
            }

            return(taskModuleTaskInfo);
        }
        protected async override Task <TaskModuleResponse> OnTeamsTaskModuleFetchAsync(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
        {
            var TaskInfo = new TaskModuleTaskInfo();

            var factory   = new AdaptiveCardDataFactory(turnContext, taskModuleRequest);
            var fetchType = factory.GetCardActionType();
            var service   = new CreateCardService2();
            var taskInfo  = new TaskModuleTaskInfo();

            //ting create Customized menu taskmodule
            if (fetchType?.Equals("createmenu") == true)
            {
                var activityId = factory.GetCardData <string>();
                taskInfo.Card = service.GetCreateMenu(activityId);
                return(await Task.FromResult(taskInfo.ToTaskModuleResponse()));
            }
            //create menu detail
            else if (fetchType?.Equals("CreateMenuDetail") == true)
            {
                var menu = factory.GetCardData <string>();

                taskInfo.Card = service.GetCreateMenuDetail(menu);
                return(await Task.FromResult(taskInfo.ToTaskModuleResponse()));
            }
            //Group  Buy Open Menu
            if (fetchType?.Equals("OpenMenuTaskModule") == true)
            {
                taskInfo.Card = await service.CreateMenu(factory);

                return(await Task.FromResult(taskInfo.ToTaskModuleResponse()));
            }
            // Customized Card
            if (fetchType?.Equals("Customized") == true)
            {
                var TenantId = turnContext.Activity.GetChannelData <TeamsChannelData>()?.Tenant?.Id;
                TaskInfo.Card = _menuOrderService.CreateMenuOrderAttachment(TenantId);
                return(await Task.FromResult(TaskInfo.ToTaskModuleResponse()));
            }
            else if (fetchType?.Equals("GetCustomizedMenu") == true)
            {
                taskInfo.Card = await _menuOrderService.CreateMenu(factory);

                return(await Task.FromResult(taskInfo.ToTaskModuleResponse()));
            }
            //家寶
            if (fetchType?.Equals("GetStore") == true)
            {
                taskInfo.Card = await new GetStoreList().CreateStoresModule(factory, null);
                return(await Task.FromResult(taskInfo.ToTaskModuleResponse()));
            }
            else if (fetchType.Equals("reserveStore"))
            {
                taskInfo.Card = await new GetStoreList().CreateStoresModule(factory, "reserveStore");
                return(await Task.FromResult(taskInfo.ToTaskModuleResponse()));
            }
            //育銨
            else if (fetchType?.Equals("GetChosenFoodFromMenuData") == true)
            {
                TaskInfo.Card = new CreateCardService2().GetChosenFoodFromMenuModule(factory);
                service.SetTaskInfo(TaskInfo, TaskModuleUIConstants.ChosenData);
                return(await Task.FromResult(TaskInfo.ToTaskModuleResponse()));
            }
            else if (fetchType?.Equals("GetResultTotalFromModule") == true)
            {
                TaskInfo.Card = new CreateCardService2().GetResultTotalFromMenuModule(factory);
                service.SetTaskInfo(TaskInfo, TaskModuleUIConstants.ChosenData);
                return(await Task.FromResult(TaskInfo.ToTaskModuleResponse()));
            }
            else
            {
                taskInfo.Card = service.GetCustomizedModification(factory);
                service.SetTaskInfo(taskInfo, TaskModuleUIConstants.UpdateMenu);
                return(await Task.FromResult(taskInfo.ToTaskModuleResponse()));
            }
        }
        protected override async Task <TaskModuleResponse> OnTeamsTaskModuleSubmitAsync(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken)
        {
            var factory   = new AdaptiveCardDataFactory(turnContext, taskModuleRequest);
            var fetchType = factory.GetCardActionType();

            if (fetchType?.Equals("ResultStoreCard") == true)
            {
                //create group buy card
                var orderId = Guid.NewGuid().ToString();
                var data    = factory.GetGroupBuyCard(orderId);
                _orderService.CreateOrder(orderId, turnContext.Activity.ChannelId, data.StoreName);
                var cardService = new CreateCardService2();
                await turnContext.SendActivityAsync(MessageFactory.Attachment(cardService.GetStore(data)));

                //create scheduler
                var services = await SchedulerFactory.GetAllSchedulers();

                var scheduler = new ScheduleCreator(services[0], turnContext.Activity.From.Id, orderId);
                var dueTime   = DateTime.Parse(data.DueTime);
                scheduler.CreateSingleGroupBuy(dueTime);
                AddConversationReference(turnContext.Activity as Activity);

                return(null);
            }
            if (fetchType?.Equals("FetchSelectedFoods") == true)
            {
                var card = new CreateCardService2().GetChosenFoodFromMenu(factory);

                if (card.Name?.Contains("error") == true)
                {
                    var taskInfo = new TaskModuleTaskInfo();
                    taskInfo.Card = card;
                    return(await Task.FromResult(taskInfo.ToTaskModuleResponse()));
                }
                else
                {
                    await turnContext.SendActivityAsync(MessageFactory.Attachment(card));

                    new CreateCardService2().GetChosenFoodFromMenuCreateOrderDetail(factory, turnContext.Activity.From.Id);
                    return(null);
                }
            }
            else if (fetchType?.Equals("GetCustomizedStore") == true)
            {
                //get order data
                var data = factory.GetCardData <StoreOrderDuetime>();
                data.DueTime = JObject.FromObject(factory.Request.Data).GetValue("DueTime").ToString();
                data.OrderID = Guid.NewGuid().ToString();

                //create an order and group-buy card
                _orderService.CreateOrder(data.OrderID, turnContext.Activity.ChannelId, data.StoreName);
                await turnContext.SendActivityAsync(MessageFactory.Attachment(_menuOrderService.GetStore(factory, data.OrderID)));

                //create scheduler
                var services = await SchedulerFactory.GetAllSchedulers();

                var scheduler = new ScheduleCreator(services[0], turnContext.Activity.From.Id, data.OrderID);
                var dueTime   = DateTime.Parse(data.DueTime);
                scheduler.CreateSingleGroupBuy(dueTime);
                AddConversationReference(turnContext.Activity as Activity);
                return(null);
            }
            //ting 按下按鈕傳資料到data
            else if (fetchType?.Equals("GetCustomizedMenu") == true)
            {
                var teamsId = turnContext.Activity.GetChannelData <TeamsChannelData>()?.Tenant?.Id;
                var menu    = _menuService.CreateMenu(factory, teamsId);
                if (menu == null)
                {
                    await turnContext.SendActivityAsync(MessageFactory.Text("Please create your store first!"));
                }
                else
                {
                    _menuService.CreateMenuDetail(factory, menu.MenuId);
                    await turnContext.SendActivityAsync(MessageFactory.Text("Create Successfully!"));

                    var NewId          = factory.GetCardData <StoreInfoData>().Name;
                    var CustomMenucard = _customMenuService.CallCustomeCard(NewId);
                    var activity       = MessageFactory.Attachment(CustomMenucard);
                    activity.Id = NewId; //指定要更新的activity
                    await turnContext.UpdateActivityAsync(activity, cancellationToken);
                }
                return(null);
            }
            else if (fetchType?.Equals("GetCustomizedMenuDetail") == true)
            {
                var menu = factory.GetCardData <StoreInfoData>().Guid;
                _menuService.CreateMenuDetail(factory, Guid.Parse(menu));
                await turnContext.SendActivityAsync(MessageFactory.Text("Create Successfully!"));

                return(null);
            }
            else if (fetchType?.Equals("reserveStore") == true)
            {
                var orderId = Guid.NewGuid().ToString();
                var data    = factory.GetGroupBuyCard(orderId);
                turnContext.Activity.Value = JsonConvert.SerializeObject(data);
                turnContext.Activity.Type  = "message";
                await Dialog.RunAsync(turnContext, ConversationState.CreateProperty <DialogState>(nameof(DialogState)), cancellationToken);

                return(null);
            }
            //育銨
            else
            {
                var TaskInfo = new TaskModuleTaskInfo();
                TaskInfo.Card = new CreateCardService2().GetResultCustomizedModification(factory);
                new CreateCardService2().SetTaskInfo(TaskInfo, TaskModuleUIConstants.UpdateMenu);
                return(await Task.FromResult(TaskInfo.ToTaskModuleResponse()));
            }
        }