首頁  >  文章  >  微信小程式  >  C#開發微信入口網站及應用程式微信企業號的選單管理

C#開發微信入口網站及應用程式微信企業號的選單管理

高洛峰
高洛峰原創
2017-03-02 09:32:461775瀏覽

前面幾篇陸續介紹了許多微信企業號的相關操作,企業號和公眾號一樣都可以自訂選單,因此他們也可以透過API進行選單的建立、取得清單、刪除的操作,因此本篇繼續探討這個主體,介紹企業號的選單管理操作。

選單在許多情況下,能夠提供我們一個快速入口,也可以用來獲取用戶資訊的主要入口,透過OAuth2驗證接口,以及自訂的重定向選單,我們就可以取得對應的用戶ID,然後進一步取得到用戶的相關數據,可以顯示給客戶。

1、選單的整體介紹

選單的事件處理如下所示,包括了點擊和跳到兩個動作,未來企業號可能會增加一些和公眾號一樣的掃碼操作,拍照操作等功能的,目前只有兩個。

C#开发微信门户及应用微信企业号的菜单管理

官方的選單定義介麵包含了以下三種操作,選單建立、清單取得和選單刪除,這點和公眾號操作幾乎一樣了。

C#开发微信门户及应用微信企业号的菜单管理

 

2、選單的實體類別定義和介面定義處理

我們定義選單,包括定義它的一些屬性,包含有name, type, key,url,以及一個指向自身引用的子菜單引用,因此菜單就可以循環構造多個層次,雖然嚴格意義上來講,企業號的菜單和公眾號菜單一樣,一級三個,二級最多五個,而且沒有三級菜單了。

實體類別的UML圖示如下所示。

C#开发微信门户及应用微信企业号的菜单管理

選單管理的建立操作,官方定義如下所示。

  • 請求說明

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"
               }
           ]
      }
   ]
}
  • 參數說明

##是呼叫介面憑證agentid是#企業應用程式的id,整數型。可在套用的設定頁面查看button是一級選單數組,個數應為1~3個sub_button否二級選單數組,個數應為1~5個##typenamekey
##參數 必須 說明
#access_token
選單的回應動作類型,目前有click、view兩種類型
選單標題,不超過16個位元組,子選單不超過40個位元組
click型別必須
  • 選單KEY值,用於訊息接口推送,不超過128字節

url

#view類型必須

網頁鏈接,員工點擊菜單可打開鏈接,不超過256位元組

權限說明

管理員須擁有應用程式的管理權限,並且應用程式必須設定在回調模式。

傳回結果

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

 

根據上述官方的定義語義,我們選單管理的C#管理介面定義如下所示。

    /// <summary>
    /// 企业号菜单管理接口定义    /// </summary>
    public interface ICorpMenuApi
    {        /// <summary>
        /// 获取菜单数据        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <returns></returns>
        MenuListJson GetMenu(string accessToken, string agentid);        /// <summary>
        /// 创建菜单        /// </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);
    }

我們以創建選單的實作為例來介紹微信企業號選單的操作,其他的操作類似處理,都是回傳一個公共的訊息類,方便處理和讀取,程式碼如下所示。

        /// <summary>
        /// 创建菜单        /// </summary>
        /// <param name="accessToken">调用接口凭证</param>
        /// <param name="menuJson">菜单对象</param>
        /// <returns></returns>
        public CommonResult CreateMenu(string accessToken, MenuListJson menuJson, string agentid)
        {            var url = string.Format("http://www.php.cn/{0}&agentid={1}", accessToken, agentid);            string postData = menuJson.ToJson();            return Helper.GetCorpExecuteResult(url, postData);
        }

C#开发微信门户及应用微信企业号的菜单管理

 

3、企業號選單管理介面的呼叫與處理效果


呼叫的程式碼和效果圖如下所示。

        private void btnMenuCreate_Click(object sender, EventArgs e)
        {
            MenuJson productInfo = new MenuJson("产品介绍", new MenuJson[] { 
                new MenuJson("软件产品介绍", ButtonType.click, "event-software")
                , new MenuJson("框架源码产品", ButtonType.click, "event-source")
                , new MenuJson("软件定制开发", ButtonType.click, "event-develop")
            });

            MenuJson frameworkInfo = new MenuJson("框架产品", new MenuJson[] { 
                new MenuJson("Win开发框架", ButtonType.click, "win"),                new MenuJson("WCF开发框架", ButtonType.click, "wcf"),                new MenuJson("混合式框架", ButtonType.click, "mix"), 
                new MenuJson("Web开发框架", ButtonType.click, "web")
                ,new MenuJson("代码生成工具", ButtonType.click, "database2sharp")
            });

            MenuJson relatedInfo = new MenuJson("相关链接", new MenuJson[] { 
                new MenuJson("公司介绍", ButtonType.click, "event_company"),                new MenuJson("官方网站", ButtonType.view, "http://www.php.cn/"),                new MenuJson("联系我们", ButtonType.click, "event_contact"),                new MenuJson("应答系统", ButtonType.click, "set-1"),    
                new MenuJson("发邮件", ButtonType.view, "http://www.php.cn/")
            });

            MenuListJson menuJson = new MenuListJson();
            menuJson.button.AddRange(new MenuJson[] { productInfo, frameworkInfo, relatedInfo });            //Console.WriteLine(menuJson.ToJson());

            if (MessageUtil.ShowYesNoAndWarning("您确认要创建菜单吗") == System.Windows.Forms.DialogResult.Yes)
            {
                ICorpMenuApi bll = new CorpMenuApi(); 
                CommonResult result = bll.CreateMenu(token, menuJson, agentid);
                Console.WriteLine("创建菜单:" + (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#開發微信入口網站及應用微信企業號的選單管理 相關文章請追蹤PHP中文網! ###
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn