nodejs微信公众号开发——8.群发消息

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

1. 高级群发接口

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

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

2. 实现消息群发

2.1 实现

和以前的步骤实际上是同样的,先在api中定义请求的url地址:git

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

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

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的处理。json

2.2 测试

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

图片描述

相关文章
相关标签/搜索