C#微信開發(fā)之自定義菜單管理
自定義菜單管理
①接口說(shuō)明
微信服務(wù)號(hào)聊天窗口下面的菜單項(xiàng)(有的公眾號(hào)有啟用有的則沒(méi)有),這個(gè)可以在編輯模式簡(jiǎn)單配置,也可以在開發(fā)模式代碼配置。微信公眾平臺(tái)開發(fā)者文檔:微信公眾號(hào)開發(fā)平臺(tái)創(chuàng)建自定義菜單,可以看到創(chuàng)建菜單的一些注意事項(xiàng),下面的使用網(wǎng)頁(yè)調(diào)試工具調(diào)試該接口,只是調(diào)試接口是否可以正常調(diào)用,并不是直接創(chuàng)建菜單,根據(jù)微信自定義菜單管理文檔菜單事件可分為兩種:
click: 用戶點(diǎn)擊click類型按鈕后,微信服務(wù)器會(huì)通過(guò)消息接口推送消息類型為event 的結(jié)構(gòu)給開發(fā)者(參考消息接口指南),并且?guī)习粹o中開發(fā)者填寫的key值,開發(fā)者可以通過(guò)自定義的key值與用戶進(jìn)行交互。
view: 用戶點(diǎn)擊view類型按鈕后,微信客戶端將會(huì)打開開發(fā)者在按鈕中填寫的url值 (即網(wǎng)頁(yè)鏈接),達(dá)到打開網(wǎng)頁(yè)的目的,建議與網(wǎng)頁(yè)授權(quán)獲取用戶基本信息接口結(jié)合,獲得用戶的登入個(gè)人信息。
設(shè)置菜單JSON格式(可根據(jù)需要進(jìn)行修改):
{
"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"
}]
}]
}
配置菜單的注意點(diǎn):
1、自定義菜單最多包括3個(gè)一級(jí)菜單,每個(gè)一級(jí)菜單最多包含5個(gè)二級(jí)菜單。
2、一級(jí)菜單最多4個(gè)漢字,二級(jí)菜單最多7個(gè)漢字,多出來(lái)的部分將會(huì)以“...”代替。
3、創(chuàng)建自定義菜單后,由于微信客戶端緩存,需要24小時(shí)微信客戶端才會(huì)展現(xiàn)出來(lái)。測(cè)試時(shí)可以嘗試取消關(guān)注公眾賬號(hào)后再次關(guān)注,則可以看到創(chuàng)建后的效果。
接口參數(shù)配置:

②請(qǐng)求接口:
接口調(diào)用請(qǐng)求說(shuō)明:
http請(qǐng)求方式:POST(請(qǐng)使用https協(xié)議)
https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
POST請(qǐng)求接口調(diào)用接口憑據(jù)ACCESS_TOKEN的獲取方式可參見(jiàn)文檔(獲取ACCESS_TOKEN文檔)使用POST方式帶上ACCESS_TOKEN以及菜單JSON請(qǐng)求接口,具體實(shí)現(xiàn)代碼如下:
/// <summary>
/// 創(chuàng)建菜單事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void createMenu_Click(object sender, EventArgs e)
{
FileStream fs1 = new FileStream(Server.MapPath("~/") + "\\menuInfo.txt", FileMode.Open);
StreamReader sr = new StreamReader(fs1, Encoding.GetEncoding("GBK"));
string menu = sr.ReadToEnd();
sr.Close();
fs1.Close();
CreateMenu("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN", menu);
}
/// <summary>
/// 創(chuàng)建公眾號(hào)菜單
/// </summary>
/// <param name="posturl">URL</param>
/// <param name="postData">菜單JSON數(shù)據(jù)</param>
/// <returns></returns>
public void CreateMenu(string posturl, string postData)
{
Stream outstream = null;
Stream instream = null;
StreamReader sr = null;
HttpWebResponse response = null;
HttpWebRequest request = null;
Encoding encoding = Encoding.UTF8;
byte[] data = encoding.GetBytes(postData);
request = WebRequest.Create(posturl) as HttpWebRequest;
CookieContainer cookieContainer = new CookieContainer();
request.CookieContainer = cookieContainer;
request.AllowAutoRedirect = true;
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = data.Length;
outstream = request.GetRequestStream();
outstream.Write(data, 0, data.Length);
outstream.Close();
response = request.GetResponse() as HttpWebResponse;
instream = response.GetResponseStream();
sr = new StreamReader(instream, encoding);
string content = sr.ReadToEnd();
Context.Response.Write(content);
}
接口返回結(jié)果:
正確時(shí)返回的JSON數(shù)據(jù)包格式如下:
{"errcode":0,"errmsg":"ok"}
錯(cuò)誤時(shí)的返回JSON數(shù)據(jù)包如下(示例為無(wú)效菜單名長(zhǎng)度):
{"errcode":40018,"errmsg":"invalid button name size"}
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- 使用c#開發(fā)公眾平臺(tái)自定義菜單功能
- C#自定義控件添加右鍵菜單的方法
- Android仿微信菜單(Menu)(使用C#和Java分別實(shí)現(xiàn))
- C#實(shí)現(xiàn)Winform動(dòng)態(tài)添加菜單的方法
- C#遞歸讀取XML菜單數(shù)據(jù)的方法
- 基于C#實(shí)現(xiàn)的仿windows左側(cè)伸縮菜單效果
- C#正則表達(dá)式獲取下拉菜單(select)的相關(guān)屬性值
- c# winform讀取xml文件創(chuàng)建菜單的代碼
- c# TreeView添加右鍵快鍵菜單有兩種方法
- asp.net(C#)生成無(wú)限級(jí)別菜單
相關(guān)文章
解決C#中取消方向鍵對(duì)控件焦點(diǎn)控制的實(shí)現(xiàn)方法
本篇文章是對(duì)C#中取消方向鍵對(duì)控件焦點(diǎn)控制的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
詳解C#中Dictionary<TKey,TValue>的存儲(chǔ)結(jié)構(gòu)
無(wú)論是實(shí)際的項(xiàng)目中,還是在我們學(xué)習(xí)的過(guò)程中,都會(huì)重點(diǎn)的應(yīng)用到Dictionary<TKey,?TValue>這個(gè)存儲(chǔ)類型,所以本文就來(lái)為大家介紹一下這一存儲(chǔ)結(jié)構(gòu)的相關(guān)知識(shí),希望對(duì)大家有所幫助2023-11-11
在C# WinForm應(yīng)用中實(shí)現(xiàn)多語(yǔ)種切換功能
本文將介紹如何在一個(gè)WinForm應(yīng)用程序中實(shí)現(xiàn)多語(yǔ)種切換,通過(guò)一個(gè)簡(jiǎn)單的示例,你將了解到如何使用資源文件管理不同語(yǔ)言的文本,并通過(guò)用戶界面實(shí)現(xiàn)語(yǔ)言切換,需要的朋友可以參考下2024-06-06
Entity?Framework使用ObjectContext類
這篇文章介紹了Entity?Framework使用ObjectContext類的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
C#調(diào)用WebService實(shí)例開發(fā)
那么,我們?cè)趺丛陧?xiàng)目中調(diào)用WebService這個(gè)方法呢,其實(shí)這和調(diào)用天氣的webservice是一個(gè)道理,首先,通過(guò)添加“web服務(wù) 引用”將,你寫的webservice引用進(jìn)來(lái),我們需要注意的是其中有一處要我們填寫請(qǐng)求webservice的URL地址,我們?cè)撛趺磳懀?/div> 2015-09-09最新評(píng)論

