前不久微信上线了个性化菜单接口,Senparc.Weixin SDK也已经同步更新。
本次更新升级Senparc.Weixin.MP版本到v13.5.2,依赖Senparc.Weixin版本4.5.4。.NET4.5(master) / .NET4.0两个分支都已同步更新。
由于个性化菜单变化比较大,所以对整个菜单接口进行了目前为止最大面积的重构(可以向下兼容)。
相比之前的自定义菜单,目前整个菜单相关功能针对文件结构进行了全面的整理,:
接口
菜单接口已经全部归入CommonAPIs/Menu目录下,CommonAPI部分类下面再分出3个类文件:
文件名 | 说明 |
CommonAPI.Menu.Common.cs | 菜单公共方法 |
CommonAPI.Menu.Conditional.cs | 个性化菜单 |
CommonAPI.Menu.Custom.cs | 普通自定义菜单 |
菜单接口文件
其中自定义菜单接口已经确保向下兼容,以前如果有已经开发自定义菜单功能的项目,可以放心升级。
个性化菜单类内容如下:
1 /*---------------------------------------------------------------- 2 copyright (C) 2015 Senparc 3 4 文件名:CommonAPI.Menu.Conditional 5 文件功能描述:个性化自定义菜单接口 6 7 8 创建标识:Senparc - 20151222 9 10 修改标识:Senparc - 2015122211 修改描述:v13.5.1 添加个性化菜单接口12 ----------------------------------------------------------------*/13 14 /*15 API:http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.HTML16 17 18 using Senparc.Weixin.EntitIEs;19 Senparc.Weixin.Helpers;20 Senparc.Weixin.MP.EntitIEs;21 Senparc.Weixin.MP.EntitIEs.Menu;22 23 namespace Senparc.Weixin.MP.CommonAPIs24 {25 public partial class CommonAPI26 {27 /// <summary>28 /// 创建个性化菜单29 </summary>30 <param name="accesstokenOrappid">Accesstoken或AppID。当为AppID时,如果Accesstoken错误将自动获取一次。当为null时,获取当前注册的第一个AppID。</param>31 <param name="buttonData">菜单内容32 <returns></returns>33 static CreateMenuConditionalResult CreateMenuConditional(string accesstokenOrappid,ConditionalbuttonGroup buttonData,int timeOut = Config.TIME_OUT)34 {35 return APIHandlerWapper.TryCommonAPI(accesstoken =>36 {37 var urlFormat = "https://API.weixin.qq.com/cgi-bin/menu/addconditional?access_token={0}";38 var JsonSetting = new JsonSetting(true);39 return CommonjsonSend.Send<CreateMenuConditionalResult>(accesstoken,urlFormat,buttonData,timeOut: timeOut,JsonSetting: JsonSetting);40 41 },accesstokenOrappid);42 }43 44 45 #region GetMenu46 47 使用普通自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息,请见自定义菜单查询接口的说明 48 49 50 测试个性化菜单匹配结果51 52 <param name="accesstokenOrappid"></param>53 <param name="userID">可以是粉丝的OpenID,也可以是粉丝的微信号。54 55 static MenuTryMatchResult TryMatch(string userID)56 57 58 {59 var url = string.Format(https://API.weixin.qq.com/cgi-bin/menu/delconditional?access_token={0},accesstoken);60 61 var data = new62 {63 user_ID = userID64 };65 66 return CommonjsonSend.Send<MenuTryMatchResult>67 68 },1)">69 70 71 #endregion72 73 74 删除菜单75 76 77 <param name="menuID">菜单ID78 79 static WxJsonResult DeleteMenuConditional( menuID)80 81 82 83 84 85 86 87 menuID = menuID88 89 90 return CommonjsonSend.Send(accesstoken,1)">91 92 93 94 95 96 使用普通自定义菜单删除接口可以删除所有自定义菜单(包括默认菜单和全部个性化菜单),请见自定义菜单删除接口的说明。 97 }98 }VIEw Code
菜单公共方法中,GetbuttonGroup()方法添加了一个参数:buttonGroup,用于指定菜单按钮列表类型(属于个性化菜单还是自定义菜单)。
实体
有关实体类的变化都体现在EntitIEs/Menu目录下,新建了IbuttonGroupBase接口以及buttonGroupBase基类。buttonGroup(自定义菜单)和ConditionalbuttonGroup(个性化菜单)按钮都继承自buttonGroupBase。
EntitIEs/Menu/buttons/目录下的所有按钮类型是通用的。
返回类型
重新整理的返回类型都在EntitIEs/JsonResult/Menu/目录下:
注意点自定义菜单和个性化菜单的菜单添加、删除接口是不同的,使用的时候需要调用各自不同的接口。如果使用个性化菜单,MenuMatchRule中的规则必须至少填写一个。对于使用了个性化菜单和不使用,获取菜单时返回的数据是不同的(前者包含后者),因此SDK针对这两种情况只提供了同一个实体:GetMenuResult(对应的接收消息实体为GetMenuResultFull)。有关个性化菜单的信息(列表)可以直接从GetMenuResult.conditionalmenu读取,如果为null或者列表为空,则表示没有个性化菜单。
测试和可视化编辑
源代码中提供了一个简易的可视化编辑工具,同时可以查看得到的菜单JsON数据格式(显示的是 *** 作的实体转换成的JsON,非原始JsON)。
地址:https://sdk.weixin.senparc.com/Menu
系列教程索引
地址:http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html
Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册Senparc.Weixin.MP SDK 微信公众平台开发教程(二):成为开发者Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证Senparc.Weixin.MP SDK 微信公众平台开发教程(四):Hello WorldSenparc.Weixin.MP SDK 微信公众平台开发教程(五):使用Senparc.Weixin.MP SDKSenparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandlerSenparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明Senparc.Weixin.MP SDK 微信公众平台开发教程(九):自定义菜单接口说明Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明Senparc.Weixin.MP SDK 微信公众平台开发教程(十二):OAuth2.0说明Senparc.Weixin.MP SDK 微信公众平台开发教程(十三):地图相关接口说明Senparc.Weixin.MP SDK 微信公众平台开发教程(十四):请求消息去重Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密@[email protected] SDK 微信公众平台开发教程(十七):个性化菜单接口说明Senparc.Weixin.MP SDK 微信公众平台开发教程(十八):Web代理功能Senparc.Weixin.MP SDK 微信公众平台开发教程(十九):MessageHandler 的未知类型消息处理Senparc.Weixin.MP SDK 微信公众平台开发教程(二十):使用菜单消息功能Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试 总结以上是内存溢出为你收集整理的Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明 Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密全部内容,希望文章能够帮你解决Senparc.Weixin.MP SDK 微信公众平台开发教程(十七):个性化菜单接口说明 Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)