公众号群发消息

news/2025/2/26 3:35:54

权限

只有认证的的订阅号 和 服务号,可以群发消息。自己申请的测试号,或者没认证的订阅号、服务号,没有权限。
在这里插入图片描述
样子

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

在这里插入图片描述

者其实是两条图文消息,上面的真好是第一条,下面的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 2018-10-24
 */
public class MessageService extends BaseService {

    private static final String DEL_URL = "https://api.weixin.qq.com/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 com.google.common.collect.Lists;
import com.tsing.wechat.utils.ResourceUtils;

import java.io.File;

/**
 * @author susq
 * @since 2018-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": "www.qq.com",
    "content": "第一个图文消息的内容。",
    "digest": "digest",
    "show_cover_pic": 1
}

 

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

   

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

详细的消息格式文档里都有 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1481187827_i0l21, 发送消息的接口,上传素材等等所哟接口文档里也都有。对照fastweixin 里面封装的消息对象,和API,阅读效果更佳。 https://gitee.com/pyinjava/fastweixin/
————————————————
版权声明:本文为CSDN博主「alwaysBrother」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u013041642/article/details/83382665


http://www.niftyadmin.cn/n/3268081.html

相关文章

公众号开发文章

微信公众号(一)获取access_token这里是引用 https://blog.csdn.net/FORLOVEHUAN/article/details/81512556 微信公众号(二)获取用户列表https://blog.csdn.net/FORLOVEHUAN/article/details/82760618 微信公众号群发(三)群发消息 https://blog.csdn.…

WPF不明内存泄露已解决,白头发也没了

原文:WPF不明内存泄露已解决,白头发也没了在使用OpenExpressApp进行WPF应用开发过程中遇到多个内存泄漏的地方,在上一篇中求助了一个内存泄露问题【WPF不明内存泄露原因,头发都白了几根】,本篇与大家分享一下如何解决此问题的过程…

Jenkins与Docker的自动化CI/CD实战

在互联网时代,对于每一家公司,软件开发和发布的重要性不言而喻,目前已经形成一套标准的流程,最重要的组成部分就是持续集成(CI)及持续部署、交付(CD)。本文基于JenkinsDockerGit实现…

idea 新建web项目以及404分析

大家可能以前用的不是idea编程软件,一下子使用idea可能会出现很多启动不了或者启动成功404的情况,一般来说这机会都是因为新建项目的时候没有配置好,打war包的时候配置有一定的问题导致的。 废话不多说首先如何创建一个web项目 首先到左上…

iperf测试网卡性能

1,iperf是一个网络性能测试工具。可以测试TCP和UDP带宽质量,可以测量最大TCP带宽,具有多种参数和UDP特性,可以报告带宽,延迟抖动和数据包丢失 2,安装epel源wget -O /etc/yum.repos.d/epel.repo http://mirr…

intellij idea创建第一个动态web项目的步骤方法

一.创建JavaWeb 1.第一步 点击左上角的File-->New-->Project 2.第二步 1.找到Java Enterprise之后,在Application Sever中找到自己的Tomcat,同时勾选中Web Application 2.第一项是你的工程名字,随便取啦,第二个是你的工程…

NLPIR智能语义:数据挖掘技术是人工智能的基础

在当今信息爆炸的时代,伴随着社会事件和自然活动的大量产生(数据的海量增长),人类正面临着“被信息所淹没,但却饥渴于知识”的困境。随着计算机软硬件技术的快速发展、企业信息化水平的不断提高和数据库技术的日臻完善,人类积累的…

Java(Java SE7) 体系结构图

原文:https://docs.oracle.com/javase/7/docs/ 转载于:https://www.cnblogs.com/zhaoqingqing/p/9478250.html