1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 微信公众平台开发 高级群发接口

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

时间:2023-07-03 16:51:26

相关推荐

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

在这篇微信公众平台高级接口开发教程中,我们将介绍如何使用接口实现微信公众平台群发功能。本文分为以下四个部分:准备群发内容选择群发对象执行群发接收群发结果一、准备群发内容群发内容可以是文本、图片、语音、视频、图文。群发文本只需要文本内容,其他内容需要获得相应的media_id。1. 文本内容文本内容就是一段文字,比如:"微信公众平台开发最佳实践"2. 图片、语音、视频要求如下:图片(image): 128K,支持JPG格式语音(voice):256K,播放长度不超过60s,支持AMR\MP3格式视频(video):1MB,支持MP4格式准备好以后,需要使用上传下载多媒体文件接口将其上传到微信服务器,获得media_id。上传的开发方法,可以参考本 微信公众平台开发 上传下载多媒体文件3. 图文首先要准备缩略图,要求如下:缩略图(thumb):64KB,支持JPG格式同样的,使用上传下载多媒体文件接口,上传到微信服务器后,得到缩略图的media_id,然后需要使用上传图文消息素材接口将其上传到微信服务器,接口为https://api./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":"","content":"content","digest":"digest"},{"thumb_media_id":"qI6_Ze_6PtV7svjolgs-rN6stStuHIjs9_DidOHaj0Q-mwvBelOXCFZiq2OsIU-p","author":"xxx","title":"Happy Day","content_source_url":"","content":"content","digest":"digest"}]}参数说明如下:参数是否必须说明Articles 是 图文消息,一个图文消息支持1到10条图文thumb_media_id 是 图文消息缩略图的media_id,可以在基础支持-上传多媒体文件接口中获得author 否 图文消息的作者title 是 图文消息的标题content_source_url 否 在图文消息页面点击“阅读原文”后的页面content 是 图文消息页面的内容,支持HTML标签digest 否 图文消息的描述根据上述POST结构,定义图文数组如下:

二、选择群发对象群发对象可以是用户组,也可以是OpenID列表。1.用户组获得用户分组,需要使用高级接口中的查询所有分组接口,获得相应的group_id,开发方法,可以参考本博客的第88篇教程 微信公众平台开发 用户分组接口2.OpenID列表OpenID列表,是使用高级接口中的获取关注者列表接口来实现的。开发方法,可以参考本博客的第87篇教程 微信公众平台开发 获取关注者列表三、执行群发由于群发对象的不同,执行群发也有不同的方式。1. 对用户组群发对用户组群发的接口如下:https://api./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_idmpnews 是 用于设定即将发送的图文消息media_id 是 用于群发的消息的media_idmsgtype 是 群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为videotitle 否 消息的标题description 否 消息的描述thumb_media_id 是 视频缩略图的媒体ID其接口实现代码如下所示:

public function mass_send_group($groupid,$type,$data)

{

$msg = array('filter'=>array('group_id'=>$groupid, 'is_to_all'=>false));//分组的话加上, 'is_to_all'=>false

$msg['msgtype'] = $type;

switch($type)

{

case 'text':

$msg[$type] = array('content'=>$data);

break;

case 'image':

case 'voice':

case 'mpvideo':

case 'mpnews':

$msg[$type]=array('media_id'=>$data);

break;

}

$url = "https://api./cgi-bin/message/mass/sendall?access_token=.$this->access_token;

$res = $this->https_request($url,json_encode($msg));

return json_decode($res,true);

}返回结果如下:array(3) {["errcode"]=>int(0)["errmsg"]=>string(27) "send job submission success"["msg_id"]=>float(2347614963)}参数说明参数说明type 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)和缩略图(thumb),图文消息为newserrcode 错误码errmsg 错误信息msg_id 消息ID下面是向用户组发送图文消息的效果,分别是接收到图文消息,查看图文消息内容后的效果,2.对OpenID列表群发接口如下:https://api./cgi-bin/message/mass/send?access_token=ACCESS_TOKENPOST数据示例如下:文本:{"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_idmsgtype 是 群发的消息类型,图文消息为mpnews,文本消息为text,语音为voice,音乐为music,图片为image,视频为videotitle 否 消息的标题description 否 消息的描述thumb_media_id 是 视频缩略图的媒体ID返回数据示例(正确时的JSON返回结果):{"errcode":0,"errmsg":"send job submission success","msg_id":2347614964}四、接收群发结果 1. 设置公众号助手为了能接收群发结果,需要设置公众号助手,结果将推送到绑定的个人微信账号上。其设置如下2. 接收结果事件群发任务提交后,群发任务可能在一定时间后才完成,因此,群发接口调用时,仅会给出群发任务是否提交成功的提示,若群发任务提交成功,则在群发任务结束时,会向开发者在公众平台填写的开发者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 公众号群发助手的微信号,为mphelperCreateTime 创建时间的时间戳MsgType 消息类型,此处为eventEvent 事件信息,此处为MASSSENDJOBFINISHMsgID 群发的消息IDStatus 群发的结构,为“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 + ErrorCountSentCount 发送成功的粉丝数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;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。