/// <summary> /// 根据微信返回的Json数据得到可用的GetMenuResult结果 /// </summary> /// <param name="resultFull"></param> /// <param name="buttonGroupBase">ButtonGroupBase的衍生类型,可以为ButtonGroup或ConditionalButtonGroup。返回的GetMenuResult中的menu属性即为此示例。</param> /// <returns></returns> public static GetMenuResult GetMenuFromJsonResult(GetMenuResultFull resultFull, ButtonGroupBase buttonGroupBase) { GetMenuResult result = null; if (buttonGroupBase == null) { throw new ArgumentNullException("buttonGroupBase不可以为空!"); } try { //重新整理按钮信息 ButtonGroupBase buttonGroup = buttonGroupBase; // ?? new ButtonGroup(); var rootButtonList = resultFull.menu.button; GetButtonGroup(rootButtonList, buttonGroup);//设置默认菜单 result = new GetMenuResult(buttonGroupBase) { menu = buttonGroup, //conditionalmenu = resultFull.conditionalmenu }; //设置个性化菜单列表 if (resultFull.conditionalmenu != null) { var conditionalMenuList = new List <ConditionalButtonGroup>(); foreach (var conditionalMenu in resultFull.conditionalmenu) { var conditionalButtonGroup = new ConditionalButtonGroup() ; //fix bug 16030701 https://github.com/JeffreySu/WeiXinMPSDK/issues/169 conditionalButtonGroup.matchrule = conditionalMenu.matchrule; conditionalButtonGroup.menuid = conditionalMenu.menuid; //fix bug 16030701 end GetButtonGroup(conditionalMenu.button, conditionalButtonGroup);//设置默认菜单 conditionalMenuList.Add(conditionalButtonGroup); } result.conditionalmenu = conditionalMenuList; } } catch (Exception ex) { throw new WeixinMenuException(ex.Message, ex); } return(result); }
/// <summary> /// 根据微信返回的Json数据得到可用的GetMenuResult结果 /// </summary> /// <param name="resultFull"></param> /// <param name="buttonGroupBase">ButtonGroupBase的衍生类型,可以为ButtonGroup或ConditionalButtonGroup。返回的GetMenuResult中的menu属性即为此示例。</param> /// <returns></returns> public static GetMenuResult GetMenuFromJsonResult(GetMenuResultFull resultFull, ButtonGroupBase buttonGroupBase) { GetMenuResult result = null; if (buttonGroupBase == null) { throw new ArgumentNullException("buttonGroupBase不可以为空!"); } try { //重新整理按钮信息 ButtonGroupBase buttonGroup = buttonGroupBase; // ?? new ButtonGroup(); var rootButtonList = resultFull.menu.button; GetButtonGroup(rootButtonList, buttonGroup);//设置默认菜单 result = new GetMenuResult(buttonGroupBase) { menu = buttonGroup, //conditionalmenu = resultFull.conditionalmenu }; //设置个性化菜单列表 if (resultFull.conditionalmenu != null) { var conditionalMenuList = new List <ConditionalButtonGroup>(); foreach (var conditionalMenu in resultFull.conditionalmenu) { var conditionalButtonGroup = new ConditionalButtonGroup(); GetButtonGroup(conditionalMenu.button, conditionalButtonGroup);//设置默认菜单 conditionalMenuList.Add(conditionalButtonGroup); } result.conditionalmenu = conditionalMenuList; } } catch (Exception ex) { throw new WeixinMenuException(ex.Message, ex); } return(result); }
public ActionResult CreateMenu(string token, GetMenuResultFull resultFull, MenuMatchRule menuMatchRule) { bool flag = (menuMatchRule != null) && !menuMatchRule.CheckAllNull(); string str = "使用接口:" + (flag ? "个性化菜单接口" : "普通自定义菜单接口") + "。"; try { WxJsonResult result = null; IButtonGroupBase buttonData = null; if (flag) { ConditionalButtonGroup menu = CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu as ConditionalButtonGroup; menu.matchrule = menuMatchRule; result = CommonApi.CreateMenuConditional(token, menu, 0x2710); str = str + "menuid:" + (result as CreateMenuConditionalResult).menuid + "。"; } else { buttonData = CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu; result = CommonApi.CreateMenu(token, buttonData, 0x2710); } var data = new { Success = result.errmsg == "ok", Message = "菜单更新成功。" + str }; return(base.Json(data)); } catch (Exception exception) { var type2 = new { Success = false, Message = "更新失败:" + exception.Message + "。" + str }; return(base.Json(type2)); } }
/// <summary> /// 创建个性化菜单 /// </summary> /// <param name="accessTokenOrAppId">AccessToken或AppId。当为AppId时,如果AccessToken错误将自动获取一次。当为null时,获取当前注册的第一个AppId。</param> /// <param name="buttonData">菜单内容</param> /// <returns></returns> public static CreateMenuConditionalResult CreateMenuConditional(string accessTokenOrAppId, ConditionalButtonGroup buttonData, int timeOut = WxConfig.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = WxConfig.ApiMpHost + "/cgi-bin/menu/addconditional?access_token={0}"; //var jsonSetting = new JsonSetting(true);//设置成true会导致发布失败 var jsonSetting = new JsonSetting(false); return CommonJsonSend.Send <CreateMenuConditionalResult>(accessToken, urlFormat, buttonData, timeOut: timeOut, jsonSetting: jsonSetting); }, accessTokenOrAppId)); }
/// <summary> /// 创建个新华菜单 /// </summary> /// <param name="accessTokenOrAppId">AccessToken或AppId。当为AppId时,如果AccessToken错误将自动获取一次。当为null时,获取当前注册的第一个AppId。</param> /// <param name="buttonData">菜单内容</param> /// <returns></returns> public static CreateMenuConditionalResult CreateMenuConditional(string accessTokenOrAppId, ConditionalButtonGroup buttonData, int timeOut = Config.TIME_OUT) { return(ApiHandlerWapper.TryCommonApi(accessToken => { var urlFormat = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token={0}"; var jsonSetting = new JsonSetting(true); return CommonJsonSend.Send <CreateMenuConditionalResult>(accessToken, urlFormat, buttonData, timeOut: timeOut, jsonSetting: jsonSetting); }, accessTokenOrAppId)); }