前面幾篇陸續(xù)介紹了很多微信企業(yè)號的相關操作,企業(yè)號和公眾號一樣都可以自定義菜單,因此他們也可以通過API進行菜單的創(chuàng)建、獲取列表、刪除的操作,因此本篇繼續(xù)探討這個主體,介紹企業(yè)號的菜單管理操作。
菜單在很多情況下,能夠給我們提供一個快速入口,也可以用來獲取用戶信息的主要入口,通過OAuth2驗證接口,以及自定義的重定向菜單,我們就可以獲取對應的用戶ID,然后進一步獲取到用戶的相關數(shù)據(jù),可以顯示給客戶。
1、菜單的總體介紹
菜單的事件處理如下所示,包括了單擊和跳轉(zhuǎn)兩個操作,未來企業(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 | 是 | 調(diào)用接口憑證 |
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é) |
權限說明
管理員須擁有應用的管理權限,并且應用必須設置在回調(diào)模式。
返回結(jié)果
{ ???"errcode":0, ???"errmsg":"ok" }
?
根據(jù)上面官方的定義語義,我們菜單管理的C#管理接口定義如下所示。
????///?<summary> ????///?企業(yè)號菜單管理接口定義????///?</summary> ????public?interface?ICorpMenuApi ????{????????///?<summary> ????????///?獲取菜單數(shù)據(jù)????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<returns></returns> ????????MenuListJson?GetMenu(string?accessToken,?string?agentid);????????///?<summary> ????????///?創(chuàng)建菜單????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<param name="menuJson">菜單對象</param> ????????///?<returns></returns> ????????CommonResult?CreateMenu(string?accessToken,?MenuListJson?menuJson,?string?agentid);????????///?<summary> ????????///?刪除菜單????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<returns></returns> ????????CommonResult?DeleteMenu(string?accessToken,?string?agentid); ????}
我們以創(chuàng)建菜單的實現(xiàn)為例來介紹微信企業(yè)號菜單的操作,其他的操作類似處理,都是返回一個公共的消息類,方便處理和讀取,代碼如下所示。
????????///?<summary> ????????///?創(chuàng)建菜單????????///?</summary> ????????///?<param name="accessToken">調(diào)用接口憑證</param> ????????///?<param name="menuJson">菜單對象</param> ????????///?<returns></returns> ????????public?CommonResult?CreateMenu(string?accessToken,?MenuListJson?menuJson,?string?agentid) ????????{????????????var?url?=?string.Format("http://www.miracleart.cn/{0}&agentid={1}",?accessToken,?agentid);????????????string?postData?=?menuJson.ToJson();????????????return?Helper.GetCorpExecuteResult(url,?postData); ????????}
?
3、企業(yè)號菜單管理接口的調(diào)用和處理效果
調(diào)用的代碼和效果圖如下所示。
????????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.miracleart.cn/"),????????????????new?MenuJson("聯(lián)系我們",?ButtonType.click,?"event_contact"),????????????????new?MenuJson("應答系統(tǒng)",?ButtonType.click,?"set-1"),???? ????????????????new?MenuJson("發(fā)郵件",?ButtonType.view,?"http://www.miracleart.cn/") ????????????}); ????????????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()); ????????????} ????????}
調(diào)用代碼的測試輸出如下所示。
?
更多C#開發(fā)微信門戶及應用微信企業(yè)號的菜單管理?相關文章請關注PHP中文網(wǎng)!

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)