微信服务号自定义菜单全解析:类型与 JSON 配置枚举详解

微信服务号的自定义菜单是连接公众号与用户的核心交互入口,合理配置菜单类型不仅能提升用户体验,还能高效引导用户完成操作(如跳转页面、触发消息、调用功能等)。本文将全面拆解微信服务号菜单的类型体系,结合官方 JSON 配置规范,逐一说明各类菜单的枚举值、适用场景及配置示例。

一、微信服务号菜单的核心分类

微信服务号自定义菜单分为两大层级:一级菜单(最多 3 个)和二级菜单(每个一级菜单下最多 5 个),所有菜单按功能可划分为「点击型菜单」和「跳转型菜单」两大类,官方通过不同的type枚举值区分具体功能,且部分类型仅支持服务号(订阅号权限受限)。

核心前提:菜单配置的 JSON 结构规范

无论哪种菜单类型,JSON 配置的基础结构需遵循微信官方格式,示例骨架如下:

{
  "button": [
    {
      "name": "一级菜单1", // 菜单名称,不超过16个汉字
      "sub_button": [      // 二级菜单列表(无二级则省略)
        {
          "type": "枚举值", // 菜单类型核心枚举
          "name": "二级菜单1", // 二级菜单名称,不超过40个汉字
          "key": "自定义标识", // 点击型菜单必填
          "url": "跳转链接"    // 跳转型菜单必填
        }
      ]
    },
    {
      "name": "一级菜单2",
      "type": "枚举值",
      "key": "自定义标识",
      "url": "跳转链接"
    }
  ]
}

二、菜单类型枚举值全解析(按功能分类)

微信官方定义的菜单type枚举值共 13 种(含特殊场景类型),其中服务号常用核心类型为 10 种,以下按「点击触发」「跳转链接」「特殊功能」三类逐一说明:

第一类:点击触发型菜单(type 枚举值)

点击后触发公众号被动回复消息 / 事件,需开发者在后台配置消息回复逻辑,核心枚举值如下:

枚举值名称适用场景必填参数权限说明
click点击推事件最基础的点击触发,开发者自定义事件 key,后台接收CLICK事件后回复消息key(自定义)服务号 / 订阅号均支持
scancode_push扫码推事件点击后弹出扫码界面,扫码后直接将结果推送给开发者后台,不弹出消息提示框key(自定义)仅服务号支持
scancode_waitmsg扫码推事件且弹出消息接收中提示框点击后扫码,扫码后弹出 “消息接收中” 提示框,再将结果推送给后台key(自定义)仅服务号支持
pic_sysphoto弹出系统拍照发图点击后调用系统相机拍照,拍照后将图片发送给开发者后台key(自定义)仅服务号支持
pic_photo_or_album弹出拍照或者相册发图点击后可选择 “拍照” 或 “从相册选图”,选择后将图片发送给后台key(自定义)仅服务号支持
pic_weixin弹出微信相册发图器点击后调用微信相册(仅微信内保存的图片),选择后将图片发送给后台key(自定义)仅服务号支持
location_select弹出地理位置选择器点击后调用微信定位功能,选择位置后将坐标信息发送给后台key(自定义)仅服务号支持
media_id下发消息(除文本外)点击后直接推送公众号已上传的永久素材(图片、语音、视频、图文),无需后台处理key(素材 media_id)仅认证服务号支持
view_limited跳转图文消息 URL点击后跳转至公众号永久图文素材的详情页(替代已废弃的news类型)key(素材 media_id)仅认证服务号支持
点击型菜单配置示例(以clickmedia_id为例)
{
  "button": [
    {
      "name": "点击回复",
      "type": "click",
      "key": "V1001_CLICK_TEST" // 开发者自定义key,后台接收该值后回复消息
    },
    {
      "name": "推送图片",
      "type": "media_id",
      "key": "MEDIA_ID_123456" // 公众号素材库中图片的media_id
    }
  ]
}

第二类:跳转链接型菜单(核心枚举:view

点击后直接跳转至指定 URL,是服务号最常用的菜单类型,仅需配置url参数,枚举值唯一:

枚举值名称适用场景必填参数权限说明
view跳转网页点击后跳转至外部网页(需为 HTTPS)、公众号文章、小程序落地页等url(跳转链接)服务号 / 订阅号均支持(未认证订阅号仅支持跳转公众号内链接)
跳转型菜单配置示例(含外部网页、公众号文章)
{
  "button": [
    {
      "name": "官网首页",
      "type": "view",
      "url": "https://www.example.com" // 外部HTTPS链接(认证服务号无限制)
    },
    {
      "name": "公众号文章",
      "type": "view",
      "url": "https://mp.weixin.qq.com/s/XXXXXX" // 公众号文章链接
    }
  ]
}

第三类:特殊场景菜单(小程序菜单)

微信支持菜单跳转小程序,无独立type枚举,仍使用view类型,但url需按固定格式配置,且需满足权限要求:

小程序菜单配置规则
  1. 仅认证服务号支持;
  2. url格式:https://mp.weixin.qq.com/wxaopen/safehome?appid=小程序APPID&path=小程序页面路径
  3. 需先在公众号后台绑定小程序,且小程序与公众号主体一致。
小程序菜单配置示例
{
  "button": [
    {
      "name": "打开小程序",
      "type": "view",
      "url": "https://mp.weixin.qq.com/wxaopen/safehome?appid=wx1234567890abcdef&path=pages/index/index"
    }
  ]
}

三、关键注意事项

  1. 权限限制:未认证服务号仅支持clickview(仅跳转公众号内链接);认证服务号解锁所有类型,且view类型可跳转任意 HTTPS 链接;
  2. 参数规范
    • name:一级菜单≤16 字,二级菜单≤40 字,支持 Emoji;
    • url:必须为 HTTPS 协议(微信强制要求);
    • key/media_id:需与后台逻辑 / 素材库一致,否则菜单无效;
  3. 生效时间:菜单配置后约 5 分钟生效,测试时可取消关注后重新关注;
  4. 废弃类型news(下发图文消息)已废弃,替代方案为view_limited
  5. 事件接收:点击型菜单触发的事件,需通过微信公众号开发文档的「接收事件推送」接口接收处理。

四、总结

微信服务号菜单的type枚举值围绕「交互触发」和「链接跳转」两大核心设计,其中:

  • 基础交互用click,素材直推用media_id/view_limited
  • 外部链接跳转核心用view,小程序跳转也基于view扩展;
  • 扫码、拍照、定位等功能型菜单(scancode_*/pic_*/location_select)仅服务号支持,适合场景化交互。

开发者需根据业务需求选择对应枚举值,同时遵循微信的权限和参数规范,才能实现菜单的稳定运行和高效交互。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

canjun_wen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值