C#開發(fā)微信門戶及應用(20)-微信企業(yè)號的菜單管理
前面幾篇陸續(xù)介紹了很多微信企業(yè)號的相關操作,企業(yè)號和公眾號一樣都可以自定義菜單,因此他們也可以通過API進行菜單的創(chuàng)建、獲取列表、刪除的操作,因此本篇繼續(xù)探討這個主體,介紹企業(yè)號的菜單管理操作。
菜單在很多情況下,能夠給我們提供一個快速入口,也可以用來獲取用戶信息的主要入口,通過OAuth2驗證接口,以及自定義的重定向菜單,我們就可以獲取對應的用戶ID,然后進一步獲取到用戶的相關數(shù)據(jù),可以顯示給客戶。
1、菜單的總體介紹
菜單的事件處理如下所示,包括了單擊和跳轉兩個操作,未來企業(yè)號可能會增加一些和公眾號一樣的掃碼操作,拍照操作等功能的,目前只有兩個。
官方的菜單定義接口包含了下面三種操作,菜單創(chuàng)建、列表獲取和菜單刪除,這點和公眾號操作幾乎一樣了。
?
2、菜單的實體類定義和接口定義處理
我們定義菜單,包括定義它的一些屬性,包含有name, type, key,url,以及一個指向自身引用的子菜單引用,因此菜單就可以循環(huán)構造多個層次,雖然嚴格意義上來講,企業(yè)號的菜單和公眾號菜單一樣,一級三個,二級最多五個,而且沒有三級菜單了。
實體類的UML圖示如下所示。
菜單管理的創(chuàng)建操作,官方定義如下所示。
- 請求說明
Https請求方式: POST
https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN&agentid=1
請求包如下:
{ "button":[ { "type":"click", "name":"今日歌曲", "key":"V1001_TODAY_MUSIC" }, { "name":"菜單", "sub_button":[ { "type":"view", "name":"搜索", "url":"http://www.soso.com/" }, { "type":"click", "name":"贊一下我們", "key":"V1001_GOOD" } ] } ] }
- 參數(shù)說明
參數(shù) | 必須 | 說明 |
---|---|---|
access_token | 是 | 調用接口憑證 |
agentid | 是 | 企業(yè)應用的id,整型??稍趹玫脑O置頁面查看 |
button | 是 | 一級菜單數(shù)組,個數(shù)應為1~3個 |
sub_button | 否 | 二級菜單數(shù)組,個數(shù)應為1~5個 |
type | 是 | 菜單的響應動作類型,目前有click、view兩種類型 |
name | 是 | 菜單標題,不超過16個字節(jié),子菜單不超過40個字節(jié) |
key | click類型必須 | 菜單KEY值,用于消息接口推送,不超過128字節(jié) |
url | view類型必須 | 網(wǎng)頁鏈接,員工點擊菜單可打開鏈接,不超過256字節(jié) |
- 權限說明
管理員須擁有應用的管理權限,并且應用必須設置在回調模式。
返回結果
{ "errcode":0, "errmsg":"ok" }
?
根據(jù)上面官方的定義語義,我們菜單管理的C#管理接口定義如下所示。
/// <summary> /// 企業(yè)號菜單管理接口定義 /// </summary> public interface ICorpMenuApi { /// <summary> /// 獲取菜單數(shù)據(jù) /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <returns></returns> MenuListJson GetMenu(string accessToken, string agentid); /// <summary> /// 創(chuàng)建菜單 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="menuJson">菜單對象</param> /// <returns></returns> CommonResult CreateMenu(string accessToken, MenuListJson menuJson, string agentid); /// <summary> /// 刪除菜單 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <returns></returns> CommonResult DeleteMenu(string accessToken, string agentid); }
我們以創(chuàng)建菜單的實現(xiàn)為例來介紹微信企業(yè)號菜單的操作,其他的操作類似處理,都是返回一個公共的消息類,方便處理和讀取,代碼如下所示。
/// <summary> /// 創(chuàng)建菜單 /// </summary> /// <param name="accessToken">調用接口憑證</param> /// <param name="menuJson">菜單對象</param> /// <returns></returns> public CommonResult CreateMenu(string accessToken, MenuListJson menuJson, string agentid) { var url = string.Format("https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token={0}&agentid={1}", accessToken, agentid); string postData = menuJson.ToJson(); return Helper.GetCorpExecuteResult(url, postData); }
?
3、企業(yè)號菜單管理接口的調用和處理效果
調用的代碼和效果圖如下所示。
private void btnMenuCreate_Click(object sender, EventArgs e) { MenuJson productInfo = new MenuJson("產(chǎn)品介紹", new MenuJson[] { new MenuJson("軟件產(chǎn)品介紹", ButtonType.click, "event-software") , new MenuJson("框架源碼產(chǎn)品", ButtonType.click, "event-source") , new MenuJson("軟件定制開發(fā)", ButtonType.click, "event-develop") }); MenuJson frameworkInfo = new MenuJson("框架產(chǎn)品", new MenuJson[] { new MenuJson("Win開發(fā)框架", ButtonType.click, "win"), new MenuJson("WCF開發(fā)框架", ButtonType.click, "wcf"), new MenuJson("混合式框架", ButtonType.click, "mix"), new MenuJson("Web開發(fā)框架", ButtonType.click, "web") ,new MenuJson("代碼生成工具", ButtonType.click, "database2sharp") }); MenuJson relatedInfo = new MenuJson("相關鏈接", new MenuJson[] { new MenuJson("公司介紹", ButtonType.click, "event_company"), new MenuJson("官方網(wǎng)站", ButtonType.view, "http://www.iqidi.com"), new MenuJson("聯(lián)系我們", ButtonType.click, "event_contact"), new MenuJson("應答系統(tǒng)", ButtonType.click, "set-1"), new MenuJson("發(fā)郵件", ButtonType.view, "http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=S31yfX15fn8LOjplKCQm") }); MenuListJson menuJson = new MenuListJson(); menuJson.button.AddRange(new MenuJson[] { productInfo, frameworkInfo, relatedInfo }); //Console.WriteLine(menuJson.ToJson()); if (MessageUtil.ShowYesNoAndWarning("您確認要創(chuàng)建菜單嗎") == System.Windows.Forms.DialogResult.Yes) { ICorpMenuApi bll = new CorpMenuApi(); CommonResult result = bll.CreateMenu(token, menuJson, agentid); Console.WriteLine("創(chuàng)建菜單:" + (result.Success ? "成功" : "失敗:" + result.ErrorMessage)); } } private void btnMenuGet_Click(object sender, EventArgs e) { ICorpMenuApi bll = new CorpMenuApi(); MenuListJson menu = bll.GetMenu(token, agentid); if (menu != null) { Console.WriteLine(menu.ToJson()); } }
調用代碼的測試輸出如下所示。
?
如果對這個《C#開發(fā)微信門戶及應用》系列感興趣,可以關注我的其他文章,系列隨筆如下所示:
C#開發(fā)微信門戶及應用(25)-微信企業(yè)號的客戶端管理功能
C#開發(fā)微信門戶及應用(24)-微信小店貨架信息管理
C#開發(fā)微信門戶及應用(23)-微信小店商品管理接口的封裝和測試
C#開發(fā)微信門戶及應用(22)-微信小店的開發(fā)和使用
C#開發(fā)微信門戶及應用(21)-微信企業(yè)號的消息和事件的接收處理及解密?
C#開發(fā)微信門戶及應用(20)-微信企業(yè)號的菜單管理
C#開發(fā)微信門戶及應用(19)-微信企業(yè)號的消息發(fā)送(文本、圖片、文件、語音、視頻、圖文消息等)
C#開發(fā)微信門戶及應用(18)-微信企業(yè)號的通訊錄管理開發(fā)之成員管理
C#開發(fā)微信門戶及應用(17)-微信企業(yè)號的通訊錄管理開發(fā)之部門管理
C#開發(fā)微信門戶及應用(16)-微信企業(yè)號的配置和使用
C#開發(fā)微信門戶及應用(15)-微信菜單增加掃一掃、發(fā)圖片、發(fā)地理位置功能
?C#開發(fā)微信門戶及應用(14)-在微信菜單中采用重定向獲取用戶數(shù)據(jù)
C#開發(fā)微信門戶及應用(13)-使用地理位置擴展相關應用
C#開發(fā)微信門戶及應用(11)--微信菜單的多種表現(xiàn)方式介紹
C#開發(fā)微信門戶及應用(10)--在管理系統(tǒng)中同步微信用戶分組信息
C#開發(fā)微信門戶及應用(9)-微信門戶菜單管理及提交到微信服務器
C#開發(fā)微信門戶及應用(8)-微信門戶應用管理系統(tǒng)功能介紹
C#開發(fā)微信門戶及應用(7)-微信多客服功能及開發(fā)集成
C#開發(fā)微信門戶及應用(6)--微信門戶菜單的管理操作
C#開發(fā)微信門戶及應用(4)--關注用戶列表及詳細信息管理
C#開發(fā)微信門戶及應用(3)--文本消息和圖文消息的應答
C#開發(fā)微信門戶及應用(2)--微信消息的處理和應答
?
專注于Winform開發(fā)框架/混合式開發(fā)框架、Web開發(fā)框架、Bootstrap開發(fā)框架、微信門戶開發(fā)框架的研究及應用。
??轉載請注明出處
撰寫人:伍華聰??
????
本文摘自 :https://blog.51cto.com/w