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

前几首陆续介绍了成千上万微信企业号的有关操作,企业号及民众号一致都得打定义菜单,因此他们为堪由此API进行菜单的创造、获取列表、删除的操作,因此本篇继续探讨这个主体,介绍公司号的菜系管理操作。

菜单以众景象下,能够为我们提供一个火速入口,也得以据此来赢得用户信息的机要输入,通过OAuth2验证接口,以及由定义之重定向菜单,我们即便足以抱相应的用户ID,然后一发获得到用户之相关数据,可以来得为客户。

1、菜单的整介绍

菜单的事件处理如下所示,包括了单击和跳转两个操作,未来店家号或会见增多部分暨群众号同样的扫码操作,拍照操作等效果的,目前只有零星独。

图片 1

合法的食谱定义接口包含了下面三栽操作,菜单创建、列表获取和菜单删除,这点以及民众号操作几乎如出一辙了。

图片 2

 

2、菜单的实业类定义跟接口定义处理

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

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

图片 3

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

  • 吁说明

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());
            }
        }

调用代码的测试输出如下所示。

图片 4

 

一旦对这个《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)–开始应用微信接口

 

相关文章