/// <summary> /// 创建个性化菜单 /// </summary> /// <param name="token"></param> /// <param name="rule">匹配规则共六个字段,均可为空,但不能全部为空,至少要有一个匹配信息是不为空的。</param> /// <param name="menu1"></param> /// <param name="menu2"></param> /// <param name="menu3"></param> /// <returns>menuid</returns> public static string MenuCreatCondition(this AccessToken token, MenuMatchRule rule, MenuBase menu1, MenuBase menu2 = null, MenuBase menu3 = null) { var list = new List <MenuBase>(); list.Add(menu1); list.Add(menu2); list.Add(menu3); return(token.MenuCreatCondition(rule, list.ToList())); }
public ActionResult CreateMenu(string token, GetMenuResultFull resultFull, MenuMatchRule menuMatchRule) { if (String.IsNullOrWhiteSpace(token)) { token = GetToken(); } var useAddCondidionalApi = menuMatchRule != null && !menuMatchRule.CheckAllNull(); var apiName = string.Format("使用接口:{0}。", (useAddCondidionalApi ? "个性化菜单接口" : "普通自定义菜单接口")); try { if (token.IsNullOrEmpty()) { throw new WeixinException("Token不能为空!"); } //重新整理按钮信息 WxJsonResult result = null; IButtonGroupBase buttonGroup = null; if (useAddCondidionalApi) { //个性化接口 buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu; var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup; addConditionalButtonGroup.matchrule = menuMatchRule; result = CommonApi.CreateMenuConditional(token, addConditionalButtonGroup); apiName += string.Format("menuid:{0}。", (result as CreateMenuConditionalResult).menuid); } else { //普通接口 buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu; result = CommonApi.CreateMenu(token, buttonGroup); } var json = new { Success = result.errmsg == "ok", Message = "菜单更新成功。" + apiName }; return(Json(json, new JsonSerializerSettings() { ContractResolver = new DefaultContractResolver() })); } catch (Exception ex) { var json = new { Success = false, Message = string.Format("更新失败:{0}。{1}", ex.Message, apiName) }; return(Json(json, new JsonSerializerSettings() { ContractResolver = new DefaultContractResolver() })); } }
public ActionResult CreateMenu(MPMenuViewModel request) { string token = GetToken(); // request.token; GetMenuResultFull resultFull = request.ResultFull; MenuMatchRule menuMatchRule = request.MenuMatchRule; var useAddCondidionalApi = menuMatchRule != null && !menuMatchRule.CheckAllNull(); var apiName = string.Format("使用接口:{0}。", (useAddCondidionalApi ? "个性化菜单接口" : "普通自定义菜单接口")); try { //重新整理按钮信息 WxJsonResult result = null; IButtonGroupBase buttonGroup = null; if (useAddCondidionalApi) { //个性化接口 buttonGroup = Senparc.Weixin.MP.CommonAPIs.CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu; var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup; addConditionalButtonGroup.matchrule = menuMatchRule; result = Senparc.Weixin.MP.CommonAPIs.CommonApi.CreateMenuConditional(token, addConditionalButtonGroup); apiName += string.Format("menuid:{0}。", (result as CreateMenuConditionalResult).menuid); } else { //普通接口 buttonGroup = Senparc.Weixin.MP.CommonAPIs.CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu; result = Senparc.Weixin.MP.CommonAPIs.CommonApi.CreateMenu(token, buttonGroup); } var json = new { Success = result.errmsg == "ok", Message = "菜单更新成功。" + apiName }; return(Json(json)); } catch (Exception ex) { var json = new { Success = false, Message = string.Format("更新失败:{0}。{1}", ex.Message, apiName) }; return(Json(json)); } }
public static string AddCondition(MenuMatchRule rule, List <MenuBase> buttons) { StringBuilder str = new StringBuilder(); str.Append("{\"button\":["); foreach (var item in buttons.Take(3)) { if (item != null) { str.Append(item.ToString()); } } if (str.ToString().EndsWith(",")) { str.Remove(str.Length - 1, 1); } str.Append("],").Append(rule.ToString()).Append("}"); return(str.ToString()); }
public ActionResult CreateMenu(GetMenuResultFull resultFull, MenuMatchRule menuMatchRule) { if (string.IsNullOrEmpty(_wxAccount.AppId) || string.IsNullOrEmpty(_wxAccount.Secret)) { return(Json(new { error = "AppId或AppSecret为空" }, JsonRequestBehavior.AllowGet)); } var token = AccessTokenContainer.TryGetAccessToken(_wxAccount.AppId, _wxAccount.Secret); var useAddCondidionalApi = menuMatchRule != null && !menuMatchRule.CheckAllNull(); var apiName = string.Format("使用接口:{0}。", (useAddCondidionalApi ? "个性化菜单接口" : "普通自定义菜单接口")); try { //重新整理按钮信息 WxJsonResult result = null; IButtonGroupBase buttonGroup = null; if (useAddCondidionalApi) { //个性化接口 buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu; var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup; addConditionalButtonGroup.matchrule = menuMatchRule; result = CommonApi.CreateMenuConditional(token, addConditionalButtonGroup); apiName += string.Format("menuid:{0}。", (result as CreateMenuConditionalResult).menuid); } else { //普通接口 buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ButtonGroup()).menu; result = CommonApi.CreateMenu(token, buttonGroup); } return(Json(new { success = result.errmsg == "ok", message = "菜单更新成功。" + apiName })); } catch (Exception ex) { return(Json(new { success = false, message = string.Format("更新失败:{0}。{1}", ex.Message, apiName) })); } }
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="token"></param> /// <param name="rule">匹配规则共六个字段,均可为空,但不能全部为空,至少要有一个匹配信息是不为空的。</param> /// <param name="buttons"></param> /// <returns>menuid</returns> public static string MenuCreatCondition(this AccessToken token, MenuMatchRule rule, List <MenuBase> buttons) => Api.Menu.AddCondition(token.access_token, rule, buttons);
public static string AddCondition(string access_token, MenuMatchRule rule, List <MenuBase> buttons) => ApiJTokenPost(JsonCreate.AddCondition(rule, buttons), "/cgi-bin/menu/addconditional?access_token={0}", access_token) ?.GetString("menuid") ?? throw new Exception("未找到个性化菜单Id信息");
/// <summary> /// 创建个性化菜单 /// </summary> /// <param name="appId">微信appId</param> /// <param name="menuFull_Button">菜单数据定义</param> /// <param name="menuMatchRule">个性化匹配规则</param> /// <returns></returns> private async Task CreateConditionalMenu(string appId, MenuFull_ButtonGroup menuFull_Button, MenuMatchRule menuMatchRule) { await _wechatAppConfigManager.RegisterWechatApp(appId); try { var resultFull = new GetMenuResultFull() { menu = menuFull_Button }; // 数据校验 var buttonGroup = CommonApi.GetMenuFromJsonResult(resultFull, new ConditionalButtonGroup()).menu; // 附加规则 var addConditionalButtonGroup = buttonGroup as ConditionalButtonGroup; addConditionalButtonGroup.matchrule = menuMatchRule; // 立即创建 var result = CommonApi.CreateMenuConditional(appId, addConditionalButtonGroup); } catch (UserFriendlyException e) { throw e; } }