专属微信公众号消息推送(java版)

前言:专属女朋友的微信推送消息,简单的写个文档。
在这里插入图片描述

gitee地址:消息推送

所用框架及Api

  • springboot搭建应用
  • 天行数据Api(彩虹屁、早安语句、天气)

前置条件

  • 申请微信公众号测试号及微信模板配置

  • 申请一个微信公众号测试号。传送门:测试号申请
    在这里插入图片描述

  • 扫码登陆注册,注册成功后就会生成微信公号的appID和appsecret

在这里插入图片描述

  • 需要接收消息的人微信扫码关注 测试号二维码,微信给我们返回我们的openid,这个openid在推送时特别重要。

在这里插入图片描述

  • 新增消息模板,模板中参数内容必须以".DATA"结尾,否则视为保留字,模板保留符号"{{ }}"; 例如{{date.DATA}}

在这里插入图片描述

```tex
我的模板:
{{morning.DATA}} 
{{date.DATA}} {{week.DATA}} 
城市:{{city.DATA}} 
天气:{{weather.DATA}} 
最低气温: {{lowest.DATA}} 
最高气温: {{highest.DATA}} 
降雨概率:{{pop.DATA}} 
今日建议: {{tips.DATA}} 
今天是我们恋爱的第{{loveDay.DATA}}天 
距离我的生日还有{{myBirthday.DATA}}天 
距离崽崽生日还有{{babyBirthday.DATA}}天 彩虹屁: {{pipi.DATA}}
```
  • 配置之后就完成了微信公众号的配置

  • 注册一个天行数据API的账户,申请一个接口获取一个自己apiKey。

    • 传送门:天行数据注册
      在这里插入图片描述

在这里插入图片描述

  • 我这里用到了3个接口,早安语句、彩虹屁及天气接口,其中天气接口是计次的,在使用完免费次数后扣天豆,具体看接口详细

在这里插入图片描述

项目结构

wechatTemplate					
|———src                          # 程序根目录
│   ├── main                     # 程序源文件目录├── java			     # JAVA源文件目录├── com		         ├── wechat  	 ├── template 		# 包路径├── config 		# 配置包(微信公众号配置类及天行Api配置类)├── constants 	# 常量包(api地址类及常量类)├── domain 		# 实体类包├── service 	# 接口包├── impl 	# 实现类├── Task 		# 定时任务TemplateApplication #启动类├── resource		     	 # 资源文件夹目录├── application.yml		 # 配置文件(微信的appid及其他配置)
│   ├── test                     	 # 测试源文件目录├── java			    	 # 测试JAVA源文件目录├── com		         ├── wechat  	 ├── template 		# 测试包路径TemplateApplicationTests #单元测试启动类

实现逻辑

  • 根据微信公众测试号的appID,appsecret调用微信接口文档获取accessToken

        @Overridepublic String getAccessToken(String appId, String appSecret) {String requestUrl = UrlConstant.ACCESS_TOKEN_URL + "appid=" + appId + "&secret=" + appSecret;String resp = HttpUtil.get(requestUrl);JSONObject result = JSONUtil.parseObj(resp);logger.info("获取access_token:" + resp);String token = result.getStr("access_token");logger.info("token:" + token);return token;}
  • 根据accessToken调用微信接口文档获取关注用户,也可写死用户的openId

        @Overridepublic List<String> getUserList(String accessToken) {String requestUrl =  UrlConstant.GET_USER_LIST+ accessToken;String resp = HttpUtil.get(requestUrl);JSONObject result = JSONUtil.parseObj(resp);logger.info("用户列表:" + resp);JSONArray openIdJsonArray = result.getJSONObject("data").getJSONArray("openid");List<String> openIds = JSONUtil.toList(openIdJsonArray, String.class);return openIds;}
  • 定时任务推送(我设置的是每天早上7点,可自行调整),根据上面新增的模板格式,填充数据,设置模板id、accessToken、openId发送消息。

        @Scheduled(cron="0 0 7 * * ? ")private void sendTemplateMsg() throws ParseException {//配置及数据SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");String date = simpleDateFormat.format(new Date());String appId = wechatConfig.getAppId();String appSecret = wechatConfig.getAppSecret();String babyBirthday = wechatConfig.getBabyBirthday();String myBirthday = wechatConfig.getMyBirthday();String loveDay = wechatConfig.getLoveDay();String appKey = tianApiConfig.getAppKey();String area = tianApiConfig.getArea();//获取微信tokenString token = weiXinService.getAccessToken(appId,appSecret);//获取关注用户List<String> userList = weiXinService.getUserList(token);for (String openId : userList) {//发送消息实体WechatSendMsgVo sendMsgVo = new WechatSendMsgVo();//设置模板idsendMsgVo.setTemplate_id(wechatConfig.getTempId());//设置接收用户sendMsgVo.setTouser(openId);Map<String, WechatTemplateVo> map = new HashMap<>();//获取早安语句String zaoAnInfo = weiXinService.getZaoAnInfo(appKey);map.put("morning", new WechatTemplateVo("Baby 早安!"+zaoAnInfo,"#ff6666"));//获取天气WeatherInfo weatherInfo = weiXinService.getWeatherInfo(appKey, area);//日期map.put("date", new WechatTemplateVo(weatherInfo.getDate(),null));//星期map.put("week",new WechatTemplateVo(weatherInfo.getWeek(),null));//城市map.put("city",new WechatTemplateVo(weatherInfo.getArea(),"#9900ff"));//天气map.put("weather",new WechatTemplateVo(weatherInfo.getWeather(),"#CD96CD"));//最低气温map.put("lowest",new WechatTemplateVo(weatherInfo.getLowest(),"#A4D3EE"));//最高气温map.put("highest",new WechatTemplateVo(weatherInfo.getHighest(),"#CD3333"));//降水概率map.put("pop",new WechatTemplateVo(weatherInfo.getPop()+"%","#A4D3EE"));//今日建议map.put("tips",new WechatTemplateVo(weatherInfo.getTips(),"#FF7F24"));//相爱天数int loveDays = fun(loveDay, date);map.put("loveDay",new WechatTemplateVo(loveDays+"","#EE6AA7"));//我的生日int myDay = fun2(myBirthday, date);map.put("myBirthday",new WechatTemplateVo(myDay+"","#EE6AA7"));//宝贝生日int babyDay = fun2(babyBirthday, date);map.put("babyBirthday",new WechatTemplateVo(babyDay+"","#EE6AA7"));//彩虹屁String caiHongPiInfo = weiXinService.getCaiHongPiInfo(appKey);map.put("pipi",new WechatTemplateVo(caiHongPiInfo,"#E066FF"));sendMsgVo.setData(map);JSONObject entries = weiXinService.sendMsg(sendMsgVo,token, openId);}}
    

配置修改

resource目录下“application.yml”中配置文件修改。

#公众号配置
wechat:appId: 测试号的appIDappSecret: 测试号的appSecrettempId: 测试号的模板idmyBirthday: 自己的生日(1998-10-16)babyBirthday: 女朋友的生日loveDay: 相恋的日子#彩虹屁接口
tianapi:appKey: 天行数据Api的apiKeyarea: 要获取天气的城市

测试

test目录下“TemplateApplicationTests”类,单元测试,可不启动服务,测试代码是否有问题
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/11258.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信公众号文章怎么加入文件下载

在微信公众号文章中加入附件下载对于运营者来说越来越重要&#xff0c;我经常要帮助学校发布招聘信息&#xff0c;需要在文章中带上报名表&#xff0c;所以也很需要在文章中插入报名表文档。之前都是用百度网盘&#xff0c;但是使用太麻烦了。 有朋友推荐了另外一个方法&#…

如何下载微信公众号视频

1、微信推文复制链接 2、使用谷歌浏览器打开链接&#xff08;不用谷歌浏览器也可以&#xff0c;不过sefari没有检查&#xff0c;不能下载视频&#xff09; 3、右键打开检查 4、查找视频资源 5、右键双击 6、下载 即可下载成功。 其实直接将视频全品播放也有下载按钮&…

微信公众号 下载文件 在浏览器打开

a.html 页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>在浏览器打开</title><meta name"renderer" content"webkit"><meta http-equiv"X-UA-Compatib…

手把手教你下载微信公众号里的视频

要达到的效果如题 下面就以这个视频为例子&#xff1a; 看电影听单词 | 第18期-《初恋这首情歌》 一、找到视频的vid 用chrome浏览器打开&#xff0c;按下F12&#xff0c;在element项里找到这段视频对应的src信息&#xff0c;其中有vid这一项。 这一步是很简单的&…

Python下载微信公众号文章和图片保存至本地

思路 获取到微信公众号的文章之后&#xff0c;使用 BeautifulSoup 和正则表达式 解析出文章标题和包含正文的html. 获取到html之后&#xff0c;用正则表达式获取图片下载链接&#xff0c;下载成功后将微信的链接替换成本地图片链接。 运行效果 代码 import requests from r…

微信公众号消息推送教程

微信每日定时推送消息提醒&#xff0c;这样的技术男友谁不爱呢&#xff01; 欢迎专注微信公众号【凯小白学编程】 一、注册一个公众号 不多赘述&#xff0c;一般的程序员都会开一个自己的公众号来玩吧~ 二、启用测试账号 因为公众号模板消息推送是服务号才有的功能&#xff…

uniapp微信公众号h5生成图片下载

背景&#xff1a;最近接到一个需求要在微信公众号h5动态生成海报长按进行下载。在各个浏览器是没问题的。去到微信公众号h5就不行了&#xff0c;百撕不得骑jie。后面发现是微信内置浏览器限制的原因。 需求&#xff1a;根据链接动态生成二维码&#xff0c;再结合背景图等标签生…

下载微信公众号全部文章的方法

如何能将看到的非常葚欢的公号文章一网打尽&#xff1f;有将近十个号是学习个人成长&#xff0c;但是每个号都有几百篇历史文章&#xff0c;目己只能零星的看到就存到有道或印象笔记&#xff0c;但还是差的很远•很想找个方法突似程序之类的将这些文章都保存下来然后排版打印字…

微信公众号使用:查看和下载微信公众号的二维码

作为微信公众号的维护人员来说,不仅要知道微信公众号的基本功能,还要知道微信公平台的法律法规,发布文章的规则等常识。微信公众号申请成功之后,查看并下载微信公众号的二维码是比较常见的需求,而且添加微信公众号的时候不仅是通过搜索添加,也要通过直接扫描二维码识别添…

ChatGPT编程准确率暴降13%!UIUC南大新基准让AI代码现原形了

萧箫 发自 凹非寺量子位 | 公众号 QbitAI 用ChatGPT写代码&#xff0c;已经是不少程序员的常规操作了。 △“至少提速3~5倍” 但你有没有想过&#xff0c;ChatGPT生成的代码&#xff0c;有不少只是“看起来准确”而已&#xff1f; 来自伊利诺伊大学香槟分校和南京大学的一项最新…

奇舞周刊第 487 期 可在控制流中调用!React 新 hook 尝鲜

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 可在控制流中调用&#xff01;React 新 hook 尝鲜 React 在之前的文档中提到了 Suspense for data fetching[1] 的理念&#xff0c;虽然在新的文档中下线了&#xff0c;但还是有相…

本周“AI圈”爆火的GPT神器:AutoGPT,了解一下

AutoGPT到底是什么&#xff1f;它是一个实验性的开源应用程序&#xff0c;展示了GPT-4语言模型的功能。该程序由GPT-4驱动&#xff0c;可以自主实现用户设定的任何目标。 AutoGPT能够根据用户需求&#xff0c;在用户完全不插手的情况下自主执行任务&#xff0c;包括日常的事件分…

360/腾讯/网易有道/CSDN版ChatGPT上线;看!AIGC艺术第一个场景落地北京;AI狂飙的时代,人还有价值吗 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『周鸿祎演示360版ChatGPT』网友取名红孩儿&#xff0c;全程高能 在2023数字安全与发展高峰论坛上&#xff0c;360创始人周鸿祎带来了…

ChatGPT为什么会颠覆内容创作成本?

前言 随着科技的发展&#xff0c;人工智能&#xff08;AI&#xff09;已经成为一个热门话题&#xff0c;它的出现和发展已经给人们的生活带来了巨大的变化。其中&#xff0c;ChatGPT是一种有前途的AI技术&#xff0c;它可以帮助人们自动生成文本内容&#xff0c;从而降低内容创…

ChatGPT知多少?小白扫盲,通俗易懂

一、ChatGPT到底是什么&#xff1f; ChatGPT是由OpenAI 发布的自然语言模型&#xff0c;它的英文全称是“Chat Generative Pre-trained Transformer”&#xff0c;直译过来就是作为聊天使用的生成式预训练转换器。其中&#xff0c;Chat代表着使用方式&#xff0c;GPT是OpenAI …

ChatGPT 如何让测试变得更好?

基于AI的新型语言系统ChatGPT成为全网热议的话题。它在 2022 年 11 月发布后获得了惊人的关注度。它的用户数在短短五天内就达到了 100 万。因此&#xff0c;这个独特的系统可以为 IT 行业提供一些特殊的东西。 谈到IT行业&#xff0c;软件测试是ChatGPT有望蓬勃发展的核心点之…

让Bito帮你写Mokito单元测试

前言 现在稍微大一点的公司应该都有单测覆盖率要求&#xff0c;比如核心工程单测覆盖率95%以上&#xff0c;非核心工程90%以上。单测可以降低开发错误的反馈回路&#xff0c;减少重复工作&#xff0c;提升开发效率。但是写单测对于开发来说需要额外的时间。我们可以用TestMe、…

ChatGPT帮你改进工作和生活的10种用途!

最近火爆全网的ChatGPT是一款于2022年11月30日在美国发布的聊天机器人程序&#xff0c;它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样来聊天交流&#xff0c;甚至能完成撰写邮件、视频脚本、文案、翻译、代码等…

【ChatGPT实战】4.使用ChatGPT帮你制作XMind

ChatGPT不仅可以用来回答各种问题&#xff0c;还能帮助我们轻松地制作出清晰的思维导图&#xff01;如果你像我一样曾经为制作XMind而感到头痛&#xff0c;那么现在就跟着我的教程一起来学习吧&#xff01; 在本篇教程中&#xff0c;我们将学会使用ChatGPT来帮助我们制作XMind…

用chatgpt帮你写一段GEE计算森林生物量的代码,你猜结果如何?

以下是我向GPT提问后的结果&#xff1a; 能提供一个森林生物量估算的GEE脚本吗&#xff1f; 我可以提供一个基本的森林生物量估算脚本&#xff0c;请使用Google Earth Engine (GEE) 平台。 这是一个简单的森林生物量估算脚本&#xff0c;请根据自己的需求进行修改。如果有其他…