public static ITemplateAction ParseTemplateAction(dynamic dynamicObject) { var type = (TemplateActionType)System.Enum.Parse(typeof(TemplateActionType), (string)dynamicObject?.type, true); return(type switch { TemplateActionType.Message => MessageTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Uri => UriTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Postback => PostbackTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Datetimepicker => DateTimePickerTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Camera => CameraTemplateAction.CreateFrom(dynamicObject), TemplateActionType.CameraRoll => CameraRollTemplateAction.CreateFrom(dynamicObject), TemplateActionType.Location => LocationTemplateAction.CreateFrom(dynamicObject), _ => null, });
public static ITemplateAction ParseTemplateAction(dynamic dynamicObject) { var type = (TemplateActionType)System.Enum.Parse(typeof(TemplateActionType), (string)dynamicObject?.type, true); switch (type) { case TemplateActionType.Message: return(MessageTemplateAction.CreateFrom(dynamicObject)); case TemplateActionType.Uri: return(UriTemplateAction.CreateFrom(dynamicObject)); case TemplateActionType.Postback: return(PostbackTemplateAction.CreateFrom(dynamicObject)); case TemplateActionType.Datetimepicker: return(DateTimePickerTemplateAction.CreateFrom(dynamicObject)); default: return(null); } }
private async Task HandleTextAsync(string replyToken, string userMessage, string userId) { userMessage = userMessage.ToLower().Replace(" ", ""); ISendMessage replyMessage = null; if (userMessage == "buttons") { replyMessage = new TemplateMessage("Button Template", new ButtonsTemplate(text: "ButtonsTemplate", title: "Click Buttons.", actions: new List <ITemplateAction> { new MessageTemplateAction("Message Label", "sample data"), //new PostbackTemplateAction("Postback Label", "sample data", "sample data"), new PostbackTemplateAction("Postback Label", "sample data"), new UriTemplateAction("Uri Label", "https://github.com/kenakamu") })); } else if (userMessage == "confirm") { replyMessage = new TemplateMessage("Confirm Template", new ConfirmTemplate("ConfirmTemplate", new List <ITemplateAction> { new MessageTemplateAction("Yes", "Yes"), new MessageTemplateAction("No", "No") })); } else if (userMessage == "carousel") { List <ITemplateAction> actions1 = new List <ITemplateAction>(); List <ITemplateAction> actions2 = new List <ITemplateAction>(); // Add actions. actions1.Add(new MessageTemplateAction("Message Label", "sample data")); actions1.Add(new PostbackTemplateAction("Postback Label", "sample data", "sample data")); actions1.Add(new UriTemplateAction("Uri Label", "https://github.com/kenakamu")); // Add datetime picker actions actions2.Add(new DateTimePickerTemplateAction("DateTime Picker", "DateTime", DateTimePickerMode.Datetime, "2017-07-21T13:00", null, null)); actions2.Add(new DateTimePickerTemplateAction("Date Picker", "Date", DateTimePickerMode.Date, "2017-07-21", null, null)); actions2.Add(new DateTimePickerTemplateAction("Time Picker", "Time", DateTimePickerMode.Time, "13:00", null, null)); replyMessage = new TemplateMessage("Button Template", new CarouselTemplate(new List <CarouselColumn> { new CarouselColumn("Casousel 1 Text", "https://github.com/apple-touch-icon.png", "Casousel 1 Title", actions1), new CarouselColumn("Casousel 1 Text", "https://github.com/apple-touch-icon.png", "Casousel 1 Title", actions2) })); } else if (userMessage == "imagecarousel") { UriTemplateAction action = new UriTemplateAction("Uri Label", "https://github.com/namhoaingo"); replyMessage = new TemplateMessage("ImageCarouselTemplate", new ImageCarouselTemplate(new List <ImageCarouselColumn> { new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action) })); } else if (userMessage == "imagemap") { replyMessage = new ImagemapMessage("https://d412efff.ngrok.io/api/image/DeathStar2", "Image has some problem to load", new ImagemapSize(1040, 1040), new List <IImagemapAction> { new UriImagemapAction( new ImagemapArea(0, 0, 520, 1040), "https://24aa4e3a.ngrok.io/account/Signin/" + userId), new MessageImagemapAction( new ImagemapArea(520, 0, 520, 1040), "https://www.diffnow.com/"), } ); } else if (userMessage == "addrichmenu") { throw new NotImplementedException(); } else if (userMessage == "deleterichmenu") { // Get Rich Menu for the user var richMenuId = await messagingClient.GetRichMenuIdOfUserAsync(userId); await messagingClient.UnLinkRichMenuFromUserAsync(userId); await messagingClient.DeleteRichMenuAsync(richMenuId); replyMessage = new TextMessage("Rich menu deleted"); } else if (userMessage == "deleteallrichmenu") { // Get Rich Menu for the user var richMenuList = await messagingClient.GetRichMenuListAsync(); foreach (var richMenu in richMenuList) { await messagingClient.DeleteRichMenuAsync(richMenu.RichMenuId); } replyMessage = new TextMessage("All rich menu added"); } else if (userMessage == "hello,world") { return; } else { //replyMessage = new TextMessage("https://d412efff.ngrok.io/Assets/DeathStar2.jpg"); return; } await messagingClient.ReplyMessageAsync(replyToken, new List <ISendMessage> { replyMessage }); }
private async Task HandleTextAsync(string replyToken, string userMessage, string userId) { userMessage = userMessage.ToLower().Replace(" ", ""); ISendMessage replyMessage = null; if (userMessage == "buttons") { replyMessage = new TemplateMessage("Button Template", new ButtonsTemplate(text: "ButtonsTemplate", title: "Click Buttons.", actions: new List <ITemplateAction> { new MessageTemplateAction("Message Label", "sample data"), new PostbackTemplateAction("Postback Label", "sample data", "sample data"), new UriTemplateAction("Uri Label", "https://github.com/kenakamu") })); } else if (userMessage == "confirm") { replyMessage = new TemplateMessage("Confirm Template", new ConfirmTemplate("ConfirmTemplate", new List <ITemplateAction> { new MessageTemplateAction("Yes", "Yes"), new MessageTemplateAction("No", "No") })); } else if (userMessage == "carousel") { List <ITemplateAction> actions1 = new List <ITemplateAction>(); List <ITemplateAction> actions2 = new List <ITemplateAction>(); // Add actions. actions1.Add(new MessageTemplateAction("Message Label", "sample data")); actions1.Add(new PostbackTemplateAction("Postback Label", "sample data", "sample data")); actions1.Add(new UriTemplateAction("Uri Label", "https://github.com/kenakamu")); // Add datetime picker actions actions2.Add(new DateTimePickerTemplateAction("DateTime Picker", "DateTime", DateTimePickerMode.Datetime, "2017-07-21T13:00", null, null)); actions2.Add(new DateTimePickerTemplateAction("Date Picker", "Date", DateTimePickerMode.Date, "2017-07-21", null, null)); actions2.Add(new DateTimePickerTemplateAction("Time Picker", "Time", DateTimePickerMode.Time, "13:00", null, null)); replyMessage = new TemplateMessage("Button Template", new CarouselTemplate(new List <CarouselColumn> { new CarouselColumn("Casousel 1 Text", "https://github.com/apple-touch-icon.png", "Casousel 1 Title", actions1), new CarouselColumn("Casousel 1 Text", "https://github.com/apple-touch-icon.png", "Casousel 1 Title", actions2) })); } else if (userMessage == "imagecarousel") { UriTemplateAction action = new UriTemplateAction("Uri Label", "https://github.com/kenakamu"); replyMessage = new TemplateMessage("ImageCarouselTemplate", new ImageCarouselTemplate(new List <ImageCarouselColumn> { new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action) })); } else if (userMessage == "imagemap") { var url = HttpContext.Current.Request.Url; var imageUrl = $"{url.Scheme}://{url.Host}:{url.Port}/images/githubicon"; replyMessage = new ImagemapMessage( imageUrl, "GitHub", new ImagemapSize(1040, 1040), new List <IImagemapAction> { new UriImagemapAction(new ImagemapArea(0, 0, 520, 1040), "http://github.com"), new MessageImagemapAction(new ImagemapArea(520, 0, 520, 1040), "I love LINE!") }); } else if (userMessage == "addrichmenu") { // Create Rich Menu RichMenu richMenu = new RichMenu() { Size = ImagemapSize.RichMenuLong, Selected = false, Name = "nice richmenu", ChatBarText = "touch me", Areas = new List <ActionArea>() { new ActionArea() { Bounds = new ImagemapArea(0, 0, ImagemapSize.RichMenuLong.Width, ImagemapSize.RichMenuLong.Height), Action = new PostbackTemplateAction("ButtonA", "Menu A", "Menu A") } } }; var richMenuId = await messagingClient.CreateRichMenuAsync(richMenu); var image = new MemoryStream(File.ReadAllBytes(HttpContext.Current.Server.MapPath(@"~\Images\richmenu.PNG"))); // Upload Image await messagingClient.UploadRichMenuPngImageAsync(image, richMenuId); // Link to user await messagingClient.LinkRichMenuToUserAsync(userId, richMenuId); replyMessage = new TextMessage("Rich menu added"); } else if (userMessage == "deleterichmenu") { // Get Rich Menu for the user var richMenuId = await messagingClient.GetRichMenuIdOfUserAsync(userId); await messagingClient.UnLinkRichMenuFromUserAsync(userId); await messagingClient.DeleteRichMenuAsync(richMenuId); replyMessage = new TextMessage("Rich menu deleted"); } else if (userMessage == "deleteallrichmenu") { // Get Rich Menu for the user var richMenuList = await messagingClient.GetRichMenuListAsync(); foreach (var richMenu in richMenuList) { await messagingClient.DeleteRichMenuAsync(richMenu.RichMenuId); } replyMessage = new TextMessage("All rich menu added"); } else if (userMessage == "quickreply") { var quickReply = new QuickReply(); quickReply.Items.Add(new QuickReplyButtonObject( new PostbackTemplateAction("postback", "postback_data", "postback display", true), "https://github.com/apple-touch-icon.png")); quickReply.Items.Add(new QuickReplyButtonObject( new MessageTemplateAction("message", "message"), "https://github.com/apple-touch-icon.png")); quickReply.Items.Add(new QuickReplyButtonObject( new DateTimePickerTemplateAction("timepicker", "DATETIME", DateTimePickerMode.Datetime, DateTime.Now), "https://github.com/apple-touch-icon.png")); quickReply.Items.Add(new QuickReplyButtonObject( new CameraTemplateAction("Launch Camera"))); quickReply.Items.Add(new QuickReplyButtonObject( new CameraRollTemplateAction("Launch Camera Roll"))); quickReply.Items.Add(new QuickReplyButtonObject( new LocationTemplateAction("Launch Location"))); replyMessage = new TextMessage("Select menu from Quick Reply", quickReply); } else { replyMessage = new TextMessage(userMessage); } await messagingClient.ReplyMessageAsync(replyToken, new List <ISendMessage> { replyMessage }); }
private async Task HandleTextAsync(string replyToken, string userMessage, string userId) { await talkLog.UpdateAsync(new TalkLog { MessageType = Enum.GetName(typeof(EventMessageType), EventMessageType.Text), ReplyToken = replyToken, UserId = userId, Message = userMessage }); userMessage = userMessage.ToLower().Replace(" ", ""); ISendMessage replyMessage = null; if (userMessage == "buttons") { replyMessage = new TemplateMessage("Button Template", new ButtonsTemplate(text: "ButtonsTemplate", title: "Click Buttons.", //thumbnailImageUrl: "https://linetestbot123.blob.core.windows.net/linebotcontainer/User_U21d2cd1795be4caa1a32d069fe7b323f/7015056697532.jpeg", actions: new List <ITemplateAction> { new MessageTemplateAction("Message Label", "sample data"), new PostbackTemplateAction("Postback Label", "sample data", "sample data"), new UriTemplateAction("Uri Label", "https://github.com/kenakamu") })); } else if (userMessage == "confirm") { replyMessage = new TemplateMessage("Confirm Template", new ConfirmTemplate("ConfirmTemplate", new List <ITemplateAction> { new MessageTemplateAction("Yes", "Yes"), new MessageTemplateAction("No", "No") })); } else if (userMessage == "carousel") { List <ITemplateAction> actions1 = new List <ITemplateAction>(); List <ITemplateAction> actions2 = new List <ITemplateAction>(); List <ITemplateAction> actions3 = new List <ITemplateAction>(); // Add actions. actions1.Add(new MessageTemplateAction("Message Label", "sample data")); actions1.Add(new PostbackTemplateAction("Postback Label", "sample data", "sample data")); actions1.Add(new UriTemplateAction("Uri Label", "https://github.com/kenakamu")); actions2.Add(new MessageTemplateAction("Message Label", "sample data")); actions2.Add(new PostbackTemplateAction("Postback Label", "sample data", "sample data")); actions2.Add(new UriTemplateAction("Uri Label", "https://github.com/kenakamu")); // Add datetime picker actions actions3.Add(new DateTimePickerTemplateAction("DateTime Picker", "DateTime", DateTimePickerMode.Datetime, "2017-07-21T13:00", null, null)); actions3.Add(new DateTimePickerTemplateAction("Date Picker", "Date", DateTimePickerMode.Date, "2017-07-21", null, null)); actions3.Add(new DateTimePickerTemplateAction("Time Picker", "Time", DateTimePickerMode.Time, "13:00", null, null)); replyMessage = new TemplateMessage("Button Template", new CarouselTemplate(new List <CarouselColumn> { new CarouselColumn("Casousel 1 Text", "https://github.com/apple-touch-icon.png", "Casousel 1 Title", actions1), new CarouselColumn("Casousel 2 Text", "https://github.com/apple-touch-icon.png", "Casousel 2 Title", actions2), new CarouselColumn("Casousel 3 Text", "https://github.com/apple-touch-icon.png", "Casousel 3 Title", actions3) })); } else if (userMessage == "imagecarousel") { UriTemplateAction action = new UriTemplateAction("Uri Label", "https://github.com/kenakamu"); replyMessage = new TemplateMessage("ImageCarouselTemplate", new ImageCarouselTemplate(new List <ImageCarouselColumn> { new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action), new ImageCarouselColumn("https://github.com/apple-touch-icon.png", action) })); } else if (userMessage == "imagemap") { var imageUrl = "https://raw.githubusercontent.com/kenakamu/Test/master/Images/GitHubIcon"; replyMessage = new ImagemapMessage( imageUrl, "GitHub", new ImagemapSize(1040, 1040), new List <IImagemapAction> { new UriImagemapAction(new ImagemapArea(0, 0, 520, 1040), "http://github.com"), new MessageImagemapAction(new ImagemapArea(520, 0, 520, 1040), "I love LINE!") }); } else if (userMessage == "addrichmenu") { // Create Rich Menu RichMenu richMenu = new RichMenu() { Size = ImagemapSize.RichMenuLong, Selected = false, Name = "nice richmenu", ChatBarText = "touch me", Areas = new List <ActionArea>() { new ActionArea() { Bounds = new ImagemapArea(0, 0, ImagemapSize.RichMenuLong.Width, ImagemapSize.RichMenuLong.Height), Action = new PostbackTemplateAction("ButtonA", "Menu A", "Menu A") } } }; var richMenuId = await messagingClient.CreateRichMenuAsync(richMenu); var image = new MemoryStream(File.ReadAllBytes(@"Images\richmenu.PNG")); // Upload Image await messagingClient.UploadRichMenuPngImageAsync(image, richMenuId); // Link to user await messagingClient.LinkRichMenuToUserAsync(userId, richMenuId); replyMessage = new TextMessage("Rich menu added"); } else if (userMessage == "deleterichmenu") { // Get Rich Menu for the user var richMenuId = await messagingClient.GetRichMenuIdOfUserAsync(userId); await messagingClient.UnLinkRichMenuFromUserAsync(userId); await messagingClient.DeleteRichMenuAsync(richMenuId); replyMessage = new TextMessage("Rich menu deleted"); } else if (userMessage == "deleteallrichmenu") { // Get Rich Menu for the user var richMenuList = await messagingClient.GetRichMenuListAsync(); foreach (var richMenu in richMenuList) { await messagingClient.DeleteRichMenuAsync(richMenu.RichMenuId); } replyMessage = new TextMessage("All rich menu added"); } else { replyMessage = new TextMessage($"You said: {userMessage}"); } await messagingClient.ReplyMessageAsync(replyToken, new List <ISendMessage> { replyMessage }); }
private async Task Messaging(MessageEvent ev) { if (!(ev.Message is TextEventMessage msg)) { return; } if (msg.Text.Contains("ルール") && msg.Text.Contains("FAQ")) { var messages = new ISendMessage[] { new FlexMessage("ルール", FlexMessageText.Flex_Rule(), null, sender_admin), new FlexMessage("FAQ", FlexMessageText.Flex_Faq(), null, sender_admin) }; await lineMessagingClient.ReplyMessageAsync(ev.ReplyToken, messages); } else if (msg.Text.Contains("ルール")) { var messages = new ISendMessage[] { new FlexMessage("ルール", FlexMessageText.Flex_Rule(), null, sender_admin) }; await lineMessagingClient.ReplyMessageAsync(ev.ReplyToken, messages); } else if (msg.Text.Contains("FAQ")) { var messages = new ISendMessage[] { new FlexMessage("FAQ", FlexMessageText.Flex_Faq(), null, sender_admin) }; await lineMessagingClient.ReplyMessageAsync(ev.ReplyToken, messages); } else if (msg.Text == "継続確認イベント" && Admin_Users.Contains(ev.Source.UserId)) { var messages = new ISendMessage[] { new FlexMessage("継続確認イベント", FlexMessageText.Flex_Check_Continue(), null, sender_admin) }; await lineMessagingClient.ReplyMessageAsync(ev.ReplyToken, messages); } else if (msg.Text == "継続確認リセット" && Admin_Users.Contains(ev.Source.UserId)) { await database.MemberCheckReset(); await lineMessagingClient.ReplyTextAsync(ev.ReplyToken, "リセットしました", false, null, sender_admin); } else if (msg.Text == "継続希望メンバー" && Admin_Users.Contains(ev.Source.UserId)) { var member_list = await database.GetMember("SELECT c.newername FROM c Where c.check != null and c.leavedDate = null ORDER BY c.joinedDate"); string member = "希望済のメンバー"; foreach (var item in member_list) { member += "\n" + item.newername; } await lineMessagingClient.ReplyTextAsync(ev.ReplyToken, member, false, null, sender_admin); } else if (msg.Text == "継続希望旧メンバー" && Admin_Users.Contains(ev.Source.UserId)) { var member_list = await database.GetMember("SELECT c.name FROM c Where c.check != null and c.leavedDate = null ORDER BY c.joinedDate"); string member = "希望済のメンバー"; foreach (var item in member_list) { member += "\n" + item.name; } await lineMessagingClient.ReplyTextAsync(ev.ReplyToken, member, false, null, sender_admin); } else if (msg.Text == "継続未希望メンバー" && Admin_Users.Contains(ev.Source.UserId)) { var member_list = await database.GetMember("SELECT c.newername FROM c Where c.check = null and c.leavedDate = null ORDER BY c.joinedDate"); string member = "未希望のメンバー"; foreach (var item in member_list) { member += "\n" + item.newername; } await lineMessagingClient.ReplyTextAsync(ev.ReplyToken, member, false, null, sender_admin); } else if (msg.Text == "継続未希望旧メンバー" && Admin_Users.Contains(ev.Source.UserId)) { var member_list = await database.GetMember("SELECT c.name FROM c Where c.check = null and c.leavedDate = null ORDER BY c.joinedDate"); string member = "未希望のメンバー"; foreach (var item in member_list) { member += "\n" + item.name; } await lineMessagingClient.ReplyTextAsync(ev.ReplyToken, member, false, null, sender_admin); } else if (msg.Text.Contains("にゃ") || msg.Text.Contains("ニャ")) { var rand = new Random(); var catword = new string[] { "にゃฅ(。•ㅅ•。ฅ)", "(=゚-゚)ノニャーン♪", "(=´∇`=)にゃん", "ฅ(๑•̀ω•́๑)ฅニャンニャンガオー", "ミャー♪ヽ(∇⌒= )( =⌒∇)ノミャー♪", "=^∇^*= にゃお~ん♪" }; await lineMessagingClient.ReplyTextAsync(ev.ReplyToken, catword[rand.Next(0, catword.Length)], false, null, sender_cat); } else if (msg.Text == "Google") { var action = new UriTemplateAction("google", "https://google.com"); var qr = new QuickReply() { Items = new List <QuickReplyButtonObject>() { new QuickReplyButtonObject(action) } }; await lineMessagingClient.ReplyTextAsync(ev.ReplyToken, "hello", false, qr); } }
public async Task HandleTextMessage() { var textMessage = JsonConvert.DeserializeObject <TextMessage>(lineEvent.Message.ToString()); Message replyMessage = null; if (textMessage.Text.ToLower() == "buttons") { List <TemplateAction> actions = new List <TemplateAction>(); actions.Add(new MessageTemplateAction("Message Label", "sample data")); actions.Add(new PostbackTemplateAction("Postback Label", "sample data", "sample data")); actions.Add(new UriTemplateAction("Uri Label", "https://github.com/kenakamu")); ButtonsTemplate buttonsTemplate = new ButtonsTemplate("https://github.com/apple-touch-icon.png", "Sample Title", "Sample Text", actions); replyMessage = new TemplateMessage("Buttons", buttonsTemplate); } else if (textMessage.Text.ToLower() == "confirm") { List <TemplateAction> actions = new List <TemplateAction>(); actions.Add(new MessageTemplateAction("Yes", "yes")); actions.Add(new MessageTemplateAction("No", "no")); ConfirmTemplate confirmTemplate = new ConfirmTemplate("Confirm Test", actions); replyMessage = new TemplateMessage("Confirm", confirmTemplate); } else if (textMessage.Text.ToLower() == "carousel") { List <TemplateColumn> columns = new List <TemplateColumn>(); List <TemplateAction> actions1 = new List <TemplateAction>(); List <TemplateAction> actions2 = new List <TemplateAction>(); // Add actions. actions1.Add(new MessageTemplateAction("Message Label", "sample data")); actions1.Add(new PostbackTemplateAction("Postback Label", "sample data", "sample data")); actions1.Add(new UriTemplateAction("Uri Label", "https://github.com/kenakamu")); // Add datetime picker actions actions2.Add(new DatetimePickerTemplateAction("DateTime Picker", "DateTime", DatetimePickerMode.Datetime, "2017-07-21T13:00")); actions2.Add(new DatetimePickerTemplateAction("Date Picker", "Date", DatetimePickerMode.Date, "2017-07-21")); actions2.Add(new DatetimePickerTemplateAction("Time Picker", "Time", DatetimePickerMode.Time, "13:00")); columns.Add(new TemplateColumn() { Title = "Casousel 1 Title", Text = "Casousel 1 Text", ThumbnailImageUrl = "https://github.com/apple-touch-icon.png", Actions = actions1 }); columns.Add(new TemplateColumn() { Title = "Casousel 2 Title", Text = "Casousel 2 Text", ThumbnailImageUrl = "https://github.com/apple-touch-icon.png", Actions = actions2 }); CarouselTemplate carouselTemplate = new CarouselTemplate(columns); replyMessage = new TemplateMessage("Carousel", carouselTemplate); } else if (textMessage.Text.ToLower() == "imagecarousel") { List <ImageColumn> columns = new List <ImageColumn>(); UriTemplateAction action = new UriTemplateAction("Uri Label", "https://github.com/kenakamu"); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); ImageCarouselTemplate carouselTemplate = new ImageCarouselTemplate(columns); replyMessage = new TemplateMessage("Carousel", carouselTemplate); } else if (textMessage.Text.ToLower() == "imagemap") { var url = HttpContext.Current.Request.Url; var imageUrl = $"{url.Scheme}://{url.Host}:{url.Port}/images/githubicon"; List <ImageMapAction> actions = new List <ImageMapAction>(); actions.Add(new UriImageMapAction("http://github.com", new ImageMapArea(0, 0, 520, 1040))); actions.Add(new MessageImageMapAction("I love LINE!", new ImageMapArea(520, 0, 520, 1040))); replyMessage = new ImageMapMessage(imageUrl, "GitHub", new BaseSize(1040, 1040), actions); } else if (textMessage.Text.ToLower() == "addrichmenu") { // Create Rich Menu RichMenu richMenu = new RichMenu() { Size = new RichMenuSize(1686), Selected = false, Name = "nice richmenu", ChatBarText = "touch me", Areas = new List <RichMenuArea>() { new RichMenuArea() { Action = new PostbackTemplateAction("action=buy&itemid=123"), Bounds = new RichMenuBounds(0, 0, 2500, 1686) } } }; var richMenuId = await lineClient.CreateRichMenu(richMenu); var image = new MemoryStream(File.ReadAllBytes(HttpContext.Current.Server.MapPath(@"~\Images\richmenu.PNG"))); // Upload Image await lineClient.UploadRichMenuImage(richMenuId, image); // Link to user await lineClient.LinkRichMenuToUser(lineEvent.Source.UserId, richMenuId); } else if (textMessage.Text.ToLower() == "deleterichmenu") { // Get Rich Menu for the user var richMenuId = await lineClient.GetRichMenuIdForUser(lineEvent.Source.UserId); await lineClient.UnlinkRichMenuToUser(lineEvent.Source.UserId); await lineClient.DeleteRichMenu(richMenuId); } else if (textMessage.Text.ToLower() == "deleteallrichmenu") { // Get Rich Menu for the user var richMenuList = await lineClient.GetRichMenuList(); foreach (var richMenu in richMenuList) { await lineClient.DeleteRichMenu(richMenu["richMenuId"].ToString()); } } else { replyMessage = new TextMessage(textMessage.Text); } await Reply(replyMessage); }
public async Task HandleTextMessage() { var textMessage = JsonConvert.DeserializeObject <TextMessage>(lineEvent.Message.ToString()); Message replyMessage = null; if (textMessage.Text.ToLower() == "ボタン") { List <TemplateAction> actions = new List <TemplateAction>(); actions.Add(new MessageTemplateAction("Message Label", "sample data")); actions.Add(new PostbackTemplateAction("Postback Label", "sample data", "sample data")); actions.Add(new UriTemplateAction("Uri Label", "https://github.com/kenakamu")); ButtonsTemplate buttonsTemplate = new ButtonsTemplate("https://github.com/apple-touch-icon.png", "Sample Title", "Sample Text", actions); replyMessage = new TemplateMessage("Buttons", buttonsTemplate); } else if (textMessage.Text.ToLower() == "こんにちは")//confirm { List <TemplateAction> actions = new List <TemplateAction>(); actions.Add(new MessageTemplateAction("はい", "yes")); actions.Add(new MessageTemplateAction("いいえ", "no")); ConfirmTemplate confirmTemplate = new ConfirmTemplate("こんにちは!テニスコートを予約しますか?", actions); replyMessage = new TemplateMessage("Confirm", confirmTemplate); //if (confirmTemplate.ToString() == "yes") //{ // confirmFlg = true; // //replyMessage = new TextMessage("一覧を表示します♪"); //} //else //{ // confirmFlg = false; // //replyMessage = new TextMessage("しねーのかよ(# ゚Д゚)"); //} } else if (textMessage.Text.ToLower() == "テニスコート予約したい" || textMessage.Text.ToLower() == "yes") { //replyMessage = new TextMessage("どこのコートを予約しますか?");//最初にメッセを出したかったが動作しない string aobayamaimg = @"~\Images\aobayama.PNG";//青葉山庭球場の画像パスあああああ string tyoumeigaokaimg = @"~\Images\tyoumeigaoka.PNG"; List <TemplateColumn> columns = new List <TemplateColumn>(); List <TemplateAction> actions1 = new List <TemplateAction>(); List <TemplateAction> actions2 = new List <TemplateAction>(); actions1.Add(new UriTemplateAction("HP", "http://www.spf-sendai.jp/sisetsu/moshikomi.html")); actions1.Add(new UriTemplateAction("場所", "https://www.google.com/maps?ll=38.31376,140.83363&z=12&t=m&hl=ja&gl=US&mapclient=embed&cid=9042741886630709754")); actions1.Add(new UriTemplateAction("予約", "https://www.cm2.epss.jp/sendai/web/view/user/homeIndex.html")); columns.Add(new TemplateColumn() { Title = "長命ヶ丘庭球場", Text = "宮城県仙台市泉区長命ケ丘五丁目14", ThumbnailImageUrl = "https://github.com/apple-touch-icon.png", Actions = actions1 }); actions2.Add(new UriTemplateAction("HP", "http://www.spf-sendai.jp/sisetsu/moshikomi.html")); actions2.Add(new UriTemplateAction("場所", "https://www.google.com/maps?ll=38.31376,140.83363&z=12&t=m&hl=ja&gl=US&mapclient=embed&cid=9042741886630709754")); actions2.Add(new UriTemplateAction("予約", "https://www.cm2.epss.jp/sendai/web/view/user/homeIndex.html")); columns.Add(new TemplateColumn() { Title = "青葉山庭球場", Text = "宮城県仙台市青葉区花壇1-1", ThumbnailImageUrl = "https://github.com/apple-touch-icon.png", Actions = actions2 }); //// Add actions. //actions1.Add(new MessageTemplateAction("Message Label", "sample data")); //actions1.Add(new PostbackTemplateAction("Postback Label", "sample data", "sample data")); //actions1.Add(new UriTemplateAction("Uri Label", "https://github.com/kenakamu")); //// Add datetime picker actions //actions2.Add(new DatetimePickerTemplateAction("DateTime Picker", "DateTime", DatetimePickerMode.Datetime, "2017-07-21T13:00")); //actions2.Add(new DatetimePickerTemplateAction("Date Picker", "Date", DatetimePickerMode.Date, "2017-07-21")); //actions2.Add(new DatetimePickerTemplateAction("Time Picker", "Time", DatetimePickerMode.Time, "13:00")); //columns.Add(new TemplateColumn() { Title = "Casousel 1 Title", Text = "Casousel 1 Text", ThumbnailImageUrl = "https://github.com/apple-touch-icon.png", Actions = actions1 }); //columns.Add(new TemplateColumn() { Title = "Casousel 2 Title", Text = "Casousel 2 Text", ThumbnailImageUrl = "https://github.com/apple-touch-icon.png", Actions = actions2 }); CarouselTemplate carouselTemplate = new CarouselTemplate(columns); replyMessage = new TemplateMessage("Carousel", carouselTemplate); } else if (textMessage.Text.ToLower() == "イメージカルーセル")//imagecarousel { List <ImageColumn> columns = new List <ImageColumn>(); UriTemplateAction action = new UriTemplateAction("Uri Label", "https://github.com/kenakamu"); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); columns.Add(new ImageColumn("https://github.com/apple-touch-icon.png", action)); ImageCarouselTemplate carouselTemplate = new ImageCarouselTemplate(columns); replyMessage = new TemplateMessage("Carousel", carouselTemplate); } else if (textMessage.Text.ToLower() == "イメージマップ")//imagemap { var url = HttpContext.Current.Request.Url; var imageUrl = $"{url.Scheme}://{url.Host}:{url.Port}/images/githubicon"; List <ImageMapAction> actions = new List <ImageMapAction>(); actions.Add(new UriImageMapAction("http://github.com", new ImageMapArea(0, 0, 520, 1040))); actions.Add(new MessageImageMapAction("I love LINE!", new ImageMapArea(520, 0, 520, 1040))); replyMessage = new ImageMapMessage(imageUrl, "GitHub", new BaseSize(1040, 1040), actions); } else if (textMessage.Text.ToLower() == "アッドリッチメニュー")//addrichmenu { // Create Rich Menu RichMenu richMenu = new RichMenu() { Size = new RichMenuSize(1686), Selected = false, Name = "nice richmenu", ChatBarText = "touch me", Areas = new List <RichMenuArea>() { new RichMenuArea() { Action = new PostbackTemplateAction("action=buy&itemid=123"), Bounds = new RichMenuBounds(0, 0, 2500, 1686) } } }; var richMenuId = await lineClient.CreateRichMenu(richMenu); var image = new MemoryStream(File.ReadAllBytes(HttpContext.Current.Server.MapPath(@"~\Images\richmenu.PNG"))); // Upload Image await lineClient.UploadRichMenuImage(richMenuId, image); // Link to user await lineClient.LinkRichMenuToUser(lineEvent.Source.UserId, richMenuId); } else if (textMessage.Text.ToLower() == "デリートリッチメニュー")//deleterichmenu { // Get Rich Menu for the user var richMenuId = await lineClient.GetRichMenuIdForUser(lineEvent.Source.UserId); await lineClient.UnlinkRichMenuToUser(lineEvent.Source.UserId); await lineClient.DeleteRichMenu(richMenuId); } else if (textMessage.Text.ToLower() == "デリートオールリッチメニュー")//deleteallrichmenu { // Get Rich Menu for the user var richMenuList = await lineClient.GetRichMenuList(); foreach (var richMenu in richMenuList) { await lineClient.DeleteRichMenu(richMenu["richMenuId"].ToString()); } } else//どの条件にも合わない物はオウム返し { //replyMessage = new TextMessage(textMessage.Text); } await Reply(replyMessage); }
public static BubbleContainer ToBubbleContainer(this ItemLookUpResult.Item item) { string linkUrl = Aladin.Utils.UnescapeUrl(item.link); string coverUrl = item.hqCover; UriTemplateAction linkAction = new UriTemplateAction("상품 페이지로 이동", linkUrl); // 이미지 ImageComponent hero = new ImageComponent(coverUrl); hero.Size = ComponentSize.Full; hero.AspectMode = AspectMode.Cover; hero.AspectRatio = AspectRatio._151_1; // 잘려도 여러개(그래봐야 2개까지지만) 나오는게 낫다고 의견이 나와서 hero.Action = linkAction; // 바디 // 부제가 있으면 따로 처리를 해준다. string titleStr = item.title; string subTitleStr = item.subInfo.subTitle; if (!string.IsNullOrEmpty(subTitleStr)) { int index = titleStr.IndexOf(subTitleStr); if (index >= 0) { titleStr = titleStr.Substring(0, index - 3); } } // 성인물이면 추가로 표시를 해준다. if (item.adult) { string emoji = char.ConvertFromUtf32(0x1f51e); titleStr = emoji + " " + titleStr; } TextComponent title = new TextComponent(titleStr); title.Size = ComponentSize.Lg; title.Weight = Weight.Bold; TextComponent subTitle = null; if (!string.IsNullOrEmpty(subTitleStr)) { subTitle = new TextComponent(subTitleStr); subTitle.Size = ComponentSize.Sm; } TextComponent author = new TextComponent(item.author); author.Size = ComponentSize.Sm; author.Margin = Spacing.Sm; TextComponent publisher = new TextComponent(item.publisher); publisher.Size = ComponentSize.Sm; TextComponent pubDate = new TextComponent(item.pubDate); pubDate.Size = ComponentSize.Sm; TextComponent priceStandard = new TextComponent($"정가 {item.priceStandard}원 / "); priceStandard.Size = ComponentSize.Sm; priceStandard.Flex = 0; TextComponent priceSales = new TextComponent($"판매가 {item.priceSales}원 "); priceSales.Size = ComponentSize.Sm; priceSales.Weight = Weight.Bold; priceSales.Flex = 0; BoxComponent price = new BoxComponent(BoxLayout.Baseline); price.Contents.Add(priceStandard); price.Contents.Add(priceSales); BoxComponent body = new BoxComponent(BoxLayout.Vertical); body.Contents.Add(title); if (subTitle != null) { body.Contents.Add(subTitle); } body.Contents.Add(author); body.Contents.Add(publisher); body.Contents.Add(pubDate); body.Contents.Add(price); body.Action = linkAction; BubbleContainer container = new BubbleContainer(); container.Hero = hero; container.Body = body; return(container); }
public async Task <ActionResult> Send(int id) { ISendMessage replyMessage = null; var caregiverDay = db.CaregiverDays.Find(id); if (caregiverDay != null) { string title = caregiverDay.CareTitle; if (title.IndexOf("快樂照片") != -1) { var imageUrl = "https://fileuploadsinmvc.azurewebsites.net"; List <ImageCarouselColumn> happyImageCarouselColumns = new List <ImageCarouselColumn>(); int i = 1; var happyImages = db.CareElderImages.ToArray(); foreach (var item in happyImages) { if (i > 5) { break; } UriTemplateAction action = new UriTemplateAction("快樂照片" + i, imageUrl + item.ImageUrl); happyImageCarouselColumns.Add(new ImageCarouselColumn(imageUrl + item.ImageUrl, action)); i++; } replyMessage = new TemplateMessage("ImageCarouselTemplate", new ImageCarouselTemplate(happyImageCarouselColumns)); await PushLineMessage(replyMessage); } else if (title.IndexOf("照護紀錄") != -1) { replyMessage = new TemplateMessage(title, new ButtonsTemplate(text: "您覺得最近一次照護活動如何?", title: title, actions: new List <ITemplateAction> { new PostbackTemplateAction("很好", "good"), new PostbackTemplateAction("一般", "normal"), new PostbackTemplateAction("再改善", "improve") })); await PushLineMessage(replyMessage); } else if (title.IndexOf("照護設定") != -1) { replyMessage = new TemplateMessage(title, new ButtonsTemplate(text: "修改設定", title: title, thumbnailImageUrl: "https://fileuploadsinmvc.azurewebsites.net/Content/Images/heart.png", actions: new List <ITemplateAction> { new UriTemplateAction("設定 configure", "https://fileuploadsinmvc.azurewebsites.net/CaregiverDays/CareIndex") })); await PushLineMessage(replyMessage); } else { var imageUrl = "https://fileuploadsinmvc.azurewebsites.net/Content/Images"; List <CarouselItem> carouselColumns = new List <CarouselItem>(); if (title.IndexOf("散步地圖") != -1) { string title1 = caregiverDay.CareTitle; string text1 = caregiverDay.CareDateTime + " " + caregiverDay.CareText; string imageUrl1 = imageUrl + caregiverDay.CareImageUrl; string url1 = caregiverDay.CareUrl; if (string.IsNullOrEmpty(url1)) { url1 = "https://fileuploadsinmvc.azurewebsites.net/uploads/5cfec41b-94f0-420a-a810-3cfdd9602593.jpeg"; } string title2 = caregiverDay.CareTitle; string text2 = caregiverDay.CareDateTime + " " + "仙岩公園"; string imageUrl2 = imageUrl + caregiverDay.CareImageUrl; string url2 = "http://fileuploadsinmvc.azurewebsites.net/CaregiverDays/RouteMap?lat=24.998244&lng=121.549549"; List <ITemplateAction> actions1 = new List <ITemplateAction>(); actions1.Add(new UriTemplateAction("全長 2 公里", url1)); List <ITemplateAction> actions2 = new List <ITemplateAction>(); actions2.Add(new UriTemplateAction("全長 3.5 公里", url2)); carouselColumns.Add(new CarouselItem { Title = title1, ImageUrl = imageUrl1, Actions = actions1, Text = text1 }); carouselColumns.Add(new CarouselItem { Title = title2, ImageUrl = imageUrl2, Actions = actions2, Text = text2 }); replyMessage = new TemplateMessage("Caregiver", GetCarouselTemplate(carouselColumns)); await PushLineMessage(replyMessage); } else if (title.IndexOf("用藥安全") != -1) { string title1 = caregiverDay.CareTitle + "/提醒"; string text1 = caregiverDay.CareDateTime + " 現在請服用 " + caregiverDay.CareText; string imageUrl1 = imageUrl + caregiverDay.CareImageUrl; List <ITemplateAction> actions1 = new List <ITemplateAction>(); actions1.Add(new PostbackTemplateAction("有服用", "Yes")); actions1.Add(new PostbackTemplateAction("未服用", "No")); carouselColumns.Add(new CarouselItem { Title = title1, ImageUrl = imageUrl1, Actions = actions1, Text = text1 }); replyMessage = new TemplateMessage("Caregiver", GetCarouselTemplate(carouselColumns)); await PushLineMessage(replyMessage); } else /* 照護安全、檢視報告 */ { string title1 = caregiverDay.CareTitle; string text1 = caregiverDay.CareDateTime + " " + caregiverDay.CareText; string imageUrl1 = imageUrl + caregiverDay.CareImageUrl; string url1 = caregiverDay.CareUrl; if (string.IsNullOrEmpty(url1)) { url1 = "https://fileuploadsinmvc.azurewebsites.net/uploads/5cfec41b-94f0-420a-a810-3cfdd9602593.jpeg"; } List <ITemplateAction> actions1 = new List <ITemplateAction>(); actions1.Add(new UriTemplateAction("步驟 steps", url1)); carouselColumns.Add(new CarouselItem { Title = title1, ImageUrl = imageUrl1, Actions = actions1, Text = text1 }); replyMessage = new TemplateMessage("Caregiver", GetCarouselTemplate(carouselColumns)); await PushLineMessage(replyMessage); /* 檢視報告要再送 audio message */ if (title1.IndexOf("檢視報告") != -1) { string audioUrl = "https://fileuploadsinmvc.azurewebsites.net"; string aUrl = audioUrl + "/Content/Audio/report_audio.m4a"; replyMessage = new AudioMessage(originalContentUrl: aUrl, duration: 11000); await PushLineMessage(replyMessage); } } } /* 送文字提醒 */ if (title.IndexOf("用藥安全") != -1) { string note = ""; string medicine = "LOVASTATIN"; var careElderMedicines = db.CareElderMedicines2.Where(c => c.EName.StartsWith(medicine)); if (careElderMedicines.Count() > 0) { string pc = careElderMedicines.First().PackageCode; if (!string.IsNullOrEmpty(pc)) { note = "高血脂藥(Lovastatin)" + pc + "Hindari makanan grapefruit, itu akan menghambat metabolisme obat-obatan di hati, yang mengarah ke penurunan metabolisme obat.Dosis kumulatif akan meningkatkan kemanjuran dan bahkan menyebabkan efek samping atau toksisitas."; } } await PushLineMessage(new TextMessage(note)); } else if (title.IndexOf("照護安全") != -1) { string note = "進行口腔清潔前後,請記得洗手喔!避免相互感染,保護自己也保護被看護人喔!Sebelum dan sesudah membersihkan rongga mulut ingat untuk mencuci tangan! Agar tidak saling menular, melindungi diri sendiri sama dengan melindungi pasien!"; await PushLineMessage(new TextMessage(note)); } } return(RedirectToAction("Index", "CaregiverDays", new { message = "OK" })); }
public (RichMenu newRichMenu, RenderTargetBitmap bitmap) RenderingRichMenu() { var body = this.FindName("menu_body") as UIElement; if (body == null) { return(null, null); } var areas = new List <ActionArea>(); foreach (var area in Enumerable.Range(1, 20).Select(n => "area_" + n)) { var areaObj = this.FindName(area) as UIElement; if (areaObj == null) { continue; } var menuAction = RichMenuProperties.GetAction(areaObj); ITemplateAction action = null; switch (menuAction.Type) { case TemplateActionType.Message: action = new MessageTemplateAction(menuAction.Label, menuAction.Text); break; case TemplateActionType.Postback: action = new PostbackTemplateAction(menuAction.Label, menuAction.Data, menuAction.Text); break; case TemplateActionType.Uri: action = new UriTemplateAction(menuAction.Label, menuAction.Uri); break; case TemplateActionType.Datetimepicker: action = new DateTimePickerTemplateAction(menuAction.Label, menuAction.Data, menuAction.DateTimeMode, menuAction.initialDateTime, menuAction.minDateTime, menuAction.maxDateTime); break; } if (action == null) { continue; } ; var topLeft = areaObj.TransformToVisual(body).Transform(new Point(0, 0)); areas.Add(new ActionArea() { Bounds = new ImageArea( (int)topLeft.X, (int)topLeft.Y, (int)areaObj.RenderSize.Width, (int)areaObj.RenderSize.Height), Action = action }); } var details = RichMenuProperties.GetSettings(body); var menu = new RichMenu() { Name = details.Name, ChatBarText = details.ChatBarText, Selected = details.Selected, Size = new ImageSize((int)body.RenderSize.Width, (int)body.RenderSize.Height), Areas = areas }; var bmp = new RenderTargetBitmap(menu.Size.Width, menu.Size.Height, 96, 96, PixelFormats.Pbgra32); bmp.Render(body); return(menu, bmp); }
// 事件:文字 public async Task HandleTextMessage() { var textMessage = JsonConvert.DeserializeObject <TextMessage>(lineEvent.Message.ToString()); Message replyMessage = null; List <Models.Message> messages = db.Messages.Where(x => x.KeyWord.Contains(textMessage.Text) && x.Event == 5).ToList(); if (messages != null) { Dictionary <int, int> matchMessages = null; List <int> messageIds = null; List <Models.Message> frequentMessages = null; foreach (var message in messages) { string[] keywords = message.KeyWord.Split(','); int count = 0; foreach (var keyword in keywords) { if (textMessage.Text.Contains(keyword)) { matchMessages.Add(message.MessageId, count++); } } } // 排序 var sortMessages = from objDic in matchMessages orderby objDic.Value descending select objDic; foreach (KeyValuePair <int, int> kvp in sortMessages) { messageIds.Add(kvp.Key); } frequentMessages = db.Messages.Where(x => messageIds.Contains(x.MessageId)).ToList(); // 文字 if (frequentMessages.First().Type == 1) { replyMessage = new TextMessage(frequentMessages.First().Text); } // 貼圖 else if (frequentMessages.First().Type == 2) { // https://devdocs.line.me/files/sticker_list.pdf var stickerMessage = JsonConvert.DeserializeObject <StickerMessage>(lineEvent.Message.ToString()); replyMessage = new StickerMessage(frequentMessages.First().STKId, frequentMessages.First().STKPKGId); } // 圖片 else if (frequentMessages.First().Type == 3) { replyMessage = new ImageMessage(frequentMessages.First().ImageUrl, frequentMessages.First().Url); } // 影片 else if (frequentMessages.First().Type == 4) { replyMessage = new ImageMessage(frequentMessages.First().ImageUrl, frequentMessages.First().Url); } // 聲音 else if (frequentMessages.First().Type == 5) { replyMessage = new ImageMessage(frequentMessages.First().ImageUrl, frequentMessages.First().Url); } // 位置 else if (frequentMessages.First().Type == 6) { replyMessage = new LocationMessage( frequentMessages.First().Title, frequentMessages.First().Address, frequentMessages.First().Latitude, frequentMessages.First().Longitude); } // 圖片地圖 else if (frequentMessages.First().Type == 7) { // 待研究 var url = HttpContext.Current.Request.Url; var imageUrl = $"{url.Scheme}://{url.Host}:{url.Port}/images/githubicon"; List <ImageMapAction> actions = new List <ImageMapAction>(); actions.Add(new UriImageMapAction("http://github.com", new ImageMapArea(0, 0, 520, 1040))); actions.Add(new MessageImageMapAction("I love LINE!", new ImageMapArea(520, 0, 520, 1040))); replyMessage = new ImageMapMessage(imageUrl, "GitHub", new BaseSize(1040, 1040), actions); } // 模板:按鈕 else if (frequentMessages.First().Type == 8) { List <TemplateAction> actions = new List <TemplateAction>(); if (frequentMessages.First().Msg != "" || frequentMessages.First().Msg != null) { actions.Add(new MessageTemplateAction("傳送訊息", frequentMessages.First().Msg)); } if (frequentMessages.First().PostBack != "" || frequentMessages.First().PostBack != null) { actions.Add(new PostbackTemplateAction("執行動作", frequentMessages.First().PostBack)); } if (frequentMessages.First().Url != "" || frequentMessages.First().Url != null) { actions.Add(new UriTemplateAction("查看全部", frequentMessages.First().Url)); } ButtonsTemplate buttonsTemplate = new ButtonsTemplate(frequentMessages.First().ImageUrl, frequentMessages.First().Title, frequentMessages.First().Text, actions); replyMessage = new TemplateMessage("Buttons", buttonsTemplate); } // 模板:確認 else if (frequentMessages.First().Type == 9) { List <TemplateAction> actions = new List <TemplateAction>(); actions.Add(new MessageTemplateAction("是", frequentMessages.First().Yes)); actions.Add(new MessageTemplateAction("否", frequentMessages.First().No)); ConfirmTemplate confirmTemplate = new ConfirmTemplate(frequentMessages.First().Title, actions); replyMessage = new TemplateMessage("Confirm", confirmTemplate); } // 模板:輪播 else if (frequentMessages.First().Type == 10) { List <TemplateColumn> columns = new List <TemplateColumn>(); List <TemplateAction> actions = new List <TemplateAction>(); foreach (var message in frequentMessages.Where(x => x.Type == 10)) { actions = null; if (message.Msg != "" || message.Msg != null) { actions.Add(new MessageTemplateAction("傳送訊息", message.Msg)); } if (message.PostBack != "" || message.PostBack != null) { actions.Add(new PostbackTemplateAction("執行動作", message.PostBack)); } if (message.Url != "" || message.Url != null) { actions.Add(new UriTemplateAction("查看全部", message.Url)); } columns.Add(new TemplateColumn() { Title = message.Title, Text = message.Text, ThumbnailImageUrl = message.ImageUrl, Actions = actions }); } CarouselTemplate carouselTemplate = new CarouselTemplate(columns); replyMessage = new TemplateMessage("Carousel", carouselTemplate); } // 模板:圖片輪播 else if (frequentMessages.First().Type == 11) { List <ImageColumn> columns = new List <ImageColumn>(); foreach (var message in frequentMessages.Where(x => x.Type == 11)) { UriTemplateAction action = new UriTemplateAction("查看全部", message.Url); columns.Add(new ImageColumn(message.ImageUrl, action)); } ImageCarouselTemplate carouselTemplate = new ImageCarouselTemplate(columns); replyMessage = new TemplateMessage("Carousel", carouselTemplate); } // 模板:新增豐富菜單 else if (frequentMessages.First().Type == 12) { // Create Rich Menu RichMenu richMenu = new RichMenu() { Size = new RichMenuSize(1686), Selected = false, Name = frequentMessages.First().Title, ChatBarText = "touch me", Areas = new List <RichMenuArea>() { new RichMenuArea() { Action = new PostbackTemplateAction("action=buy&itemid=123"), Bounds = new RichMenuBounds(0, 0, 2500, 1686) } } }; var richMenuId = await lineClient.CreateRichMenu(richMenu); var image = new MemoryStream(File.ReadAllBytes(HttpContext.Current.Server.MapPath(@"~\Images\richmenu.PNG"))); // Upload Image await lineClient.UploadRichMenuImage(richMenuId, image); // Link to user await lineClient.LinkRichMenuToUser(lineEvent.Source.UserId, richMenuId); } // 模板:刪除豐富菜單 else { var richMenuId = await lineClient.GetRichMenuIdForUser(lineEvent.Source.UserId); await lineClient.UnlinkRichMenuToUser(lineEvent.Source.UserId); await lineClient.DeleteRichMenu(richMenuId); } } else { replyMessage = new TextMessage("不好意思!我不懂您的意思..."); } await Reply(replyMessage); }