예제 #1
0
        public async Task <IList <ResponseRichMenu> > CreateRichMenuAsync(bool isRefresh)
        {
            var menuList = await MessagingClient.GetRichMenuListAsync();

            if (isRefresh)
            {
                await DeleteRichMenusAsync(menuList);
            }
            var newMenuList = new List <ResponseRichMenu>();

            newMenuList.Add(await RegisterRichMenuAsync(RichMenuA));
            newMenuList.Add(await RegisterRichMenuAsync(RichMenuB));
            newMenuList.Add(await RegisterRichMenuAsync(RichMenuC));
            newMenuList.Add(await RegisterRichMenuAsync(RichMenuD));
            return(newMenuList);

            async Task <ResponseRichMenu> RegisterRichMenuAsync(RichMenu newItem)
            {
                var item = menuList.FirstOrDefault(menu => menu.Name == newItem.Name);

                if (item == null)
                {
                    var id = await MessagingClient.CreateRichMenuAsync(newItem);

                    var image = CreateRichMenuImage(newItem);
                    await UploadRichMenuImageAsync(image, id);

                    item = newItem.ToResponseRichMenu(id);
                }
                return(item);
            }
        }
예제 #2
0
        protected override async Task OnPostbackAsync(PostbackEvent ev)
        {
            var menuList = await MessagingClient.GetRichMenuListAsync();

            var nextMenu = menuList.FirstOrDefault(menu => menu.Name == ev.Postback.Data);

            if (nextMenu == null)
            {
                await MessagingClient.ReplyMessageAsync(ev.ReplyToken, $"Error!! {ev.Postback.Data} not found.");
            }
            await MessagingClient.LinkRichMenuToUserAsync(ev.Source.UserId, nextMenu.RichMenuId);

            await MessagingClient.ReplyMessageAsync(ev.ReplyToken, $"I changed a rich menu to {nextMenu.ChatBarText}");
        }