public DateTemplateQuestionAttribute(string altText, string imageUrl, string data = "date", string mode = "date", string label = "選日期") { _Question = altText; if (!imageUrl.StartsWith("https")) { throw new Exception("imageUrl必須以https開頭..."); } DateTimePickerAction dateTimePickerAction = new DateTimePickerAction() { data = data, label = label, mode = mode }; List <ImageCarouselColumn> columns = new List <ImageCarouselColumn>(); columns.Add(new ImageCarouselColumn() { action = dateTimePickerAction, imageUrl = new Uri(imageUrl) }); imageCarouselTemplate = new ImageCarouselTemplate() { columns = columns, altText = altText }; }
public async Task ReplyTemplateMessageAsync(string replyToken, ImageCarouselTemplate template) { using (var httpClient = new HttpClient()) { using (var request = new HttpRequestMessage(new HttpMethod("POST"), $"{lineMessageReplyApiBaseUrl}")) { request.Headers.TryAddWithoutValidation("Authorization", $"Bearer {accessToken}"); LineMessageReq req = new LineMessageReq(); req.ReplyToken = replyToken; req.Messages.Add(new TemplateMessageBase() { Template = template }); var postJson = JsonConvert.SerializeObject(req, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore, ContractResolver = new DefaultContractResolver { NamingStrategy = new CamelCaseNamingStrategy() }, Formatting = Formatting.Indented }); request.Content = new StringContent(postJson); request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); var response = await httpClient.SendAsync(request); var result = await response.Content.ReadAsStringAsync(); } } }
public void ShouldPreserveInstanceWhenValueIsCarouselTemplate() { var template = new ImageCarouselTemplate() { Columns = new IImageCarouselColumn[] { new ImageCarouselColumn() { ImageUrl = new Uri("https://foo.bar"), Action = new MessageAction() { Label = "PostbackLabel", Text = "PostbackText" } } } }; var carouselTemplate = ImageCarouselTemplate.Convert(template); Assert.AreSame(template, carouselTemplate); var column = carouselTemplate.Columns.First(); Assert.AreSame(column, carouselTemplate.Columns.First()); }
public void ShouldCreateSerializeableObject() { var template = new ImageCarouselTemplate(); string serialized = JsonSerializer.SerializeObject(template); Assert.AreEqual(@"{""type"":""image_carousel""}", serialized); }
public void ShouldThrowExceptionWhenValueIsEmpty() { ImageCarouselTemplate template = new ImageCarouselTemplate(); ExceptionAssert.Throws <InvalidOperationException>("The minimum number of columns is 1.", () => { template.Columns = new ImageCarouselColumn[] { }; }); }
public void ShouldThrowExceptionWhenValueIsNull() { ImageCarouselTemplate template = new ImageCarouselTemplate(); ExceptionAssert.Throws <InvalidOperationException>("The columns cannot be null.", () => { template.Columns = null; }); }
public void ShouldThrowExceptionWhenColumnsIsNull() { var template = new ImageCarouselTemplate(); ExceptionAssert.Throws <InvalidOperationException>("The columns cannot be null.", () => { ImageCarouselTemplate.Convert(template); }); }
public void ShouldNotThrowExceptionWhenValueContains10Items() { ImageCarouselTemplate template = new ImageCarouselTemplate() { Columns = new ImageCarouselColumn[] { new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn() } }; }
public void ShouldThrowExceptionWhenColumnsIsInvalid() { ITemplate template = new ImageCarouselTemplate() { Columns = new[] { new ImageCarouselColumn() } }; ExceptionAssert.Throws <InvalidOperationException>("The image url cannot be null.", () => { template.Validate(); }); }
public async Task <IList <IRequestMessage> > GetReplyMessagesAsync() { var columns = new List <ImageCarouselColumnAction>(); columns.Add(new ImageCarouselColumnAction("https://via.placeholder.com/400x400/333.png/fff", new MessageAction("Image A"))); columns.Add(new ImageCarouselColumnAction("https://via.placeholder.com/400x400/333.png/fff", new MessageAction("Image B"))); var msg = new ImageCarouselTemplate(columns); await Task.CompletedTask; return(new List <IRequestMessage> { msg }); }
public void ShouldConvertCustomICarouselTemplateToCarouselTemplate() { var template = new TestImageCarouselTemplate(); var imageCarouselTemplate = ImageCarouselTemplate.Convert(template); Assert.AreNotEqual(template, imageCarouselTemplate); var column = imageCarouselTemplate.Columns.First() as ImageCarouselColumn; Assert.AreEqual(new Uri("https://carousel.url"), column.ImageUrl); var action = column.Action as MessageAction; Assert.AreEqual("MessageLabel", action.Label); Assert.AreEqual("MessageText", action.Text); }
private async Task ReplyImageCarouselAsync(string replyToken, string blobDirectoryName) { var columns = BlobStorage.ListBlobUri(blobDirectoryName) .Select(uri => new ImageCarouselColumn(uri.ToString(), new MessageTemplateAction(uri.Segments.Last(), $"I selected image {uri.Segments.Last()}!"))).ToList(); if (columns.Count == 0) { await MessagingClient.ReplyMessageAsync(replyToken, "Upload image for \"Carousel Message\"."); return; } var template = new ImageCarouselTemplate(columns); await MessagingClient.ReplyMessageAsync(replyToken, new[] { new TemplateMessage("imageCarousel", template) }); }
public ActionResult DispatchTemplate4() { var columns = new List <ImageCarouselColumn>() { new ImageCarouselColumn() { action = new MessageAction() { label = "標題1", text = "回復文字" }, imageUrl = new Uri("https://image.shutterstock.com/image-vector/prevent-coronavirus-covid19-2019ncov-virus-600w-1680510709.jpg") }, new ImageCarouselColumn() { action = new PostbackAction() { label = "標題2", data = "abc=aaa&def=111" }, imageUrl = new Uri("https://image.shutterstock.com/image-vector/coronavirus-pandemic-medical-infographics-horizontal-600w-1679579902.jpg") }, new ImageCarouselColumn() { action = new UriAction() { label = "標題3", uri = new Uri("http://www.google.com") }, imageUrl = new Uri("https://image.shutterstock.com/image-vector/symptoms-coronaviruscovid19-vector-illustrations-set-600w-1656329914.jpg") } }; var tmpl = new ImageCarouselTemplate() { columns = columns, altText = "快快樂樂發送了一個詢問," }; bot.PushMessage(toUserID, tmpl); return(View("Index")); }
public void ShouldThrowExceptionWhenValueContainsMoreThan10Items() { ImageCarouselTemplate template = new ImageCarouselTemplate(); ExceptionAssert.Throws <InvalidOperationException>("The maximum number of columns is 10.", () => { template.Columns = new ImageCarouselColumn[] { new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn(), new ImageCarouselColumn() }; }); }
// 事件:文字 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); }
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 void PushMessage(ImageCarouselTemplate response) { _RockBot.PushMessage(UserInfo.userId, response); }
public async Task ReplyTemplateMessageAsync(string replyToken, ImageCarouselTemplate template) { await _messageService.ReplyTemplateMessageAsync(replyToken, template); }
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 void PushMessage(ImageCarouselTemplate imageCarouselTemplate) { Bot.PushMessage(_receiveMsgUserId, imageCarouselTemplate); }