public void SetTest()
        {
            var topMenu1 = new CustomMenuTopButton("菜单1");
            var topMenu2 = new CustomMenuTopButton("菜单2");
            var topMenu3 = new CustomMenuKeyButton("菜单3", CustomMenuType.PicSysphoto, "test");

            topMenu1.AppendChildMenus(new CustomMenuButton[]
            {
                new CustomMenuKeyButton("ScancodePush",CustomMenuType.ScancodePush, "test"),
                new CustomMenuKeyButton("ScancodeWaitmsg",CustomMenuType.ScancodeWaitmsg, "test"),
            });

            topMenu2.AppendChildMenus(new CustomMenuButton[]
            {
                new CustomMenuKeyButton("Click",CustomMenuType.Click, "test"),
                new CustomMenuViewButton("View", "http://cn.bing.com/"),
                new CustomMenuKeyButton("LocationSelect",CustomMenuType.LocationSelect, "test"),
                new CustomMenuKeyButton("PicPhotoOrAlbum",CustomMenuType.PicPhotoOrAlbum, "test"),
                new CustomMenuKeyButton("PicSysphoto",CustomMenuType.PicSysphoto, "test"),
                new CustomMenuKeyButton("PicWeixin",CustomMenuType.PicWeixin, "test")
            });

            Assert.AreEqual(5, topMenu2.Childs.Length);
            Assert.AreEqual("View", topMenu2.Childs.First().Name);

            _customMenuService.Set(new CustomMenuButtonBase[] { topMenu1, topMenu2, topMenu3 });
        }
示例#2
0
        private static CustomMenuButtonBase GetMenuItemByWeiXin(JObject obj)
        {
            var name           = obj.Value <string>("name");
            var typeString     = obj.Value <string>("type");
            var customMenuType = string.IsNullOrWhiteSpace(typeString) ? null : new CustomMenuType?(CustomMenuTypeMappings.Single(i => i.Value.Equals(typeString)).Key);
            var subButtons     = (JArray)obj["sub_button"];

            if (!customMenuType.HasValue)
            {
                var menu = new CustomMenuTopButton(name);
                menu.AppendChildMenus(subButtons.Select(token => GetMenuItemByWeiXin((JObject)token)).OfType <CustomMenuButton>().ToArray());
                return(menu);
            }

            var type = customMenuType.Value;

            switch (type)
            {
            case CustomMenuType.Click:
            case CustomMenuType.ScancodePush:
            case CustomMenuType.ScancodeWaitmsg:
            case CustomMenuType.PicSysphoto:
            case CustomMenuType.PicPhotoOrAlbum:
            case CustomMenuType.PicWeixin:
            case CustomMenuType.LocationSelect:
            {
                return(new CustomMenuKeyButton(name, type, obj.Value <string>("key")));
            }

            case CustomMenuType.View:
            {
                return(new CustomMenuViewButton(name, obj.Value <string>("url")));
            }

            case CustomMenuType.MediaId:
            case CustomMenuType.ViewLimited:
            {
                return(new CustomMenuMediaButton(name, type, obj.Value <string>("media_id")));
            }

            default:
                throw new NotSupportedException("不支持的类型:" + type);
            }
        }
        private static CustomMenuButtonBase GetMenuItemByWeiXin(JObject obj)
        {
            var name = obj.Value<string>("name");
            var typeString = obj.Value<string>("type");
            var customMenuType = string.IsNullOrWhiteSpace(typeString) ? null : new CustomMenuType?(CustomMenuTypeMappings.Single(i => i.Value.Equals(typeString)).Key);
            var subButtons = (JArray)obj["sub_button"];
            if (!customMenuType.HasValue)
            {
                var menu = new CustomMenuTopButton(name);
                menu.AppendChildMenus(subButtons.Select(token => GetMenuItemByWeiXin((JObject)token)).OfType<CustomMenuButton>().ToArray());
                return menu;
            }

            var type = customMenuType.Value;
            switch (type)
            {
                case CustomMenuType.Click:
                case CustomMenuType.ScancodePush:
                case CustomMenuType.ScancodeWaitmsg:
                case CustomMenuType.PicSysphoto:
                case CustomMenuType.PicPhotoOrAlbum:
                case CustomMenuType.PicWeixin:
                case CustomMenuType.LocationSelect:
                    {
                        return new CustomMenuKeyButton(name, type, obj.Value<string>("key"));
                    }
                case CustomMenuType.View:
                    {
                        return new CustomMenuViewButton(name, obj.Value<string>("url"));
                    }
                case CustomMenuType.MediaId:
                case CustomMenuType.ViewLimited:
                    {
                        return new CustomMenuMediaButton(name, type, obj.Value<string>("media_id"));
                    }
                default:
                    throw new NotSupportedException("不支持的类型:" + type);
            }
        }
        public void SetPersonaliseBySexTest()
        {
            var menu1 = new CustomMenuTopButton("男生可见");
            menu1.AppendChildMenus(new CustomMenuKeyButton("ScancodePush", CustomMenuType.ScancodePush, "test"), new CustomMenuKeyButton("ScancodeWaitmsg", CustomMenuType.ScancodeWaitmsg, "test"));
            var menu2 = new CustomMenuTopButton("女生可见");
            menu2.AppendChildMenus(new CustomMenuKeyButton("ScancodePush", CustomMenuType.ScancodePush, "test"), new CustomMenuKeyButton("ScancodeWaitmsg", CustomMenuType.ScancodeWaitmsg, "test"));

            var result = _customMenuService.Set(new CustomMenuButtonBase[] { menu1 }, new CustomMeunMatchRule
            {
                Sex = SexEnum.Male
            });
            Assert.IsTrue(result.HasValue);

            result = _customMenuService.Set(new CustomMenuButtonBase[] { menu2 }, new CustomMeunMatchRule
            {
                Sex = SexEnum.Female
            });
            Assert.IsTrue(result.HasValue);

            Assert.AreEqual(menu1.Name, _customMenuService.GetList(OpenId).First().Name);
        }