微信服務號聊天窗口下面的菜單項(有的公眾號有啟用有的則沒有),這個可以在編輯模式簡單配置,也可以在開發模式代碼配置。微信公眾平臺開發者文檔:微信公眾號開發平臺創建自定義菜單,可以看到創建菜單的一些注意事項,下面的使用網頁調試工具調試該接口,只是調試接口是否可以正常調用,并不是直接創建菜單,根據微信自定義菜單管理文檔菜單事件可分為兩種:
click: 用戶點擊click類型按鈕后,微信服務器會通過消息接口推送消息類型為event 的結構給開發者(參考消息接口指南),并且帶上按鈕中開發者填寫的key值,開發者可以通過自定義的key值與用戶進行交互。
view: 用戶點擊view類型按鈕后,微信客戶端將會打開開發者在按鈕中填寫的url值 (即網頁鏈接),達到打開網頁的目的,建議與網頁授權獲取用戶基本信息接口結合,獲得用戶的登入個人信息。
設置菜單JSON格式(可根據需要進行修改):
{ "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜單", "sub_button":[ { "type":"view", "name":"搜索", "url":"http://www.soso.com/" }, { "type":"view", "name":"視頻", "url":"http://v.QQ.com/" }, { "type":"click", "name":"贊一下我們", "key":"V1001_GOOD" }] }] }
配置菜單的注意點:
1、自定義菜單最多包括3個一級菜單,每個一級菜單最多包含5個二級菜單。
2、一級菜單最多4個漢字,二級菜單最多7個漢字,多出來的部分將會以“...”代替。
3、創建自定義菜單后,由于微信客戶端緩存,需要24小時微信客戶端才會展現出來。測試時可以嘗試取消關注公眾賬號后再次關注,則可以看到創建后的效果。
接口參數配置:

接口調用請求說明:
http請求方式:POST(請使用https協議)
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
POST請求接口調用接口憑據ACCESS_TOKEN的獲取方式可參見文檔(獲取ACCESS_TOKEN文檔)使用POST方式帶上ACCESS_TOKEN以及菜單JSON請求接口,具體實現代碼如下:
1 /// <summary> 2 /// 創建菜單事件 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name="e"></param> 6 PRotected void creayeMenu_Click(object sender, EventArgs e) 7 { 8 FileStream fs1 = new FileStream(Server.MapPath("~/") + "//menuInfo.txt", FileMode.Open); 9 StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("GBK"));10 string menu = sr.ReadToEnd();11 sr.Close();12 fs1.Close();13 CreateMenu("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN", menu);14 }
1 /// <summary> 2 /// 創建公眾號菜單 3 /// </summary> 4 /// <param name="posturl">URL</param> 5 /// <param name="postData">菜單JSON數據</param> 6 /// <returns></returns> 7 public void CreateMenu(string posturl, string postData) 8 { 9 Stream outstream = null;10 Stream instream = null;11 StreamReader sr = null;12 HttpWebResponse response = null;13 HttpWebRequest request = null;14 Encoding encoding = Encoding.UTF8;15 byte[] data = encoding.GetBytes(postData);16 17 request = WebRequest.Create(posturl) as HttpWebRequest;18 CookieContainer cookieContainer = new CookieContainer();19 request.CookieContainer = cookieContainer;20 request.AllowAutoRedirect = true;21 request.Method = "POST";22 request.ContentType = "application/x-www-form-urlencoded";23 request.ContentLength = data.Length;24 outstream = request.GetRequestStream();25 outstream.Write(data, 0, data.Length);26 outstream.Close();27 response = request.GetResponse() as HttpWebResponse;28 instream = response.GetResponseStream();29 sr = new StreamReader(instream, encoding);30 string content = sr.ReadToEnd();31 Context.Response.Write(content);32 }
接口返回結果:
正確時返回的JSON數據包格式如下:
{"errcode":0,"errmsg":"ok"}
錯誤時的返回JSON數據包如下(示例為無效菜單名長度):
{"errcode":40018,"errmsg":"invalid button name size"}
新聞熱點
疑難解答