首页 > 其他分享 >【fastweixin框架教程6】微信企业号给关注的用户主动发送推送消息

【fastweixin框架教程6】微信企业号给关注的用户主动发送推送消息

时间:2023-05-21 15:01:09浏览次数:43  
标签:String 微信 param User import msg new fastweixin 推送


  下面这个类我对fastweixin 框架的简单封装调用,大家可以参考,如果需要QYAPIConfigExt和MainServernSupport,请参考本教程以前几篇文章
    如需测试,需要去微信企业号官网申请试用账号。其中发送文本消息和图文消息都是没有问题。

    我们知道,企业号主要是面向企业需求而生的,因此内部消息的交流显得非常重要,而且发送、回复消息数量应该很可观,对于大企业尤其如此,因此可以结合企业号实现内部消息的交流。企业号具有关注安全、消息无限制等特点,很适合企业内部的环境。

     目标:企业号实现文本、图文消息等消息的发送操作。





注意事项:1、参考官方文档,确保有相应的权限进行操作




                   2、注意所有文字长度是字节,不是字数




                   3、截至写稿为止,疼讯可发送消息的实际数量是企业号用户数*30,自己可以看文档:http://qydev.weixin.qq.com/wiki/index.php?title=%E5%8F%91%E6%B6%88%E6%81%AF


  注2:图文可以用自己网站来代替疼讯保存,而其他媒体信息需要上传到疼讯服务器,其限制如下:

临时素材文件:(media_id)会在上传到微信服务器3天后自动删除。
永久素材文件:(media_id)会一直保存在微信服务器上,但是对企业能够保存的永久素材数量有所限制: 整个企业图文消息素材和图片素材数目的上限为5000,其他类型为1000.


本人根据实际业务具体需求,采用自己服务器来保存图文消息,下面类只需要传给疼讯一个URL链接即可。

你肯定会问我,那视频怎么办?

这种有两种方法解决:

1、上传到疼讯视频,然后把视频有个通用访问链接保存到数据库里面,然后通过servlet之类的技术拼合然后输出成HTML完整页面,把这个servlet访问链接给用户即可。

2、自己服务器保存视频,然后做个通用视频播放模板JSP(HTML5播放视频的网页一堆堆),把访问视频JSP的链接给用户即可。

package com.nsjs;

import com.fastwixinextend.QYAPIConfigExt;

import com.github.sd4324530.fastweixin.QYFastweixinTest;
import com.github.sd4324530.fastweixin.company.api.QYMessageAPI;
import com.github.sd4324530.fastweixin.company.api.config.QYAPIConfig;
import com.github.sd4324530.fastweixin.company.api.response.GetQYSendMessageResponse;
import com.github.sd4324530.fastweixin.company.message.QYArticle;
import com.github.sd4324530.fastweixin.company.message.QYNewsMsg;
import com.github.sd4324530.fastweixin.company.message.QYTextMsg;
import com.github.sd4324530.fastweixin.util.CollectionUtil;
import com.github.sd4324530.fastweixin.util.JSONUtil;

import java.util.ArrayList;
import java.util.List;

public class SendMessage {

    public SendMessage() {
        super();
    }

    public QYAPIConfigExt config = null;

    public QYAPIConfigExt initConfig() {
        if (config == null) {
            config
                    = new QYAPIConfigExt(MainServernSupport.getCropId(), MainServernSupport.getAPPSecret(),
                            "luozhuang",
                            System.currentTimeMillis());
        }
        return config;
    }

    public QYAPIConfigExt initConfig(String CropId, String APPSecret,
            String AccessToken,
            long AccessTokenTime) {
        QYAPIConfigExt config;
        config
                = new QYAPIConfigExt(CropId, APPSecret, AccessToken, AccessTokenTime);
        return config;
    }

    /**
     * @param Text 要发送文本内容
     * @param WeixinIDList 成员IDlist
     * 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送
     * @param AgentID 应用ID号
     * @return
     */
    public String sendMessage(String Text, String User,
            String AgentID) {
        QYTextMsg qyTextMsg = new QYTextMsg();
        qyTextMsg.setText(new QYTextMsg.Text(Text));
        qyTextMsg.setToUser(User);
        qyTextMsg.setAgentId(AgentID);
        QYMessageAPI messageAPI = new QYMessageAPI(initConfig());
        GetQYSendMessageResponse response = messageAPI.send(qyTextMsg);
        return response.getErrmsg();
    }

    /**
     * @param Text 要发送文本内容
     * @param User 成员IDlist
     * 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送
     * @param ZZBM
     * @param AgentID 应用ID号
     * @return
     */
    public String sendMessage(String Text, String User, String ZZBM,
            String AgentID) {
        QYTextMsg qyTextMsg = new QYTextMsg();
        qyTextMsg.setText(new QYTextMsg.Text(Text));
        qyTextMsg.setToUser(User);
        qyTextMsg.setToParty(ZZBM);
        qyTextMsg.setAgentId(AgentID);
        QYMessageAPI messageAPI = new QYMessageAPI(initConfig());
        GetQYSendMessageResponse response = messageAPI.send(qyTextMsg);
        return response.getErrmsg();
    }

    /**
     * User 和ZZBM必须选一个,需要注意的是ZZBM包括下属所有子部门,所以建议不是群发时候,不要使用ZZBM,只指定User
     *
     * @param User
     * 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送
     * @param ZZBM 部门ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
     * @param agentid 应用ID号
     * @param title 标题
     * @param description 描述
     * @param url 点击后跳转的链接。
     * @param picurl 图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80。如不填,在客户端不显示图片
     * @return
     */
    public String sendNewsMessage(String User, String ZZBM, String agentid, String[] title,
            String[] description, String[] url,
            String[] picurl) {
        QYNewsMsg msg = new QYNewsMsg();
        msg.setToUser(User);
        msg.setToParty(ZZBM);
        msg.setMsgType("news");
        msg.setAgentId(agentid);
        List<QYArticle> articleist = new ArrayList<QYArticle>();
        for (int i = 0; i < title.length; i++) {
            QYArticle article
                    = new QYArticle(title[i], description[i], picurl[i], url[i]);
            articleist.add(article);
        }
        msg.setArticles(articleist);
        QYMessageAPI messageAPI = new QYMessageAPI(initConfig());
        GetQYSendMessageResponse response = messageAPI.send(msg);
        System.out.println(JSONUtil.toJson(msg));
        return response.getErrmsg();
    }

    /**
     * User 和ZZBM必须选一个,需要注意的是ZZBM包括下属所有子部门,所以建议不是群发时候,不要使用ZZBM,只指定User
     *
     * @param User
     * 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送
     * @param agentid 应用ID号
     * @param title 标题
     * @param description 描述
     * @param url 点击后跳转的链接。
     * @param picurl 图文消息的图片链接,支持JPG、PNG格式,较好的效果为大图640*320,小图80*80。如不填,在客户端不显示图片
     * @return
     */
    public String sendNewsMessage(String User, String agentid, String[] title,
            String[] description, String[] url,
            String[] picurl) {
        QYNewsMsg msg = new QYNewsMsg();
        msg.setToUser(User);

        msg.setMsgType("news");
        msg.setAgentId(agentid);
        List<QYArticle> articleist = new ArrayList<QYArticle>();
        for (int i = 0; i < title.length; i++) {
            QYArticle article
                    = new QYArticle(title[i], description[i], picurl[i], url[i]);
            articleist.add(article);
        }
        msg.setArticles(articleist);
        QYMessageAPI messageAPI = new QYMessageAPI(initConfig());
        GetQYSendMessageResponse response = messageAPI.send(msg);
        System.out.println(JSONUtil.toJson(msg));
        return response.getErrmsg();
    }

    public static void main(String[] arg) {
        SendMessage message = new SendMessage();
        message.sendNewsMessage("大师罗庄", "1", MainServernSupport.getAgentID(), new String[]{"大师罗庄博客"}, new String[]{"大师罗庄博客"}, new String[]{g"}, new String[]{});
    }
}



标签:String,微信,param,User,import,msg,new,fastweixin,推送
From: https://blog.51cto.com/u_696257/6319510

相关文章

  • 请在微信客户端打开链接:火狐浏览器模拟微信浏览器内核教程 ,用chrome模拟微信浏览器访
    背景:微信浏览器能访问,出现,请在微信客户端打开链接。useragentswitcherforfirefox:https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/FF越来越不行了,下载都下载不下来~useragentswitcher1.0.34中文版forchrome:http://www.pc6.com/soft/FireFox_133175.h......
  • 解决Anroid7.0以上版本无法抓取微信浏览器中Https请求
    为什么安卓7.0以上的系统,微信7.0版本以上无法抓取https包?原因:1.安卓7.0之后,提高了系统安全性。APP默认不信任用户域的证书2.微信7.0以后更新了安全机制,加入了防止中间人attack的机制详情可搜索sslpinning了解防止中间人attackSSLPinninghttps的网站使用使用伪证书可以抓到,但app......
  • 支付宝支持给微信好友转账?
    阅读本文大概需要1.69分钟。最近看到不少人在说支付宝支持给微信或者QQ好友转账了,有的还说是不是微信支付宝互联互通了。。仔细一看,才发现,支付宝的新操作,充其量就是拿微信当作一个传声筒。简单说就是类似一个专属红包或者电子支票,把钱转进去之后生成一个专属二维码,微信发送,别人......
  • 微信小程序-页面生命周期
    官方文档:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/page-life-cycle.html......
  • pbootcms对接微信扫码登录代码核心片段和步骤(前后端)
    首先需要在微信公众平台或开放平台中创建应用,并获取到AppID和AppSecret。在pbootcms中创建一个自定义模板页面(例如:wechat_login.html),并在该页面中添加以下代码,用于生成微信扫码登录的二维码:<!--引入jquery库--><scriptsrc="https://cdn.bootcss.com/jquery/3.5.1/jque......
  • 阿里云+微信小程序部署记录
    这两天公司买了阿里云服务器和数据库,然后又说重新部署一套小程序,磕磕绊绊总算成了。记录一下遇到的问题吧。防止下次遇到这些事情,不会就麻烦了。T_T首先是购买了服务器和数据库,emmm不算大,都是2核4G的。害,也没啥业务量,权且先用着吧。注意点:买的过程呢,遇到过那种秒杀款,还好还好,我......
  • 电脑微信占用100多GB空间 解决办法来了:重回清爽流畅
    这几天微信吃内存的话题又上热搜了,作为一款10亿+用户的国民级APP,微信的真是让人又爱又恨,不用几乎不可能,用起来槽点又多,光是磁盘占用就是个头疼的问题。不论是工作还是日常沟通,微信里面的文件及语音、视频都会很多,时间长了就会占用大量空间,手机上占用100多GB很常见,电脑版微信同样......
  • ABP模块签入GitLab后自动打包并推送到ProGet
    #1、添加一个名为下划线的解决方案文件夹#2、把解决方案根目录下的几个必要的文件添加到上述文件夹下#3、修改NuGet.Config,添加私有NuGet服务器的网址,并配置用户名和密码:ABPSuite模板生成的NuGet.Config是这样的:添加一行自己服务器的配置,另外有对应的节点设置用户名和密码:#4、......
  • 微信的评价
    微信具有零资费、跨平台沟通、显示实时输入状态等功能,与传统的短信沟通方式相比,更灵活、智能,且节省资费。①微信界面支持发送语音短信、视频、图片,表情和文字②支持多人群聊③支持查看所在位置附近使用微信的人④支持腾讯微博、QQ邮箱、漂流瓶、语音记事本、QQ同步助手等插......
  • 微信软件的评价
    1、用户界面:采用白底黑字,选项框排在界面底部,简洁大方,一目了然。2、记住用户选择:从中观视角去分析产品的服务人群,功能流程,信息结构,并由此得出用户画像、用户体验地图、痛点痒点爽点等用户体验相关的结论。最后是从微观视角,从用户内心的底层情绪出发,去探究产品对于用户内心情绪......