您的位置:首页 > 移动开发 > 微信开发

微信群发接口开发小结

2018-01-14 14:41 295 查看
        高级群发接口比较简单(但需要认证).分别可以发送给全部粉丝,或者发送给特定标签下的用户,或者发送给特定用户(根据OpenID列表群发).消息的类型可以是:图文消息,文本消息,语音消息,图片消息,视频消息,卡券消息.需要注意的是除了文本消息能够直接发送外,语音,图片,视频消息需要通过基础支持中的上传下载多媒体文件来得到获得media_id,而图文消息需要先制作出图文消息内容体(获得特殊的media_id).

        下面,通过图文消息来讲解群发的api(其他消息类型大家可以参见官方文档).

1).上传图文消息内的图片获取URL.

这玩意我调用了,但发现取得的url,在后面的步骤中似乎没用着.反而是回复消息时,如果回复的是图文消息,在xml结构体里用着了.

我上传了2张图片,代码如下:

[php] view
plain copy

function upload_pic() { //上传图文消息内的图片获取URL  

    $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  

    $url = "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=$ACCESS_TOKEN";  

    $result = curl_http_upload($url, "meida", "C:\Users\Administrator\Desktop\a.jpg");  

    $json = json_decode($result);  

    echo $json->url;  

}  

得到的返回值如下:

[javascript] view
plain copy

{"url": "http://mmbiz.qpic.cn/mmbiz/q9jYbRzAGeXKnahdcPUFjP6reSgVibIcKJTXs5tOibzdkiahHv32LLOuBauyzbibDYuR07VNcQVCYHVVf7Sd0tvM7w/0"}  

{"url": "http://mmbiz.qpic.cn/mmbiz/q9jYbRzAGeXKnahdcPUFjP6reSgVibIcKs52hkgzsmicAePy5BuqwdBfCzzL9MPEibjZ4vOEE4UP1HlOpIicibLobgA/0"}  

2).上传图文消息素材

代码如下:

[php] view
plain copy

function upload_ctx() { //上传图文消息素材  

    $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  

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

    $data = '  

{  

    "articles": [{  

        "thumb_media_id": "nJdLOlZ1lPluJCph3OlnNEadys0CI43Zzwz75nrp7tcYw6JQIdKCMPr6z0GlDyBs",  

        "author": "张仕铨",  

        "title": "今天真快乐!",  

        "content_source_url": "www.qq.com",  

        "content": "遇上了你,是我这辈子最大的幸福,我一定会对你很好很好!",  

        "digest": "首show",  

        "show_cover_pic": 1  

    }, {  

        "thumb_media_id": "g9QhTm0S6plcWiGqKSvBs5yb1NgKtT1DFGqRKffnFcgVgrOyiDaKyDmVDaX7GsOA",  

        "author": "张弄影",  

        "title": "洗啊洗啊洗白白!",  

        "content_source_url": "www.163.com",  

        "content": "洗洗睡吧,别多想了!",  

        "digest": "发来看看",  

        "show_cover_pic": 0  

    }]  

}  

    ';  

    $result = curl_http_post($url, $data);  

    echo $result;  

}  

为了偷懒,这里的thumb_media_id我直接是发送图片消息,然后公众号服务器接收消息处取来滴.

得到的返回值如下:

[javascript] view
plain copy

{"type":"news","media_id":"FIyDgwyCxVb4-FHyDJgnGX44BLWE7tGsvyiOA_xYpf9oRtZGjddqukBgZeFq6a8H","created_at":1468469203}  

3).预览接口
微信提供在发送前,将该消息发送给指定用户,在手机端查看消息的样式和排版代码的功能.如下:

[php] view
plain copy

function preview() { //预览接口  

    $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  

    $url = "https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=$ACCESS_TOKEN";  

    $data = '  

{  

    "touser": "oe5SXv71irmrQ0TH-JxA-z_hmYLE",  

    "mpnews": {"media_id": "FIyDgwyCxVb4-FHyDJgnGX44BLWE7tGsvyiOA_xYpf9oRtZGjddqukBgZeFq6a8H"},  

    "msgtype": "mpnews"  

}  

';  

    $result = curl_http_post($url, $data);  

    echo $result;  

}  

得到的返回值如下:

[javascript] view
plain copy

{"errcode":0,"errmsg":"preview success"}  

界面效果如下:



分别点击2个图文之后,会看到以下内容:


和这个


注意1个界面显示图片,1个界面不显示.点击阅读原文,则会进入2).上传图文消息素材设置的站点.

4).根据OpenID列表群发(也可以是根据标签进行群发)

代码如下:

[php] view
plain copy

function send_openid() { //根据OpenID列表群发  

    $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  

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

    $data = '  

{  

    "touser": ["oe5SXv71irmrQ0TH-JxA-z_hmYLE", "oe5SXv45Fq5lcB5jlxdBs6QWPNj8"],  

    "mpnews": {"media_id": "FIyDgwyCxVb4-FHyDJgnGX44BLWE7tGsvyiOA_xYpf9oRtZGjddqukBgZeFq6a8H"},  

    "msgtype": "mpnews"  

}  

';  

    $result = curl_http_post($url, $data);  

    echo $result;  

}  

得到的返回值如下:

[javascript] view
plain copy

{"errcode":0,"errmsg":"send job submission success","msg_id":3147483651,"msg_data_id":2247483654}  

群发的效果和预览的效果一样.因为在2).上传图文消息素材调用时show_cover_pic的值分别不同.

5).查询群发消息发送状态

代码如下:

[php] view
plain copy

function status() { //查询群发消息发送状态  

    $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  

    $url = "https://api.weixin.qq.com/cgi-bin/message/mass/get?access_token=$ACCESS_TOKEN";  

    $data = '{"msg_id": "3147483651"}';  

    $result = curl_http_post($url, $data);  

    echo $result;  

}  

得到的返回值如下:

[javascript] view
plain copy

{"msg_id":3147483651,"msg_status":"SEND_SUCCESS"}  

6).删除群发
代码如下:

[php] view
plain copy

function delete() { //删除群发  

    $ACCESS_TOKEN = "DbEhmwXiL4RWRinpz2sAcfNLqk-PJwtt9esmkpmv4ycwYmCWOhEE7IoMDP31-lnJojKGR8QOP53sFvzzTXGVk3DQZrN7vT4lh8IST_GNhiNh7eBXVViMQI-ssLoOfKjnTGYbAGADQI";  

    $url = "https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token=$ACCESS_TOKEN";  

    $data = '{"msg_id": "3147483651"}';  

    $result = curl_http_post($url, $data);  

    echo $result;  

}  

得到的返回值如下:

[javascript] view
plain copy

{"errcode":0,"errmsg":"ok"}  

此时,再点击相应的图文,则提示该消息已经被删除啦!!如下:



7).事件推送群发结果

        官方文档上说:"由于群发任务提交后,群发任务可能在一定时间后才完成,因此,群发接口调用时,仅会给出群发任务是否提交成功的提示,若群发任务提交成功,则在群发任务结束时,会向开发者在公众平台填写的开发者URL(callback URL)推送事件。"我的结果如下:

[html] view
plain copy

<xml>  

    <ToUserName><![CDATA[gh_056dd68c0c2a]]></ToUserName>  

    <FromUserName><![CDATA[oe5SXvzMz7uoRjMv9NmTSsskNgnY]]></FromUserName>  

    <CreateTime>1468469346</CreateTime>  

    <MsgType><![CDATA[event]]></MsgType>  

    <Event><![CDATA[MASSSENDJOBFINISH]]></Event>  

    <MsgID>3147483651</MsgID>  

    <Status><![CDATA[send success]]></Status>  

    <TotalCount>2</TotalCount>  

    <FilterCount>2</FilterCount>  

    <SentCount>2</SentCount>  

    <ErrorCount>0</ErrorCount>  

</xml>   
    
博客: http://blog.csdn.net/szuzsq
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: