C#C#开发微信门户及动(20)-微信企业号的食谱管理

前几篇陆续介绍了过多微信企业号的相干操作,企业号及民众号一致都好起定义菜单,因此他们也可经过API进行菜单的创始、获取列表、删除的操作,因此本篇继续追此中心,介绍公司号的菜单管理操作。

食谱以多状下,能够让我们提供一个飞入口,也可据此来赢得用户信息的要输入,通过OAuth2验证接口,以及从定义的重定向菜单,我们就算得得相应的用户ID,然后一发获取到用户的相关数据,可以显得为客户。

1、菜单的完好介绍

菜单的事件处理如下所示,包括了单击和跳转两个操作,未来铺面号或会见加部分及大众号一样的扫码操作,拍照操作等功用的,目前只有少数单。

官的菜系定义接口包含了下三种操作,菜单创建、列表获取和菜单删除,这点以及民众号操作几乎同一了。

 

2、菜单的实体类定义及接口定义处理

咱们定义菜单,包括定义其的片性能,包含有name, type,
key,url,以及一个对自身引用的子菜单引用,因此菜单就得循环构造多只层次,虽然严格意义上来讲,企业号的菜系和群众号菜单一样,一级三只,二级最多五独,而且尚未三级菜单了。

实体类的UML图示如下所示。

菜单管理的创始操作,官方概念如下所示。

  • 求说明

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"
               }
           ]
      }
   ]
}
  • 参数说明
参数 必须 说明
access_token 调用接口凭证
agentid 企业应用的id,整型。可在应用的设置页面查看
button 一级菜单数组,个数应为1~3个
sub_button 二级菜单数组,个数应为1~5个
type 菜单的响应动作类型,目前有click、view两种类型
name 菜单标题,不超过16个字节,子菜单不超过40个字节
key 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("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、企业号菜单管理接口的调用和拍卖功能

调用的代码和效果图如下所示。

        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.iqidi.com"),
                new MenuJson("联系我们", ButtonType.click, "event_contact"),
                new MenuJson("应答系统", ButtonType.click, "set-1"),    
                new MenuJson("发邮件", 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("您确认要创建菜单吗") == 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#付出微信门户及运用》系列感兴趣,可以关心自身之另文章,系列随笔如下所示:

C#支出微信门户及下(25)-微信企业号的客户端管住效能

C#出微信门户及利用(24)-微信小店货架信息保管

C#支出微信门户及用(23)-微信小店商品管理接口的卷入和测试

C#出微信门户及下(22)-微信小店的开销以及采用

C#支出微信门户及应用(21)-微信企业号的信息和波之接受处理和解密 

C#支付微信门户及动(20)-微信企业号的菜单管理

C#开发微信门户及应用(19)-微信企业号的音发送(文本、图片、文件、语音、视频、图文信息等)

C#开发微信门户及动(18)-微信企业号的通讯录管理出之成员管理

C#支出微信门户及应用(17)-微信企业号的通讯录管理支付之部门管理

C#开微信门户及以(16)-微信企业号的安排与利用

C#付出微信门户及使用(15)-微信菜单增加扫一扫、发图片、发地理位置功能

 C#支出微信门户及用(14)-在微信菜单中利用重定向得到用户数据

C#出微信门户及采取(13)-使用地理位置扩展相关以

C#支出微信门户及利用(12)-使用语音处理

C#出微信门户及用(11)–微信菜单的多种见方法介绍

C#支出微信门户及下(10)–在管制体系中一起微信用户分组信息

C#开微信门户及利用(9)-微信门户菜单管理及交至微信服务器

C#付出微信门户及以(8)-微信门户应用管理网机能介绍

C#开微信门户及采取(7)-微信多客服功能以及开并

C#支出微信门户及利用(6)–微信门户菜单的管住操作

C#出微信门户及用(5)–用户分组信息保管

C#支付微信门户及下(4)–关注用户列表及详细信息管理

C#开发微信门户及应用(3)–文本信以及图文信息之答复

C#支付微信门户及用(2)–微信信息之拍卖及对

C#开发微信门户及动(1)–开始使用微信接口

 

相关文章