失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > java实现如何定时给微信群中发送消息

java实现如何定时给微信群中发送消息

时间:2018-12-06 20:14:48

相关推荐

java实现如何定时给微信群中发送消息

大家好,我是雄雄。

前言

前几天,发了一个系列这样的文章,如下所示:

java实现每日给女友微信发送早安等微信信息java实现给微信群中定时推送消息如何将每日新闻添加到自己博客中,发送到微信群中

基本都是说的一个事儿,那就是如何实现java与微信打通!

今天我们主要来介绍这个事儿,应用场景有以下几块:

我们都知道,企业微信是有许许多多的开放api供开发者使用的,比如使用java实现一个定时给微信中发送消息的功能,配置个群机器人就可以实现,那不借助企业微信可以实现吗?不借助别的技术,使用纯java可以实现给群中发送消息吗?

当然,是可以的!!今天,我们就来展开的介绍一下,如何直接使用java实现上面所说的技术。

效果图

每天晚上20.30提醒大家发日报

每天早上5.20发送时事新闻

来自群成员的好评

实现思路

定时任务为了方便快捷,我们直接使用springboot自带的来实现如何实现给微信群中发送消息?我们可以使用wechaty技术,也可以使用别的,因为wechaty要想使用它,是有一定的门槛的。技术能力的要求是其一,其二就是需要整一个ipad协议的token,才能使用。有人可能会说:那我整个token不就行了吗?

这倒是,你整一个就行,但是收费的,你愿意吗?一月几百你愿意吗?相信很多人一月拿出来几百肯定是不太愿意的。

3. 既然第二条有点棘手,那么还有没有别的方法,有!那就用封装过的wechaty来实现----智能微秘书(不是打广告哈),因为我刚开始也是看的wechaty,整好久,没有整出来,虽然giteegithub中确实也有demo,但是拉下来之后要想和自己的业务无缝衔接,还是有点麻烦的。

实现代码

由于我们是基于封装完成wechaty智能微秘书来实现的,所以需要先注册个账号,地址为:点我花20块钱开个月度会员,我是觉得20块钱可能就是一顿饭钱的事儿,何不拿来自己整点东西玩玩(只有会员才有openapi)的权限。

剩下的就简单了,然后我们只需要按照接口文档调用就行啦。

由于调用接口的时候,需要传递一个message对象,所以我这边就封装成了个实体类:

实体类如下WeiZhiMiShuVO

package com.shiyi.vo;import lombok.Data;/*** @author: muxiongxiong* @date: 12月17日 21:26* 公众号:雄雄的小课堂* 博客:/qq_34137397* 个人站:https://www.穆雄雄.com* 个人站:* @Description: 发送群消息的实体类(微秘书)*/@Datapublic class WeiZhiMiShuVO {/*** 消息类型:1 文字 2 图片url 3 图片base64 4 url卡片链接*/private Integer type;/*** 消息内容,如果type为1必填,内容换行使用\n*/private String content;/*** type 为2,3,4必填,图片地址,或者文件地址,例如png,jpg或者zip,excel都可以,必须是网络地址*/private String url;/*** type 为4必填,卡片链接的描述*/private String description;/*** type 为4必填,卡片链接的缩略图,网络图片地址*/private String thumbnailUrl;/*** type 为4必填,卡片标题内容*/private String title;}

调用给群里发送消息的接口,封装成自己想要发送的内容:

public void sendWechat(JSONObject contentObject) {String url = WEI_MI_SHU_API + "/openapi/v1/chat/room";WeiZhiMiShuVO weiZhiMiShuVO = new WeiZhiMiShuVO();weiZhiMiShuVO.setType(1);//拿到发送的消息列表JSONArray array = contentObject.getJSONArray("list");String todayDate = contentObject.getString("todayDate");StringBuilder sb = new StringBuilder("今天是:" + todayDate);//根据阳历计算农历Calendar today = Calendar.getInstance();// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......// 因为按中国礼拜一作为第一天所以这里减1String week = "";try {week = DateUtils.getDaysByWeekChina(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));today.setTime(DateUtils.chineseDateFormat.parse(todayDate));DateUtils lunar = new DateUtils(today);String nongli = lunar.toString();nongli = nongli.substring(nongli.indexOf("年")+1);sb.append(",星期").append(week).append(",农历").append(nongli).append(",早安🌞🌞🌞").append("\n");} catch (ParseException e) {e.printStackTrace();}int index = 1;for (Object o : array) {JSONObject item = (JSONObject) o;//标题加时间sb.append("\n").append(index).append(".").append(item.getString("title")).append("\n");;index++;}sb.append("\n详情请点击:https://88688.team/articles/").append(contentObject.getString("aid")).append(" 查看~\n");sb.append("\n【早安寄语】").append(goodMorning());System.out.println("发送的消息为:" + sb.toString());weiZhiMiShuVO.setContent(sb.toString());for (String str : SEND_GROUP) {JSONObject object = new JSONObject();object.put("apiKey", WEI_MI_SHU_KEY);object.put("roomName", str);object.put("message", weiZhiMiShuVO);HttpUtil.createPost(url).body(JSON.toJSONString(object)).execute().body();}}

上面的代码,实现的是获取时事新闻,包括每日一句的早安寄语,其中新闻接口是天行数据的,早安寄语也是~

天行数据接口,每个人可以免费10个,智能微秘书结合天行数据,你可以玩出更多花样出来期待你的成果,欢迎评论区留言

如果觉得《java实现如何定时给微信群中发送消息》对你有帮助,请点赞、收藏,并留下你的观点哦!

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