背景
使用 NodeJS 进行微信公共号开发,启用服务器配置后,菜单配置会失效,需要服务器实现对微信菜单进行配置。
启用服务器配置自定义菜单自动失效

在未启用服务器配置的时候,微信菜单可以通过 功能 => 自定义菜单 进行设置:

当启用服务器配置后,功能 => 自定义菜单 内会自动失效,需要从服务器进行公共号菜单的设置:
使用 NodeJS 设置自定义菜单
使用 NodeJS 设置可以将链接、公共号素材、小程序设置到自定义菜单,只需参照自定义菜单文档书写参数即可,实现如下:
const axios = require('axios');
const menuConfig = {
"button": [
{
"type": "view",
"name": "测试链接1",
"url": "http://blog.dongsj.cn/"
},
{
"name": "测试链接2",
"sub_button": [
{
"type": "view",
"name": "测试链接2-1",
"url": "http://blog.dongsj.cn/"
},
{
"type": "view",
"name": "测试链接2-2",
"url": "http://blog.dongsj.cn/"
}
]
}
]
};
const syncTime = 60 * 1000;
async function setWxMenu() {
let accessToken = process.env.accessToken;
console.log('start set wx menu');
if (accessToken) {
let wxMenuResult = await axios.post(`https://api.weixin.qq.com/cgi-bin/menu/create?access_token=${accessToken}`, menuConfig);
console.log(wxMenuResult.data);
if (wxMenuResult.data.errCode) {
console.log('set wx menu error');
setTimeout(() => {
return setWxMenu();
}, syncTime);
} else {
console.log('set wx menu finished');
}
} else {
console.log('token undefined');
console.log('set wx error');
setTimeout(() => {
return setWxMenu();
}, syncTime);
}
}
setTimeout(()=>{
setWxMenu();
},5000);
使用 NodeJS 设置个性化菜单
除自定义菜单外,微信还提供了设置根据不同用户信息设置个性化菜单的接口,参照在配置 个性化菜单文档 在配置内添加 matchrule 字段调用接口即可。
- 本文作者: Dongsj
- 本文链接: blog.dongsj.cn/20180503-wx…
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
