微信公众号自定义菜单问题
发布于 7 年前 作者 uzheng 12436 次浏览 来自 官方Issues
var menu = {
    button: [
      {
        type: "view", //view表示跳转
        name: "历史文章",
        url:
          "https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI4MTkwMTk5OA==&scene=124#wechat_redirect"
      },
      {
        name: "茄叔电影",
        sub_button: [
          //二级菜单
          {
            type: "miniprogram",
            name: "在线观影",
            url:
              "https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI4MTkwMTk5OA==&scene=124#wechat_redirect",
            appid: "*********",
            pagepath: "pages/home_page/home_page"
          },
          {
            type: "click",
            name: "看电影App",
            key: "SEND_APP"
          },
          {
            type: "click", //view表示跳转
            name: "商务合作",
            key: "CONTACT_US"
          }
        ]
      }
    ]
  };

自定义菜单栏我是这样设置的,然后根据click的key值做相应事件:

if (json.xml.MsgType == 'event') {
          if (json.xml.EventKey == 'CONTACT_US') {
            res.send(getImgXmlContact(json, backTime)); //发送联系我们图片
          }
          if (json.xml.EventKey == 'SEND_APP') {
            res.send(getImgXmlApp(json, backTime)); //发送app下载二维码
          }
          if (json.xml.EventKey == 'send_img') {
            //发送默认图片
            res.send(getImgXml(json, backTime));
          }
          //如果是订阅事件
          if (json.xml.Event === "subscribe") {
            res.send(subscribeFun(json, backTime));
          }
        }

如下这是我定义的方法:

function getImgXmlContact(json, backTime) {
 
    var backXML = `
    <xml>
    <ToUserName><![CDATA[${json.xml.FromUserName}]]></ToUserName>
    <FromUserName><![CDATA[${json.xml.ToUserName}]]></FromUserName>
    <CreateTime>${backTime}</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[谢谢你对影视烂番茄的青睐。和我合作,联系我们的对外商务!微信号:fay1786\n文章授权、入驻联系微信:qieshuweixin\n投稿请投送至:[email protected]]]></Content>
    </xml>
            `;
    return backXML;
  }

基本都是按照文档来的,可是点一下菜单就会出现对应按钮的key值,这不正常吧

商务合作的按钮对应的key值就是CONTACT_US,会以文本的形式自己发一次,麻烦大家给看看为啥!

1 回复

麻烦自查下代码逻辑

回到顶部