0

0

微信公众平台开发:个性化菜单接口说明

高洛峰

高洛峰

发布时间:2017-02-27 13:45:09

|

2621人浏览过

|

来源于php中文网

原创

前不久微信上线了个性化菜单接口,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 普通自定义菜单

菜单接口文件

  其中自定义菜单接口已经确保向下兼容,以前如果有已经开发自定义菜单功能的项目,可以放心升级。

  个性化菜单类内容如下:

/*----------------------------------------------------------------
    Copyright (C) 2015 Senparc
    
    文件名:CommonApi.Menu.Conditional
    文件功能描述:个性化自定义菜单接口
    
    
    创建标识:Senparc - 20151222
        
    修改标识:Senparc - 20151222
    修改描述:v13.5.1 添加个性化菜单接口
----------------------------------------------------------------*/

/*
    API:http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html
 */

using Senparc.Weixin.Entities;
using Senparc.Weixin.Helpers;
using Senparc.Weixin.MP.Entities;
using Senparc.Weixin.MP.Entities.Menu;

namespace Senparc.Weixin.MP.CommonAPIs
{
    public partial class CommonApi
    {
        /// 
        /// 创建个新华菜单
        /// 
        /// AccessToken或AppId。当为AppId时,如果AccessToken错误将自动获取一次。当为null时,获取当前注册的第一个AppId。
        /// 菜单内容
        /// 
        public static CreateMenuConditionalResult CreateMenuConditional(string accessTokenOrAppId, ConditionalButtonGroup buttonData, int timeOut = Config.TIME_OUT)
        {
            return ApiHandlerWapper.TryCommonApi(accessToken =>
             {
                 var urlFormat = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token={0}";
                 var jsonSetting = new JsonSetting(true);
                 return CommonJsonSend.Send(accessToken, urlFormat, buttonData, timeOut: timeOut, jsonSetting: jsonSetting);

             }, accessTokenOrAppId);
        }


        #region GetMenu

        /* 使用普通自定义菜单查询接口可以获取默认菜单和全部个性化菜单信息,请见自定义菜单查询接口的说明 */

        /// 
        /// 测试个性化菜单匹配结果
        /// 
        /// 
        /// 可以是粉丝的OpenID,也可以是粉丝的微信号。
        /// 
        public static MenuTryMatchResult TryMatch(string accessTokenOrAppId, string userId)
        {
            return ApiHandlerWapper.TryCommonApi(accessToken =>
            {
                var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token={0}", accessToken);

                var data = new
                {
                    user_id = userId
                };

                return CommonJsonSend.Send(accessToken, url, data, CommonJsonSendType.POST);

            }, accessTokenOrAppId);
        }

        #endregion

        /// 
        /// 删除菜单
        /// 
        /// 
        /// 菜单Id
        /// 
        public static WxJsonResult DeleteMenuConditional(string accessTokenOrAppId, string menuId)
        {
            return ApiHandlerWapper.TryCommonApi(accessToken =>
            {
                var url = string.Format("https://api.weixin.qq.com/cgi-bin/menu/delconditional?access_token={0}", accessToken);

                var data = new
                {
                    menuId = menuId
                };

                return CommonJsonSend.Send(accessToken, url, data, CommonJsonSendType.POST);

            }, accessTokenOrAppId);

        }

        /* 使用普通自定义菜单删除接口可以删除所有自定义菜单(包括默认菜单和全部个性化菜单),请见自定义菜单删除接口的说明。 */
    }
}

  菜单公共方法中,GetButtonGroup()方法添加了一个参数:buttonGroup,用于指定菜单按钮列表类型(属于个性化菜单还是自定义菜单)。

  

实体

  有关实体类的变化都体现在Entities/Menu目录下,新建了IButtonGroupBase接口以及ButtonGroupBase基类。ButtonGroup(自定义菜单)和ConditionalButtonGroup(个性化菜单)按钮都继承自ButtonGroupBase。

  Entities/Menu/Buttons/目录下的所有按钮类型是通用的。

淘特微信宝
淘特微信宝

淘特微信宝是淘特CMS团队最新研制的微信公众平台管理工具包,该产品提供一个后台管理多个微信公众号功能,可以一站式管理多个微信公众号的自动回复消息、自定义菜单等功能,通过后台可视化操作免去微信接口程序开发的繁锁工作,令不懂程序的人也能灵活管理微信公众号。

下载

 

返回类型

  重新整理的返回类型都在Entities/JsonResult/Menu/目录下:

微信公众平台开发:个性化菜单接口说明 

 

注意点

  1. 自定义菜单和个性化菜单的菜单添加、删除接口是不同的,使用的时候需要调用各自不同的接口。

  2. 如果使用个性化菜单,MenuMatchRule中的规则必须至少填写一个。

  3. 对于使用了个性化菜单和不使用,获取菜单时返回的数据是不同的(前者包含后者),因此SDK针对这两种情况只提供了同一个实体:GetMenuResult(对应的接收消息实体为GetMenuResultFull)。有关个新华菜单的信息(列表)可以直接从GetMenuResult.conditionalmenu读取,如果为null或者列表为空,则表示没有个性化菜单。

 

测试和可视化编辑

  源代码中提供了一个简易的可视化编辑工具,同时可以查看得到的菜单JSON数据格式(显示的是操作的实体转换成的JSON,非原始JSON)。

更多微信公众平台开发:个性化菜单接口说明相关文章请关注PHP中文网!

相关文章

微信app下载
微信app下载

微信是一款手机通信软件,支持通过手机网络发送语音短信、视频、图片和文字。微信可以单聊及群聊,还能根据地理位置找到附近的人,带给大家全新的移动沟通体验,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C++ 设计模式与软件架构
C++ 设计模式与软件架构

本专题深入讲解 C++ 中的常见设计模式与架构优化,包括单例模式、工厂模式、观察者模式、策略模式、命令模式等,结合实际案例展示如何在 C++ 项目中应用这些模式提升代码可维护性与扩展性。通过案例分析,帮助开发者掌握 如何运用设计模式构建高质量的软件架构,提升系统的灵活性与可扩展性。

8

2026.01.30

c++ 字符串格式化
c++ 字符串格式化

本专题整合了c++字符串格式化用法、输出技巧、实践等等内容,阅读专题下面的文章了解更多详细内容。

8

2026.01.30

java 字符串格式化
java 字符串格式化

本专题整合了java如何进行字符串格式化相关教程、使用解析、方法详解等等内容。阅读专题下面的文章了解更多详细教程。

7

2026.01.30

python 字符串格式化
python 字符串格式化

本专题整合了python字符串格式化教程、实践、方法、进阶等等相关内容,阅读专题下面的文章了解更多详细操作。

1

2026.01.30

java入门学习合集
java入门学习合集

本专题整合了java入门学习指南、初学者项目实战、入门到精通等等内容,阅读专题下面的文章了解更多详细学习方法。

20

2026.01.29

java配置环境变量教程合集
java配置环境变量教程合集

本专题整合了java配置环境变量设置、步骤、安装jdk、避免冲突等等相关内容,阅读专题下面的文章了解更多详细操作。

17

2026.01.29

java成品学习网站推荐大全
java成品学习网站推荐大全

本专题整合了java成品网站、在线成品网站源码、源码入口等等相关内容,阅读专题下面的文章了解更多详细推荐内容。

19

2026.01.29

Java字符串处理使用教程合集
Java字符串处理使用教程合集

本专题整合了Java字符串截取、处理、使用、实战等等教程内容,阅读专题下面的文章了解详细操作教程。

3

2026.01.29

Java空对象相关教程合集
Java空对象相关教程合集

本专题整合了Java空对象相关教程,阅读专题下面的文章了解更多详细内容。

6

2026.01.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共64课时 | 6.7万人学习

Uniapp180分钟快速入门
Uniapp180分钟快速入门

共25课时 | 4.6万人学习

Uniapp从零开始实现新闻资讯应用
Uniapp从零开始实现新闻资讯应用

共67课时 | 9.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号