自定义菜单管理
公众号底部会显示菜单栏,这些菜单栏可以在微信公众平台后台管理,也可以使用公众平台提供的接口进行管理,调用 POST 方法把菜单的 JSON 文本推送到微信服务器即可。
接口说明
文档地址:
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013
自定义菜单规则:
- 最多包括 3 个一级菜单,每个一级菜单最多包含 5 个二级菜单
- 一级菜单最多 4 个汉字,二级菜单最多 7 个汉字,多出来的部分以”…”代替
- 自定义菜单接口可实现多种类型按钮:click、view 等
HTTP 请求方式:POST(请使用 https 协议)
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
每次创建或修改菜单时,需要把完整的菜单结构全部发送过去。
添加 MenuCreateHandle
public class MenuCreateHandle : WeiXinHandlerBase, IWeiXinHandler
{
private string url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token={0}";
public T DoGet<T>(params string[] param) where T : class
{
throw new NotImplementedException();
}
public T DoPost<T>(params string[] param) where T : class
{
var uploadUrl = string.Format(url, accessTokenInfo.access_token);
// view表示网页类型,click表示点击类型,miniprogram表示小程序类型
var firstButton = new List<object>();
firstButton.Add(new { type = "click", name = "课程", key = "V1001_TODAY_MUSIC" });
var secondButton = new List<object>();
secondButton.Add(new { type = "view", name = "管理后台", url = "http://www.bamn.cn" });
secondButton.Add(new { type = "click", name = "赞一下我们", key = "V1001_GOOD" });
firstButton.Add(new { type = "click", name = "管理", sub_button = secondButton });
var input = new { button = firstButton };
var json = JsonHelper.SerializeObject(input);
var resultjson = HtmlHelper.HttpPost(uploadUrl, json);
var output = JsonHelper.DeserializeJsonToObject<T>(resultjson);
return output;
}
}Code language: HTML, XML (xml)
控制器中调用
public ActionResult CreateMenu()
{
var result = new MenuCreateHandle().DoPost<dynamic>();
return Json(result);
}Code language: PHP (php)
Previous: 08-被动回复用户消息
Next: 10-菜单事件托送接收