摘要:在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。
在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。
【注意】1、对于认证订阅号,群发接口每天可成功调用1次,此次群发可选择发送给全部用户或某个标签;
2、对于认证服务号虽然开发者使用高级群发接口的每日调用限制为100次,但是用户每月只能接收4条,无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败;
3、开发者可以使用预览接口校对消息样式和排版,通过预览接口可发送编辑好的消息给指定用户校验效果;
4、群发过程中,微信后台会自动进行图文消息原创校验,请提前设置好相关参数(send_ignore等);
5、开发者可以主动设置clientmsgid来避免重复推送。
6、群发接口每分钟限制请求60次,超过限制的请求会被拒绝。
7、图文消息正文中插入自己帐号和其他公众号已群发文章链接的能力。
因为公众平台有每天群发消息的限制(订阅号每天一条,服务号一个月4条),而公众平台为开发者提供了预览接口,每天可调用100次,因此我们在开发时,可以用预览接口发送消息给指定用户,然后在手机端查看排版样式。
预览接口:http请求方式:POST
https://api./cgi-bin/message/mass/preview?access_token=ACCESS_TOKEN
群发消息接口实现://群发消息
publicfunctionsdMsg()
{
$accessToken=$this->_getWxAccessToken();
echo"$accessToken";
echo"
";
$url='https://api./cgi-bin/message/mass/preview?access_token='.$accessToken;
//单文本消息
$arr=[
'touser'=>'***',//openid用微信扫描测试号,用户列表下的微信号
'text'=>[
'content'=>urlencode('心月IT博客公众号群发消息测试'),
],
'msgtype'=>'text',
];
//图片消息
//$arr=[
//"touser"=>"o3anQ1BcB1g2C5jFEgrXb3m7lSps",
//"image"=>[
//"media_id"=>"BTgN0opcW3Y5zV_ZebbsD3NFKRWf6cb7OPswPi9Q83fOJHK2P67dzxn11Cp7THat",
//],
//"msgtype"=>"image",
//];
$postJson=urldecode(json_encode($arr));
echo"
";
echo"$postJson";
$res=$this->ch($url,'post','json',$postJson);
dump($res);
}
privatefunctionch($url,$type='get',$res='json',$arr='')
{
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);
if($type=='post'){
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$arr);
}
$cnt=curl_exec($ch);
if(curl_errno($ch)){
return;
}
curl_close($ch);
if($res=='json'){
returnjson_decode($cnt,true);
}
return$cnt;
}
直接调用 sdMsg() 接口就可以实现消息群发。
群发图片消息示例:
文本消息json格式:{
"touser":"OPENID",
"text":{
"content":"CONTENT"
},
"msgtype":"text"
}
群发消息,除了单文本还可以发送其他的消息,其他消息发送的json格式:
图文消息(其中media_id与根据分组群发中的media_id相同):{
"touser":"OPENID",
"mpnews":{
"media_id":"123dsdajkasd231jhksad"
},
"msgtype":"mpnews"
}
语音(其中media_id与根据分组群发中的media_id相同):{
"touser":"OPENID",
"voice":{
"media_id":"123dsdajkasd231jhksad"
},
"msgtype":"voice"
}
图片(其中media_id与根据分组群发中的media_id相同):{
"touser":"OPENID",
"image":{
"media_id":"123dsdajkasd231jhksad"
},
"msgtype":"image"
}
视频(其中media_id与根据分组群发中的media_id相同):{
"touser":"OPENID",
"mpvideo":{"media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",
},
"msgtype":"mpvideo"
}
卡券:{"touser":"OPENID",
"wxcard":{
"card_id":"123dsdajkasd231jhksad",
"card_ext":"{"code":"","openid":"","timestamp":"1402057159","signature":"017bb17407c8e0058a66d72dcc61632b70f511ad"}"
},
"msgtype":"wxcard"
}
在实际开发中可以参照文本消息,把你要发送的消息类型用数组表示出来,然后在通过json_encode 转换成 json。