1

上一篇文章:nodejs微信公众号开发——7.用户管理,主要介绍了用户管理的一些常用接口,包括用户分组、设置备注名、获取用户基本信息等。本节微信高级群发接口(项目github地:https://github.com/Panfen/wem... )

1. 高级群发接口

在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。需要注意的点:

  • 对于认证订阅号,群发接口每天可成功调用1次,此次群发可选择发送给全部用户或某个分组;
  • 对于认证服务号虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败;
  • 具备微信支付权限的公众号,在使用群发接口上传、群发图文消息类型时,可使用\<a>标签加入外链;
  • 开发者可以使用预览接口校对消息样式和排版,通过预览接口可发送编辑好的消息给指定用户校验效果。

2. 实现消息群发

2.1 实现

和之前的步骤其实是一样的,先在api中定义请求的url地址:

var api = {
    ...
    mass:{
        sendall:prefix+'message/mass/sendall?',  //access_token=ACCESS_TOKEN 群发消息
    }
}

在实现具体函数的时候,需要注意请求的body内容因为发送消息的类型不同而呈现差异化,需要特别留意,查看官方文档根据分组进行群发【订阅号与服务号认证后均可用】

Wechat.prototype.massSendMsg = function(type,message,groupid){
    var that = this;
    var msg = {
        filter:{},
        msgtype:type
    }
    if(!groupid){
        msg.filter.is_to_all = true
    }else{
        msg.filter.is_to_all = false;
        msg.filter.group_id = groupid;
    }
    msg[type] = message;
    return new Promise(function(resolve,reject){
        that.fetchAccessToken().then(function(data){
            var url = api.mass.sendall + 'access_token=' + data.access_token;
                    request({method:'POST',url:url,body:msg,json:true}).then(function(response){
                var _data = response.body;
                if(_data.errcode === 0){
                    resolve(_data);
                }else{
                    throw new Error('send mass message failed: ' + _data.errmsg);
                }
            }).catch(function(err){
                reject(err);
            });
        });
    });
}

注意对msg的处理。

2.2 测试

else if(content === '7'){
    var text = {
        content:'这是群发消息测试唔~'
    };
    var msg = yield wechatApi.massSendMsg('text',text,114);
    console.log('msg:'+ JSON.stringify(msg));
}

图片描述


芒果屋里的猫
2.3k 声望363 粉丝

同步 -> 异步 -> 回调