在这篇微信公众平台高级接口开发教程中我们将介绍如何使用接口实现微信公众平台群发功能。

本文分为以下四个部分

  1. 准备群发内容

  2. 选择群发对象

  3. 执行群发

  4. 接收群发结果

一、准备群发内容

群发内容可以是文本、图片、语音、视频、图文。群发文本只需要文本内容其他内容需要获得相应的media_id。

1. 文本内容

文本内容就是一段文字比如"微信公众平台开发最佳实践"

2. 图片、语音、视频

要求如下

  • 图片p_w_picpath: 128K支持JPG格式

  • 语音voice256K播放长度不超过60s支持AMR\MP3格式

  • 视频video1MB支持MP4格式

准备好以后需要使用上传下载多媒体文件接口将其上传到微信服务器获得media_id。
上传的开发方法可以参考本博客的第80篇教程 微信公众平台开发(80) 上传下载多媒体文件

3. 图文

首先要准备缩略图要求如下

  • 缩略图thumb64KB支持JPG格式

同样的使用上传下载多媒体文件接口上传到微信服务器后得到缩略图的media_id
然后需要使用上传图文消息素材接口将其上传到微信服务器接口为

https://api.weixin.qq.com/cgi-bin/media/uploadnews?access_token=ACCESS_TOKEN

要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 图文消息的描述

根据上述POST结构定义图文数组如下

上传图文消息素材的代码则实现如下

上传成功后返回如下将得到图文消息的media_id

{    "type":"news",    "media_id":"CsEf3ldqkAYJAU6EJeIkStVDSvffUJ54vqbThMgplD-VJXXof6ctX5fI6-aYyUiQ",    "created_at":1391857799}

二、选择群发对象

群发对象可以是用户组也可以是OpenID列表。

1.用户组

获得用户分组需要使用高级接口中的查询所有分组接口获得相应的group_id
开发方法可以参考本博客的第88篇教程 微信公众平台开发(88) 用户分组接口

2.OpenID列表

OpenID列表是使用高级接口中的获取关注者列表接口来实现的。
开发方法可以参考本博客的第87篇教程 微信公众平台开发(87) 获取关注者列表

三、执行群发

由于群发对象的不同执行群发也有不同的方式。

1. 对用户组群发

对用户组群发的接口如下

https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token=ACCESS_TOKEN

要POST的内容按内容不同组成也不一样。

文本

{   "filter":{      "group_id":"2"   },   "text":{      "content":"CONTENT"   },    "msgtype":"text"}

语音注意此处media_id需通过基础支持中的上传下载多媒体文件来得到

{   "filter":{      "group_id":"2"   },   "voice":{      "media_id":"123dsdajkasd231jhksad"   },    "msgtype":"voice"}

图片注意此处media_id需通过基础支持中的上传下载多媒体文件来得到

{   "filter":{      "group_id":"2"   },   "p_w_picpath":{      "media_id":"123dsdajkasd231jhksad"   },    "msgtype":"p_w_picpath"}

视频

{   "filter":{      "group_id":"2"   },   "mpvideo":{      "media_id":"IhdaAQXuvJtGzwwc0abfXnzeezfO0NgPK6AQYShD8RQYMTtfzbLdBIQkQziv2XJc",   },    "msgtype":"mpvideo"}

图文消息注意图文消息的media_id需要通过上述方法来得到

{   "filter":{      "group_id":"2"   },   "mpnews":{      "media_id":"123dsdajkasd231jhksad"   },    "msgtype":"mpnews"}

相关参数说明如下

参数 是否必须 说明
filter 用于设定图文消息的接收者
group_id 群发到的分组的group_id
mpnews 用于设定即将发送的图文消息
media_id 用于群发的消息的media_id
msgtype 群发的消息类型图文消息为mpnews文本消息为text语音为voice音乐为music图片为p_w_picpath视频为video
title 消息的标题
description 消息的描述
thumb_media_id 视频缩略图的媒体ID

其接口实现代码如下所示

返回结果如下

array(3) {  ["errcode"]=>  int(0)  ["errmsg"]=>  string(27) "send job submission success"  ["msg_id"]=>  float(2347614963)}

参数说明

参数 说明
type 媒体文件类型分别有图片p_w_picpath、语音voice、视频video和缩略图thumb图文消息为news
errcode 错误码
errmsg 错误信息
msg_id 消息ID

下面是向用户组发送图文消息的效果分别是接收到图文消息查看图文消息内容后的效果

2.对OpenID列表群发

接口如下

https://api.weixin.qq.com/cgi-bin/message/mass/send?access_token=ACCESS_TOKEN

POST数据示例如下
文本

{   "touser": [        "oR5Gjjl_eiZoUpGozMo7dbBJ362A",         "oR5Gjjo5rXlMUocSEXKT7Q5RQ63Q"     ],     "msgtype": "text",     "text": {         "content": "hello from boxer."    }}

语音

{   "touser":[        "OPENID1",        "OPENID2"   ],   "voice":{      "media_id":"mLxl6paC7z2Tl-NJT64yzJve8T9c8u9K2x-Ai6Ujd4lIH9IBuF6-2r66mamn_gIT"   },   "msgtype":"voice"}

图片

{   "touser":[    "OPENID1",    "OPENID2"   ],   "p_w_picpath":{      "media_id":"BTgN0opcW3Y5zV_ZebbsD3NFKRWf6cb7OPswPi9Q83fOJHK2P67dzxn11Cp7THat"   },   "msgtype":"p_w_picpath"}

视频

{   "touser":[        "OPENID1",        "OPENID2"   ],   "video":{      "media_id":"123dsdajkasd231jhksad",      "title":"TITLE",      "description":"DESCRIPTION"   },   "msgtype":"video"}

图文消息注意图文消息的media_id需要通过上述方法来得到

{   "touser":[        "OPENID1",        "OPENID2"   ],   "mpnews":{        "media_id":"123dsdajkasd231jhksad"   },   "msgtype":"mpnews"}

参数列表

参数 是否必须 说明
touser 填写图文消息的接收者一串OpenID列表OpenID最少个最多10000个
mpnews 用于设定即将发送的图文消息
media_id 用于群发的图文消息的media_id
msgtype 群发的消息类型图文消息为mpnews文本消息为text语音为voice音乐为music图片为p_w_picpath视频为video
title 消息的标题
description 消息的描述
thumb_media_id 视频缩略图的媒体ID

返回数据示例正确时的JSON返回结果

{    "errcode":0,    "errmsg":"send job submission success",    "msg_id":2347614964}

四、接收群发结果   

1. 设置公众号助手

为了能接收群发结果需要设置公众号助手结果将推送到绑定的个人微信账号上。其设置如下

2. 接收结果事件

群发任务提交后群发任务可能在一定时间后才完成因此群发接口调用时仅会给出群发任务是否提交成功的提示若群发任务提交成功则在群发任务结束时会向开发者在公众平台填写的开发者URLcallback 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 过滤过滤是指特定地区、性别的过滤、用户设置拒收的过滤用户接收已超4条的过滤后准备发送的粉丝数原则上FilterCount = SentCount + ErrorCount
SentCount 发送成功的粉丝数
ErrorCount 发送失败的粉丝数

从上可以看出这其实是公众号群发助手模拟向公众号发送消息那么群发结果也是返回给公众号助手。

在微信公众平台PHP SDK中增加该事件消息的处理结果如下

private function receiveEvent($object){    $content = "";    switch ($object->Event)    {        case "subscribe":            $content = "欢迎关注方倍工作室";            break;        case "MASSSENDJOBFINISH":            $content = "消息ID".$object->MsgID.                       "\n结果".$object->Status.                       "\n粉丝数".$object->TotalCount.                       "\n过滤".$object->FilterCount.                       "\n发送成功".$object->SentCount.                       "\n发送失败".$object->ErrorCount;            break;        default:            break;    }    $result = $this->transmitText($object, $content);    return $result;}

转载于:https://blog.51cto.com/jsny821/1424922

微信开发教程(4)——高级群发接口相关推荐

  1. php 公众号 群发,微信公众号【服务号】群发策略调整,并开通高级群发接口

    刚刚看到这条消息,现在发可能有点晚,大家可能都知道了. 2014年4月15号,微信公众平台发布了<服务号群发策略调整>,对 服务号 的用户来说应该是一个好消息. 调整内容如下: 为了增强公 ...

  2. 微信公众平台高级群发接口(转载)

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

  3. 微信php开发用户分组,微信开发之用户分组管理接口(增)

    本文将带你了解微信开发41----用户分组管理接口(增),希望本文对大家学微信有所帮助. 当一个公众平台运营一段时间,会积累很多用户粉丝,为了更加方便的管理用户,我们需要对用户分组进行管理,这样群发推 ...

  4. 企业微信开发H5页面授权 使用接口的问题

    企业微信 h5踩坑指南 企业微信开发H5页面授权 使用接口的问题 开发企业微信的时候 h5页面需要获取登录用户的信息,这个时候就需要jsdk里面的 [开发文档] (https://work.weixi ...

  5. 微信公众平台开发 高级群发接口

    在这篇微信公众平台高级接口开发教程中,我们将介绍如何使用接口实现微信公众平台群发功能.本文分为以下四个部分:准备群发内容选择群发对象执行群发接收群发结果一.准备群发内容群发内容可以是文本.图片.语音. ...

  6. C#微信公众平台开发—高级群发接口

    涉及access_token的获取请参考<C#微信公众平台开发-access_token的获取存储与更新> 一.为了实现高级群发功能,需要解决的问题 1.通过微信接口上传图文消息素材时,J ...

  7. 调用微信高级群发接口--视频群发接口出问题(微信官方文档错误纠正)

    这几天在弄项目与微信对接,我主要负责将素材(视频,图片.缩略图,音频)材料上传到微信server上.并推送到所关注本平台的用户中.从获取accessToken到素材上传.下载.或者关注者的openId ...

  8. java 微信高级群发_微信高级群发接口demo

    微信群发接口的基本思路: 1.  获取关注者列表 2.  创建群发的XML 3.  发送群发的XML. 作者编写了一个文本群发的demo 供读者分享. public class TestWeixinG ...

  9. 微信高级群发接口demo

    微信群发接口的基本思路: 1.  获取关注者列表 2.  创建群发的XML 3.  发送群发的XML. 作者编写了一个文本群发的demo 供读者分享. public class TestWeixinG ...

最新文章

  1. 二叉搜索树c/c++代码实现
  2. 云曦服务器,云曦南羡最新章节_云曦南羡全本小说
  3. 浅谈强化学习的方法及学习路线
  4. 都大二下学期了,说说读大学的感受吧
  5. linux前台与后台进程调度(ps fg bg)
  6. 网易云IM云服务的稳定原来是这样实现的
  7. fir.im Weekly - 2016 年 Android 最佳实践列表
  8. 使用 python 操作 redis
  9. JAX-RS Bean验证错误消息国际化
  10. 阿里巴巴开源 Sentinel,进一步完善 Dubbo 生态
  11. 前端内存优化的探索与实践
  12. xss原理和注入类型
  13. HP-UX 11i v2安装使用python 2.5.2
  14. 初识liux简单命令
  15. matlab点扩散函数,点扩散函数的一维数值计算及其MATLAB实现
  16. 新员工入职表_员工离职率过高,只要三步骤,就能轻松有效控制
  17. Win10怎么合并磁盘分区 合并磁盘的操作方法
  18. 一个敬谦基督徒的生活
  19. 赛联区块链培训课程介绍
  20. Python之禅:优雅地编程

热门文章

  1. 禁毒学、油画、乌尔都语……字节跳动程序员的专业有多奇特丨技术同学大数据报告...
  2. 什么水平的科学家,可以成为腾讯有史以来最高职级研究员?
  3. 没想到,因为这场AI大会,我也可以凡尔赛一把
  4. 如果没有StyleGAN2,真以为初代就是巅峰了:英伟达人脸生成器高能进化,弥补重大缺陷...
  5. 给GPT-2加上“人类偏好”补丁,它说的话就越来越有人情味了丨代码已开源
  6. 好物推荐 | 轻薄神器,妈妈再也不用担心我的颈椎了
  7. 古老的SSM企业级应用
  8. 元素水平垂直居中的方法
  9. ASP.NET 2.0应用程序安全强化纵览
  10. Delphi、C#之父Anders Hejlsberg首次访华 推广TypeScript