當(dāng)前位置:首頁(yè) > IT技術(shù) > 微信平臺(tái) > 正文

C#開發(fā)微信門戶及應(yīng)用(20)-微信企業(yè)號(hào)的菜單管理
2021-07-22 17:55:29

C#開發(fā)微信門戶及應(yīng)用(20)-微信企業(yè)號(hào)的菜單管理

前面幾篇陸續(xù)介紹了很多微信企業(yè)號(hào)的相關(guān)操作,企業(yè)號(hào)和公眾號(hào)一樣都可以自定義菜單,因此他們也可以通過(guò)API進(jìn)行菜單的創(chuàng)建、獲取列表、刪除的操作,因此本篇繼續(xù)探討這個(gè)主體,介紹企業(yè)號(hào)的菜單管理操作。 菜單在很多情況下,能夠給我們提供一個(gè)快速入口,也可以用來(lái)獲取用戶信息的主要入口,通過(guò)OAuth2驗(yàn)證接口,以及自定義的重定向菜單,我們就可以獲取對(duì)應(yīng)的用戶ID,然后進(jìn)一步獲取到用戶的相關(guān)數(shù)據(jù),可以顯示給客戶。

前面幾篇陸續(xù)介紹了很多微信企業(yè)號(hào)的相關(guān)操作,企業(yè)號(hào)和公眾號(hào)一樣都可以自定義菜單,因此他們也可以通過(guò)API進(jìn)行菜單的創(chuàng)建、獲取列表、刪除的操作,因此本篇繼續(xù)探討這個(gè)主體,介紹企業(yè)號(hào)的菜單管理操作。

菜單在很多情況下,能夠給我們提供一個(gè)快速入口,也可以用來(lái)獲取用戶信息的主要入口,通過(guò)OAuth2驗(yàn)證接口,以及自定義的重定向菜單,我們就可以獲取對(duì)應(yīng)的用戶ID,然后進(jìn)一步獲取到用戶的相關(guān)數(shù)據(jù),可以顯示給客戶。

1、菜單的總體介紹

菜單的事件處理如下所示,包括了單擊和跳轉(zhuǎn)兩個(gè)操作,未來(lái)企業(yè)號(hào)可能會(huì)增加一些和公眾號(hào)一樣的掃碼操作,拍照操作等功能的,目前只有兩個(gè)。

C#開發(fā)微信門戶及應(yīng)用(20)-微信企業(yè)號(hào)的菜單管理_微信公眾平臺(tái)及門戶應(yīng)用

官方的菜單定義接口包含了下面三種操作,菜單創(chuàng)建、列表獲取和菜單刪除,這點(diǎn)和公眾號(hào)操作幾乎一樣了。

C#開發(fā)微信門戶及應(yīng)用(20)-微信企業(yè)號(hào)的菜單管理_微信公眾平臺(tái)及門戶應(yīng)用_02

?

2、菜單的實(shí)體類定義和接口定義處理

我們定義菜單,包括定義它的一些屬性,包含有name, type, key,url,以及一個(gè)指向自身引用的子菜單引用,因此菜單就可以循環(huán)構(gòu)造多個(gè)層次,雖然嚴(yán)格意義上來(lái)講,企業(yè)號(hào)的菜單和公眾號(hào)菜單一樣,一級(jí)三個(gè),二級(jí)最多五個(gè),而且沒(méi)有三級(jí)菜單了。

實(shí)體類的UML圖示如下所示。

C#開發(fā)微信門戶及應(yīng)用(20)-微信企業(yè)號(hào)的菜單管理_微信公眾平臺(tái)及門戶應(yīng)用_03

菜單管理的創(chuàng)建操作,官方定義如下所示。

  • 請(qǐng)求說(shuō)明

Https請(qǐng)求方式: POST

https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN&agentid=1

請(qǐng)求包如下:

{
   "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ù)說(shuō)明
參數(shù) 必須 說(shuō)明
access_token 調(diào)用接口憑證
agentid 企業(yè)應(yīng)用的id,整型??稍趹?yīng)用的設(shè)置頁(yè)面查看
button 一級(jí)菜單數(shù)組,個(gè)數(shù)應(yīng)為1~3個(gè)
sub_button 二級(jí)菜單數(shù)組,個(gè)數(shù)應(yīng)為1~5個(gè)
type 菜單的響應(yīng)動(dòng)作類型,目前有click、view兩種類型
name 菜單標(biāo)題,不超過(guò)16個(gè)字節(jié),子菜單不超過(guò)40個(gè)字節(jié)
key click類型必須 菜單KEY值,用于消息接口推送,不超過(guò)128字節(jié)
url view類型必須 網(wǎng)頁(yè)鏈接,員工點(diǎn)擊菜單可打開鏈接,不超過(guò)256字節(jié)
  • 權(quán)限說(shuō)明

管理員須擁有應(yīng)用的管理權(quán)限,并且應(yīng)用必須設(shè)置在回調(diào)模式。

返回結(jié)果

{
   "errcode":0,
   "errmsg":"ok"
}

?

根據(jù)上面官方的定義語(yǔ)義,我們菜單管理的C#管理接口定義如下所示。

    /// <summary>
    /// 企業(yè)號(hào)菜單管理接口定義
    /// </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">菜單對(duì)象</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)建菜單的實(shí)現(xiàn)為例來(lái)介紹微信企業(yè)號(hào)菜單的操作,其他的操作類似處理,都是返回一個(gè)公共的消息類,方便處理和讀取,代碼如下所示。

        /// <summary>
        /// 創(chuàng)建菜單
        /// </summary>
        /// <param name="accessToken">調(diào)用接口憑證</param>
        /// <param name="menuJson">菜單對(duì)象</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è)號(hào)菜單管理接口的調(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("相關(guān)鏈接", 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("應(yīng)答系統(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("您確認(rèn)要?jiǎng)?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è)試輸出如下所示。

C#開發(fā)微信門戶及應(yīng)用(20)-微信企業(yè)號(hào)的菜單管理_微信公眾平臺(tái)及門戶應(yīng)用_04

?

如果對(duì)這個(gè)《C#開發(fā)微信門戶及應(yīng)用》系列感興趣,可以關(guān)注我的其他文章,系列隨筆如下所示:

C#開發(fā)微信門戶及應(yīng)用(25)-微信企業(yè)號(hào)的客戶端管理功能

C#開發(fā)微信門戶及應(yīng)用(24)-微信小店貨架信息管理

C#開發(fā)微信門戶及應(yīng)用(23)-微信小店商品管理接口的封裝和測(cè)試

C#開發(fā)微信門戶及應(yīng)用(22)-微信小店的開發(fā)和使用

C#開發(fā)微信門戶及應(yīng)用(21)-微信企業(yè)號(hào)的消息和事件的接收處理及解密?

C#開發(fā)微信門戶及應(yīng)用(20)-微信企業(yè)號(hào)的菜單管理

C#開發(fā)微信門戶及應(yīng)用(19)-微信企業(yè)號(hào)的消息發(fā)送(文本、圖片、文件、語(yǔ)音、視頻、圖文消息等)

C#開發(fā)微信門戶及應(yīng)用(18)-微信企業(yè)號(hào)的通訊錄管理開發(fā)之成員管理

C#開發(fā)微信門戶及應(yīng)用(17)-微信企業(yè)號(hào)的通訊錄管理開發(fā)之部門管理

C#開發(fā)微信門戶及應(yīng)用(16)-微信企業(yè)號(hào)的配置和使用

C#開發(fā)微信門戶及應(yīng)用(15)-微信菜單增加掃一掃、發(fā)圖片、發(fā)地理位置功能

?C#開發(fā)微信門戶及應(yīng)用(14)-在微信菜單中采用重定向獲取用戶數(shù)據(jù)

C#開發(fā)微信門戶及應(yīng)用(13)-使用地理位置擴(kuò)展相關(guān)應(yīng)用

C#開發(fā)微信門戶及應(yīng)用(12)-使用語(yǔ)音處理

C#開發(fā)微信門戶及應(yīng)用(11)--微信菜單的多種表現(xiàn)方式介紹

C#開發(fā)微信門戶及應(yīng)用(10)--在管理系統(tǒng)中同步微信用戶分組信息

C#開發(fā)微信門戶及應(yīng)用(9)-微信門戶菜單管理及提交到微信服務(wù)器

C#開發(fā)微信門戶及應(yīng)用(8)-微信門戶應(yīng)用管理系統(tǒng)功能介紹

C#開發(fā)微信門戶及應(yīng)用(7)-微信多客服功能及開發(fā)集成

C#開發(fā)微信門戶及應(yīng)用(6)--微信門戶菜單的管理操作

C#開發(fā)微信門戶及應(yīng)用(5)--用戶分組信息管理

C#開發(fā)微信門戶及應(yīng)用(4)--關(guān)注用戶列表及詳細(xì)信息管理

C#開發(fā)微信門戶及應(yīng)用(3)--文本消息和圖文消息的應(yīng)答

C#開發(fā)微信門戶及應(yīng)用(2)--微信消息的處理和應(yīng)答

C#開發(fā)微信門戶及應(yīng)用(1)--開始使用微信接口

?

C#開發(fā)微信門戶及應(yīng)用(20)-微信企業(yè)號(hào)的菜單管理_微信公眾平臺(tái)及門戶應(yīng)用_05主要研究技術(shù):代碼生成工具、會(huì)員管理系統(tǒng)、客戶關(guān)系管理軟件、病人資料管理軟件、Visio二次開發(fā)、酒店管理系統(tǒng)、倉(cāng)庫(kù)管理系統(tǒng)等共享軟件開發(fā)
專注于Winform開發(fā)框架/混合式開發(fā)框架、Web開發(fā)框架、Bootstrap開發(fā)框架、微信門戶開發(fā)框架的研究及應(yīng)用。
??轉(zhuǎn)載請(qǐng)注明出處
C#開發(fā)微信門戶及應(yīng)用(20)-微信企業(yè)號(hào)的菜單管理_微信公眾平臺(tái)及門戶應(yīng)用_05撰寫人:伍華聰??
????

?

本文摘自 :https://blog.51cto.com/w

開通會(huì)員,享受整站包年服務(wù)立即開通 >