300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 微信公众号java开发沉淀(五)推送群发消息

微信公众号java开发沉淀(五)推送群发消息

时间:2021-11-14 09:28:52

相关推荐

微信公众号java开发沉淀(五)推送群发消息

权限

只有认证的的订阅号 和 服务号,可以群发消息。自己申请的测试号,或者没认证的订阅号、服务号,没有权限。

样子

发出去的文字消息、图片消息等于普通消息无差,我就不多说了。发送出去的图文消息是这样子的。

者其实是两条图文消息,上面的真好是第一条,下面的Happy Day是第二条。多条的时候依次在后面增加。

使用fastweixin 的api, 群发消息

package com.tsing.fast;import com.alibaba.fastjson.JSON;import com.github.sd4324530.fastweixin.api.MessageAPI;import com.github.sd4324530.fastweixin.api.config.ApiConfig;import com.github.sd4324530.fastweixin.api.enums.MediaType;import com.github.sd4324530.fastweixin.api.response.GetSendMessageResponse;import com.github.sd4324530.fastweixin.message.ImageMsg;import com.github.sd4324530.fastweixin.message.MpNewsMsg;import com.github.sd4324530.fastweixin.message.TextMsg;import com.tsing.wechat.utils.HttpUtils;import com.tsing.wechat.utils.ResourceUtils;import java.util.HashMap;import java.util.Map;/*** @author susq* @since -10-24*/public class MessageService extends BaseService {private static final String DEL_URL = "https://api./cgi-bin/message/mass/delete?access_token=";public static void main(String[] args) {ApiConfig config = new ApiConfig(APP_ID, ENCODING_AES_KEY);MessageAPI messageAPI = new MessageAPI(config);// TextMsg textMsg = getMsg();// ImageMsg imageMsg = getImgMsg(); MpNewsMsg mpNewsMsg = getMaNewMsg();// isToAll 是否发送给全部用户。false时需要填写tagId,true时可忽略tagId树形GetSendMessageResponse response = messageAPI.sendMessageToUser(mpNewsMsg, true, null);System.out.println("发送结果:" + JSON.toJSONString(response));}private static void delSendAll(ApiConfig config) {String param = ResourceUtils.getResourceString(MediaService.class.getResourceAsStream("/del.txt"));String response = HttpUtils.doPost(DEL_URL + config.getAccessToken(), param);System.out.println("发送结果:" + JSON.toJSONString(response));}private static MpNewsMsg getMaNewMsg() {MpNewsMsg msg = new MpNewsMsg();msg.setMediaId("2XkN4_oHgQAghifHt5iemp1lOvLsH5pZfNrB8Avat5rAcMzpCnVi0WAMcM8yZFsz");return msg;}private static TextMsg getMsg() {TextMsg textMsg = new TextMsg();textMsg.setContent("群发消息");textMsg.setMsgType("text");return textMsg;}private static ImageMsg getImgMsg() {ImageMsg imageMsg = new ImageMsg();imageMsg.setMsgType(MediaType.IMAGE.toString());imageMsg.setMediaId("PSUYMe5hdzqT-JrvKg-FEId9iGBj-648kuMLqDQPGr1ffA0yCCF4HxlmFuzrIfAL");return imageMsg;}}

需要注意的是:如果发送的是文本消息,直接写。 如果发送的是媒体文件,图片,语音等。需要先通过素材上传接口上传。返回 media_id, 后面发群发消息的时候设置这个 media_id 到消息中即可。

上传素材

package com.tsing.fast;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.github.sd4324530.fastweixin.api.MediaAPI;import com.github.sd4324530.fastweixin.api.config.ApiConfig;import com.github.sd4324530.fastweixin.api.entity.Article;import com.github.sd4324530.fastweixin.api.enums.MediaType;import com.github.sd4324530.fastweixin.api.response.UploadMediaResponse;import mon.collect.Lists;import com.tsing.wechat.utils.ResourceUtils;import java.io.File;/*** @author susq* @since -10-21*/public class MediaService extends BaseService {public static void main(String[] args) {ApiConfig config = new ApiConfig(APP_ID, ENCODING_AES_KEY);MediaAPI mediaAPI = new MediaAPI(config);// updaloadImg(mediaAPI);uploadNews(mediaAPI);}/*** @param mediaAPI*/private static void updaloadImg(MediaAPI mediaAPI) {File file = new File("E:/title.png");UploadMediaResponse response = mediaAPI.uploadMedia(MediaType.IMAGE, file);System.out.println("上传结果:" + JSON.toJSONString(response));}/*** 上传结果:{"created_at":1540365524,"media_id":"G03TyVQ14R3nRfyTqItxF4OeFX_t_hniGUGAzWXIjy5VtUaR8ynCMlyt_giabLDW","type":"news"}* @param mediaAPI*/private static void uploadNews(MediaAPI mediaAPI) {String new1 = ResourceUtils.getResourceString(MediaService.class.getResourceAsStream("/new1.txt"));String new2 = ResourceUtils.getResourceString(MediaService.class.getResourceAsStream("/new2.txt"));Article article1 = JSONObject.parseObject(new1, Article.class);Article article2 = JSONObject.parseObject(new2, Article.class);UploadMediaResponse response = mediaAPI.uploadNews(Lists.newArrayList(article1, article2));System.out.println("上传结果:" + JSON.toJSONString(response));}}

如果发送的是图文消息,也需要提前上传,发送的是图文消息的 media_id, 需要注意的是图文消息的缩略图,需要提前上传,获取到的media_id写入到图文消息的 thumb_media_id 字段中。

例如文中开始的那张图文消息,原本是这样的

{"thumb_media_id": "WU0huRZOFJk_ItOiC_AXIyaNszCKaih9yiy6ofDn1F0nRBGL5xjqNQhwsEC6xfUh","author": "苏少青","title": "真好","content_source_url": "","content": "第一个图文消息的内容。","digest": "digest","show_cover_pic": 1}

{"thumb_media_id": "WU0huRZOFJk_ItOiC_AXIyaNszCKaih9yiy6ofDn1F0nRBGL5xjqNQhwsEC6xfUh","author": "susq","title": "Happy Day","content_source_url": "/u013041642","content": "content","digest": "digest","show_cover_pic": 0}

thumb_media_id 是已经上传好的一张图片的 media_id, 把这两条图文,通过uploadNews 方法上传,得到图文消息的media_id, 再发送。所有关注当前公众号的粉丝。都可以收到了。

最后

详细的消息格式文档里都有 https://mp./wiki?t=resource/res_main&id=mp1481187827_i0l21, 发送消息的接口,上传素材等等所哟接口文档里也都有。对照fastweixin 里面封装的消息对象,和API,阅读效果更佳。 /pyinjava/fastweixin/

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