当前位置: 首页 > 科技观察

微信企业号菜单管理

时间:2023-03-23 10:50:11 科技观察

前面的文章介绍了很多微信企业号的相关操作。和公众号一样,企业号可以自定义菜单,所以也可以创建菜单,获取列表,删除操作,所以本文继续讨论这个话题,介绍企业号的菜单管理操作。很多时候,菜单可以为我们提供一个快捷的入口,也可以用来获取用户信息的主要入口。通过OAuth2认证接口和一个自定义的重定向菜单,我们可以获取到对应的用户ID,进而进一步获取到用户的相关数据即可展示给客户。1、菜单的整体介绍菜单的事件处理如下,包括点击和跳转两个操作。以后企业号可能会像公众号一样增加一些扫码操作、拍照操作等功能。目前只有两个。官方的菜单定义界面包括以下三个操作,菜单创建,列表获取,菜单删除,和公众号操作几乎一样。2、处理菜单的实体类定义和接口定义。我们定义菜单,包括定义它的一些属性,包括name、type、key、url,还有一个指向自身的子菜单引用,所以菜单可以循环构造多个菜单Level,虽然严格来说,企业的菜单account和公众号菜单一样,一级三个,二级最多五个,没有三级菜单。实体类的UML图如下所示。菜单管理的创建操作官方定义如下。请求说明https请求方式:POSThttps://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN&agentid=1请求包如下:{"button":[{"type":"click","name":"今日歌曲","key":"V1001_TODAY_MUSIC"},{"name":"Menu","sub_button":[{"type":"view","name":"Search","url":"http://www.soso.com/"},{"type":"click","name":"Likeus","key":"V1001_GOOD"}]}]}参数description参数必须指明access_token为调用接口凭证agentid为企业应用的id,整数可以在应用设置页面查看button为一级菜单数组,编号应为1~3sub_button无二级菜单数组,编号应为1~5type为菜单Response动作类型,目前有click和view两种name为菜单标题,不超过16字节,submenu不超过40字节keyclicktype必须为菜单KEY值,用于消息界面推送,不超过128个字符该部分的url查看类型必须是网页链接。员工可以单击菜单打开链接。权限不超过256字节。管理员必须有应用的管理权限,应用必须设置为回调模式。返回结果{"errcode":0,"errmsg":"ok"}根据上面官方定义的语义,我们的菜单管理的C#管理接口定义如下。///

///企业账号菜单管理接口定义///publicinterfaceICorpMenuApi{//////获取菜单数据//////调用接口凭证///MenuListJsonGetMenu(stringaccessToken,stringagentid);//////创建菜单//////调用接口凭证///菜单对象///CommonResultCreateMenu(stringaccessToken,MenuListJsonmenuJson,stringagentid);//////删除菜单//////调用接口凭证///CommonResultDeleteMenu(stringaccessToken,stringagentid);下面以实现创建菜单为例,介绍微信企业号菜单的操作。其他操作类似处理,返回一个公共的消息类,方便处理和读取。代码如下。//////创建菜单//////调用接口凭证///菜单对象///publicCommonResultCreateMenu(stringaccessToken,MenuListJsonmenuJson,stringagentid){varurl=string.Format("https://qyapi.weixin.qq.com/cgi-bin/menu/create?access_token={0}&agentid={1}",accessToken,agentid);stringpostData=menuJson.ToJson();returnHelper.GetCorpExecuteResult(url,postData);}3。企业账号菜单管理界面调用及处理效果代码及效果图如下。privatevoidbtnMenuCreate_Click(objectsender,EventArgse){MenuJsonproductInfo=newMenuJson("产品介绍",newMenuJson[]{newMenuJson("软件产品介绍",ButtonType.click,"事件软件"),newMenuJson("帧源产品",ButtonType.click"event-source"),newMenuJson("软件定制开发",ButtonType.click,"event-develop")});MenuJsonframeworkInfo=newMenuJson("框架产品",newMenuJson[]{newMenuJson("Win开发框架",ButtonType.click,"win"),newMenuJson("WCF开发框架",ButtonType.click,"wcf"),newMenuJson("混合框架",ButtonType.click,"mix"),newMenuJson("Web开发框架",ButtonType.click,"web"),newMenuJson("代码生成工具",ButtonType.click,"database2sharp")});MenuJsonrelatedInfo=newMenuJson("相关链接",newMenuJson[]{newMenuJson("公司介绍",ButtonType.click,"event_company"),newMenuJson("官网",ButtonType.view,"http:///www.iqidi.com"),newMenuJson("联系我们",ButtonType.click,"event_contact"),newMenuJson("回复系统",ButtonType.click,"set-1"),newMenuJson("发送邮件",ButtonType.view,"http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=S31yfX15fn8LOjplKCQm")});MenuListJsonmenuJson=newMenuListJson();menuJson.button.AddRange(newMenuJson[]{productInfo,frameworkInfo,relatedInfo});//Console.WriteLine(menuJson.ToJson());if(MessageUtil.ShowYesNoAndWarning("你确定要创建菜单吗?")==System.Windows.Forms.DialogResult.Yes){ICorpMenuApibll=newCorpMenuApi();CommonResultresult=bll.CreateMenu(token,menuJson,agentid);Console.WriteLine("创建菜单:"+(result.Success?"Success":"失败:"+result.ErrorMessage));}}privatevoidbtnMenuGet_Click(objectsender,EventArgse){ICorpMenuApibll=newCorpMenuApi();MenuListJsonmenu=bll.GetMenu(token,agentid);if(menu!=null){Console.WriteLine(menu.ToJson());测试输出如下原文来自:http://www.cnblogs.com/wuhuacong/p/3995678.html