微信公众平台开发(89) 高级群发接口

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

本文分为以下四个部分

  1. 准备群发内容
  2. 选择群发对象
  3. 执行群发
  4. 接收群发结果

 

一、准备群发内容

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

1. 文本内容

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

2. 图片、语音、视频

要求如下

  • 图片image: 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"
   },
   "image":{
      "media_id":"123dsdajkasd231jhksad"
   },
    "msgtype":"image"
}

视频

{
   "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图片为image视频为video
title 消息的标题
description 消息的描述
thumb_media_id 视频缩略图的媒体ID

其接口实现代码如下所示

返回结果如下

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

参数说明

参数 说明
type 媒体文件类型分别有图片image、语音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"
   ],
   "image":{
      "media_id":"BTgN0opcW3Y5zV_ZebbsD3NFKRWf6cb7OPswPi9Q83fOJHK2P67dzxn11Cp7THat"
   },
   "msgtype":"image"
}

视频

{
   "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图片为image视频为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;
}

 

 

时间: 2024-11-05 04:52:11

微信公众平台开发(89) 高级群发接口的相关文章

微信公众平台开发(73) 客服接口发送客服消息

微信公众平台开发 客服接口 发送客服消息作者:方倍工作室 地址:http://www.cnblogs.com/txw1958/p/weixin73-custom-send.html   当用户主动发消息给公众号的时候(包括发送信息.点击自定义菜单clike事件.订阅事件.扫描二维码事件.支付成功事件.用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前为24小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在24小时内不限制发送次数.此接口主要用于客

微信公众平台开发(88) 用户分组接口

本文介绍在微信公众平台上如何使用高级接口开发用户分组接口的功能.   一.接口介绍 开发者可以使用接口,对公众平台的分组进行查询.创建.修改操作,也可以使用接口在需要时移动用户到某个分组. 一个公众账号,最多支持创建500个分组. 接口调用请求说明创建分组 http请求方式: POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/groups/create?access_token=ACCESS_TOKEN POST数据格式:json POST数据

微信公众平台开发教程

本系列微信公众平台教程以PHP+MySQL为开发环境,介绍了微信公众平台开发模式下基础接口.自定义菜单.高级接口.WeiXin JS接口.微信支付等接口以及在此基础上的功能或应用开发的方法及技巧,案例极具实用价值,是学习微信公众平台开发实战的经典教材.   配套书籍 <微信公众平台开发最佳实践> 由方倍工作室编写,覆盖基础接口.自定义菜单.高级接口.微信支付.转发分享等五大接口,包含近30个案例及技巧,已成功帮助无数人进入微信开发领域. 购买地址        准备工作 微信公众平台的注册 介

微信公众平台开发入门教程(图文详解)_Android

在这篇入门教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯及XML语言基础.如果你还没有,那么请先学习相关知识. 我们将使用微信公众账号方倍工作室(账号:pondbaystudio,二维码在最底部)作为讲解的例子. 这篇入门教程将引导你完成如下任务: 创建百度云平台应用启用微信公众平台开发模式获取订阅.文字.图片.语音.视频消息回复文本.图文及音乐消息程序开发  创建百度云应用 申请账号 登录http://developer.baidu.com/bae ,使用邮箱或者手

微信公众平台开发入门教程(SAE方倍工作室)_Android

我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用启用微信公众平台开发模式基础接口消息及事件微信公众平台PHP SDK微信公众平台开发模式原理开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.申请地址:http://sae.sina.com.cn/ ,使用新浪微博账号可以直接登录SAE,登录后SAE将赠送50

微信公众平台开发入门教程(SAE方倍工作室)

我们将使用微信公众账号方倍工作室作为讲解的例子,二维码见底部. 本系列教程将引导你完成如下任务: 创建新浪云计算平台应用启用微信公众平台开发模式基础接口消息及事件微信公众平台PHP SDK微信公众平台开发模式原理开发天气预报功能 第一章 申请服务器资源 创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据库作为程序运行环境.申请地址:http://sae.sina.com.cn/ ,使用新浪微博账号可以直接登录SAE,登录后SAE将赠送50

微信公众平台开发入门教程(图文详解)

在这篇入门教程中,我们假定你已经有了PHP语言程序.MySQL数据库.计算机网络通讯及XML语言基础.如果你还没有,那么请先学习相关知识. 我们将使用微信公众账号方倍工作室(账号:pondbaystudio,二维码在最底部)作为讲解的例子. 这篇入门教程将引导你完成如下任务: 创建百度云平台应用启用微信公众平台开发模式获取订阅.文字.图片.语音.视频消息回复文本.图文及音乐消息程序开发 创建百度云应用 申请账号 登录http://developer.baidu.com/bae ,使用邮箱或者手机

微信公众平台开发入门教程(二)启用开发模式

  微信公众平台开发模式 高级功能 微信公众平台地址:https://mp.weixin.qq.com  登录微信公众平台后台,选择高级功能 进入后就看到两种模式 我们需要关闭编辑模式.点击编辑模式的进入 滑动关闭   原文:http://www.cnblogs.com/txw1958/p/wechat-tutorial.html  开发模式 进入开发模式里面  点击成为开发者 弹出URL和Token填写框 此处的URL为创建百度云应用的域名,包括后面的duapp.com,而Token为inde

Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(十一):高级接口说明     这里所说的高级接口是指面向通过认证的服务号开通的高级功能.     高级功能大致可以分类为: 用户接口 分组接口 客服接口(有别于之前介绍的多客服) 群发接口 多媒体接口 二维码接口 模板消息接口(不是所有账号都可开通) OAuth2.0(相对比较复杂,后面会有专门介绍) 以上所有的接口都包含在Senparc.Weixin.MP.AdvancedAPIs命名空间下. 一些共同的操作 几乎所有的高