微信公众平台高级群发接口(转载)
在公众平台网站上,为订阅号提供了每天一条的群发权限,为服务号提供每月(自然月)4条的群发权限。而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发能力。
请注意:
1、该接口暂时仅提供给已微信认证的服务号 2、高级群发接口的每日调用限制为10次,请小心测试 3、无论在公众平台网站上,还是使用接口群发,用户每月只能接收4条群发消息,多于4条的群发将对该用户发送失败。
上传图文消息素材
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN
POST数据说明
POST数据示例如下:
{ "articles": [ { "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p”, "author":"xxx", "title":"Happy Day", "content_source_url":"www.qq.com", "content":"content", "digest":"digest" }, { "thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p”, "author":"xxx", "title":"Happy Day", "content_source_url":"www.qq.com", "content":"content", "digest":"digest" } ] }
参数 | 是否必须 | 说明 |
---|---|---|
Articles | 是 | 图文消息,一个图文消息支持1到10条图文 |
thumb_media_id | 是 | 图文消息缩略图的media_id |
author | 否 | 图文消息的作者 |
title | 是 | 图文消息的标题 |
content_source_url | 否 | 在图文消息页面点击“阅读原文”后的页面 |
content | 是 | 图文消息页面的内容,支持HTML标签 |
digest | 否 | 图文消息的描述 |
返回说明
返回数据示例(正确时的JSON返回结果):
{ "type":"news", "media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ", "created_at":1391857799 }
参数 | 说明 |
---|---|
type | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),次数为news,即图文消息 |
media_id | 媒体文件/图文消息上传后获取的唯一标识 |
created_at | 媒体文件上传时间 |
错误时微信会返回错误码等信息,请根据错误码查询错误信息
根据分组进行群发
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN
POST数据说明
POST数据示例如下:
图文消息(注意图文消息的media_id需要通过上述方法来得到):
{ "filter":{ "group_id":"2" }, "mpnews":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"mpnews" }
参数 | 是否必须 | 说明 |
---|---|---|
filter | 是 | 用于设定图文消息的接收者 |
group_id | 是 | 群发到的分组的group_id |
mpnews | 是 | 用于设定即将发送的图文消息 |
media_id | 是 | 用于群发的消息的media_id |
msgtype | 是 | 群发的消息类型,图文消息为mpnew |
返回说明
返回数据示例(正确时的JSON返回结果):
{ "errcode":0, "errmsg":"send job submission success", "msg_id":34182 }
参数 | 说明 |
---|---|
type | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),次数为news,即图文消息 |
errcode | 错误码 |
errmsg | 错误信息 |
msg_id | 消息ID |
请注意:在返回成功时,意味着群发任务提交成功,并不意味着此时群发已经结束,所以,仍有可能在后续的发送过程中出现异常情况导致用户未收到消息,如消息有时会进行审核、服务器不稳定等。此外,群发任务一般需要较长的时间才能全部发送完毕,请耐心等待。
错误时微信会返回错误码等信息,请根据错误码查询错误信息
根据OpenID列表群发
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN
POST数据说明
POST数据示例如下:
图文消息:
{ "touser":[ "OPENID1", "OPENID2" ], "mpnews":{ "media_id":"123dsdajkasd231jhksad" }, "msgtype":"mpnews" }
参数 | 是否必须 | 说明 |
---|---|---|
touser | 是 | 填写图文消息的接收者,一串OpenID列表,OpenID最少个,最多10000个 |
mpnews | 是 | 用于设定即将发送的图文消息 |
media_id | 是 | 用于群发的图文消息的media_id |
msgtype | 是 | 群发的消息类型,图文消息为mpnew |
返回说明
返回数据示例(正确时的JSON返回结果):
{ "errcode":0, "errmsg":"send job submission success", "msg_id":34182 }
参数 | 说明 |
---|---|
type | 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),次数为news,即图文消息 |
errcode | 错误码 |
errmsg | 错误信息 |
msg_id | 消息ID |
请注意:在返回成功时,意味着群发任务提交成功,并不意味着此时群发已经结束,所以,仍有可能在后续的发送过程中出现异常情况导致用户未收到消息,如消息有时会进行审核、服务器不稳定等。此外,群发任务一般需要较长的时间才能全部发送完毕,请耐心等待。
错误时微信会返回错误码等信息,请根据错误码查询错误信息
删除群发
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com//cgi-bin/message/mass/delete?access_token=ACCESS_TOKEN
POST数据说明
POST数据示例如下:
{ "msgid":30124 }
参数 | 是否必须 | 说明 |
---|---|---|
msg_id | 是 | 发送出去的消息ID |
请注意,只有已经发送成功的消息才能删除删除消息只是将消息的图文详情页失效,已经收到的用户,还是能在其本地看到消息卡片。
返回说明
返回数据示例(正确时的JSON返回结果):
{ "errcode":0, "errmsg":"ok" }
参数 | 说明 |
---|---|
errcode | 错误码 |
errmsg | 错误信息 |
错误时微信会返回错误码等信息,请根据错误码查询错误信息
事件推送群发结果
由于群发任务提交后,群发任务可能在一定时间后才完成,因此,群发接口调用时,仅会给出群发任务是否提交成功的提示,若群发任务提交成功,则在群发任务结束时,会向开发者在公众平台填写的开发者URL(callback URL)推送事件。
推送的XML结构如下(发送成功时):
<xml> <ToUserName><![CDATA[gh_3e8adccde292]]></ToUserName> <FromUserName><![CDATA[oR5Gjjl_eiZoUpGozMo7dbBJ362A]]></FromUserName> <CreateTime>1394524295</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[MASSSENDJOBFINISH]]></Event> <MsgID>1988</MsgID> <Status><![CDATA[sendsuccess]]></Status> <TotalCount>100</TotalCount> <FilterCount>80</FilterCount> <SentCount>75</SentCount> <ErrorCount>5</ErrorCount> </xml>
参数 | 说明 |
---|---|
ToUserName | 公众号的微信号 |
FromUserName | 公众号群发助手的微信号,为mphelper |
CreateTime | 创建时间的时间戳 |
MsgType | 消息类型,此处为event |
Event | 事件信息,此处为MASSSENDJOBFINISH |
MsgID | 群发的消息ID |
Status | 群发的结构,为“send success”或“send fail”或“err(num)”。但send success时,也有可能因用户拒收公众号的消息、系统错误等原因造成少量用户接收失败。err(num)是审核失败的具体原因,可能的情况如下:
err(10001), //涉嫌广告 err(20001), //涉嫌政治 err(20004), //涉嫌社会 err(20002), //涉嫌色情 err(20006), //涉嫌违法犯罪 err(20008), //涉嫌欺诈 err(20013), //涉嫌版权 err(22000), //涉嫌互推(互相宣传) err(21000), //涉嫌其他 |
TotalCount | group_id下粉丝数;或者openid_list中的粉丝数 |
FilterCount | 过滤(过滤是指,有些用户在微信设置不接收该公众号的消息)后,准备发送的粉丝数,原则上,FilterCount = SentCount + ErrorCount |
SentCount | 发送成功的粉丝数 |
ErrorCount | 发送失败的粉丝数 |
群发接口及四次的解析: 首先,每月4次的群发规则适用所有服务号。其中普通服务号可以通过mp后台(即公众平台后台)群发消息,对于认证服务号的话,除了mp后台外,还可通过新 增的群发接口进行个性化的群发,这一条对于第三方产品设计来说是最重要的,下边的深度解读主要针对这个方面。
第二、新增的群发接口,对于“每月4次”的规则的实现是针对接收群发信息的用户来说的,也就是说通过群发接口给某一用户发送消息的话,每月最多是4条,也
就是说同一个用户,你每月最多只能推送4条消息给他。而对于该公众账号,每月可群发的次数不只4条。根据现在的接口调用日限额是10条计算,每月至少能发
送300条群发信息。一个很常见的应用场景就是,当原来本月的群发信息条数已经发完后,新关注的粉丝,这个月我们就无法给其发送群发消息了,但是现在则不
同,我们可以使用群发接口,给新关注粉丝“补发”之前的群发消息,做到每月群发消息100%的覆盖。
第三、群发接口有两种调用方式,一种是提供一个待接收消息的用户openid列表,一种是提供一个待接收消息的用户分组id。第一种使用方式,一般配合
“获取关注者列表”接口,通过自己维护的用户业务逻辑分组来使用。第二种方式是使用公众平台系统的分组来使用。这种方式,使得原来很多人忽略的“分组管理
接口”变得真正有意义了。
第四、群发任务的任务报告。通过这个接口,可以进行动态监控,了解群发的统计信息,对于第三方开发来说,除了使产品设计更加人性化以外,有一点请大家注
意,这个接口是被动调用接口,仅当群发任务完成后,微信才会调用,目前没有办法主动进行状态监控。另外,由于报告只有统计计数,没有具体的openid列
表,所以我们没办法直接知道该消息对于某一用户来说是否发送成功。
微信服务号群发接口的开放,大大提升了服务号的功能,同时也给第三方开发公司更大的开发和产品设计空间
每天10次调用,是指程序每天调用高级接口中的接口10次,即和https://api.weixin.qq.com/的交互为10次,包括上传素材在内,假如今天上传了10个素材,也算调用了10次,或者上传了5个素材,分别给5个用户发了不同的消息,那么今天也是调用了10次
用户每月4次,是指给同一个用户在一个月之内可以用群发接口发4次消息,假如今天用群发接口给某用户发了4次,那么这个月就再不不能给这个用户发消息了。发了他也收不到
如何玩:
总结:
1. 自动回复,5秒内响应
2. 客服接口回复,48小时内不限次数
3. 高级群发接口,每月4次,但不限时
实现过程,请查看 http://www.cnblogs.com/zuochuang/p/4723416.html