微信公众号(一)每日推送,天气推送 (含实时定位,天气预报,每日英语,纪念日等,可快速自定义消息模板并指定订阅者类型发送),另有小白网页版配置

  • 版本介绍
  • 1. 相关API接口申请
    • 1.1 微信
    • 1.2 百度
    • 1.3 天行API
  • 2 模板配置
  • 3 配置与部署
    • 3.1 本地版
    • 3.2 服务器版
  • 4 个性化
  • 5 新增
    • 5.1 给Special的下午模板
    • 5.2 给Special的晚安模板

(含实时定位,天气预报,每日英语,纪念日等,可快速自定义消息模板并指定订阅者类型发送),另有小白网页版配置)

小白配置版本已出,点击查看微信公众号每日定时推送,天气推送(小白网页版配置)

效果图如下

Git项目地址: https://github.com/asleepyfish/wx-pusher (基础版本不包含ChatGPT对话机器人,请直接下载v1.0.0)
v1.0.0源码下载地址:
https://gitcode.net/mirrors/asleepyfish/wx-pusher/-/archive/1.0.0/wx-pusher-1.0.0.zip
https://github.com/asleepyfish/wx-pusher/archive/refs/tags/1.0.0.zip

以下内容有不懂的地方欢迎留言询问~(也可以直接看GitHub上的README.md文档加我咨询)

最近加我咨询的人有点多,很多人都没有相关Java开发的基础,所以做一下说明:
这篇博客适用于对Java和Spring有相关的了解的读者或者对搭建一个自己独立控制的应用有兴趣的读者阅读。
后续有时间我会出一个网页自动编辑定时任务发送的小白版本(小白版本已出)

版本介绍

v1.0.0
基本功能支持,包括:
1.消息推送
2.实时定位
3.天气预报

v1.1.0
支持ChatGPT对话机器人

1. 相关API接口申请

1.1 微信

首先打开微信公众平台申请测试账号。
网页链接:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

点击登录按钮微信扫码进入,这里需要记录下页面上以下几个数据。等会添加到项目中的常量类中。

把上面几个信息填入WxConstants常量类相应位置。

然后让你想发送模板信息的人关注你的公众号。

用微信扫描左侧二维码关注。

项目里把所有关注者分为两类,一类是Special,一类是Other,比如说自己和对象是Special里面的,那么你可以指定模板只发送给Special。其他的你的朋友们,你想要他们关注你,但是不想把自己和对象使用的私密模板的内容每天发送给他们,不把他们加入Special列表即可。
经过配置以后,你可以自定义模板发送给三类人群

  • 第一种是发送给Special(比如发送带有纪念日内容的模板给你和你的对象)
  • 第二种是发送给Other(Other就是除了Special以外的其他关注者,比如发送带有天气预报的模板给其他人)
  • 第三种是发送给所有人(比如发送其他一些你和对象和朋友都可以)

那么怎么配置呢,很简单,在项目的配置文件application.yml中定义好了special的配置。

只需要把接收Special模板的特殊订阅者(比如你和你的对象)的openId定义在这就可以了。

1.2 百度

打开百度地图开发平台 https://lbsyun.baidu.com/index.php?title=%E9%A6%96%E9%A1%B5

登录以后点击右上方控制台

依次点击我的应用,创建应用

输入一个应用名称,应用类型选择服务端

然后往下拉,请求校验方式选择IP白名单校验,然后IP白名单设置为0.0.0.0/0,表示允许所有IP进行API的请求,然后提交,返回控制台首页。

这里就会显示刚创建好的应用了,把鼠标移动到访问应用(AK)的地方,会弹出来可以复制的图标,复制这个AK,填入项目的常量配置类WxConstants中相应位置。

1.3 天行API

打开天行API官网https://www.tianapi.com/
注册登录后每天会赠送免费的请求次数。

搜索框搜索每日英语并进入

进入每日英语

然后点击进行申请。
申请完成后,我们点击右上角的控制台进入

然后点击左侧我的密钥KEY,然后复制粘贴APIKEY到项目里的常量类WxConstants的相应位置。

至此当前项目所需要的调用相关的KEY申请完成。

2 模板配置

在上面已经讲解了模板可以给三类人发送,这里就讲解分别给Special和Other分别发送模板。
首先项目里有一个WxTemplateType的枚举类

四个参数的含义分别如上面所示,枚举类中已经定义好了两个模板,第一个是给Special的关注者发送的模板,第二个是Other关注者发送的模板(除了定义好的Special以外的订阅者都叫Other)
其中第一个参数templateId使用了一个常量类WxTemplateConstants去维护

这里面的模板id就是等会我们在微信测试公众平台上创建的模板对应的模板id。
进入微信测试公众平台,往下拉,找到模板消息接口配置的地方。
这里我已经定义好了两个模板,分别给Special和Other来发送的

给Special的模板样式如下

当前位置:{{location.DATA}}实时天气:{{now_temp.DATA}}°C  {{now_weather.DATA}}
{{now_wind_dir.DATA}}{{now_wind_class.DATA}} | 湿度{{now_rh.DATA}}%
今天:{{today_weather.DATA}}  {{today_high.DATA}}/{{today_low.DATA}}°C
明天:{{tomorrow_weather.DATA}}  {{tomorrow_high.DATA}}/{{tomorrow_low.DATA}}°C相识已经:{{meet_days.DATA}}天 ❤{{daily_english_en.DATA}}{{daily_english_cn.DATA}}

给Other的模板样式如下

当前位置:{{location.DATA}}实时天气:{{now_temp.DATA}}°C  {{now_weather.DATA}}
{{now_wind_dir.DATA}}{{now_wind_class.DATA}} | 湿度{{now_rh.DATA}}%
今天:{{today_weather.DATA}}  {{today_high.DATA}}/{{today_low.DATA}}°C
明天:{{tomorrow_weather.DATA}}  {{tomorrow_high.DATA}}/{{tomorrow_low.DATA}}°C{{daily_english_en.DATA}}{{daily_english_cn.DATA}}

创建好后,我们复制粘贴模板id替换掉WxTemplateConstants里的模板ID即可。
上述模板中给Special发送的时候有一个纪念日的日期,定义在WxConstants中,可以根据实际情况进行修改。

以上说法简单点做就是:
把模板样式复制以后去微信平台新增模板


创建好模板后,把模板ID复制粘贴到WxTemplateConstants类的相应位置即可。

3 配置与部署

项目中使用到了sqlite数据库对信息进行保存,只需要在application.yml中配置好地址即可。
根据自己项目中wx.db的实际位置情况,复制粘贴全路径来覆盖下方红框位置即可。

接下来我们需要对接口信息进行配置,来使用微信提供的实时定位功能(后面实时天气会用到)。
下面会分为本地版(没有自己的服务器)和服务器版进行说明。

3.1 本地版

没有服务器的,可以使用内网穿透工具,将本机服务启动端口映射到一个公网域名上。
这里推荐一种内网穿透工具Cpolar,点击链接下载对应版本并安装即可。

下载完以后,我们可以打开本地的Cpolar的端口http://localhost:9200/随便注册以下进入下面界面。

点击左侧创建隧道,然后选择号以后点击创建,然后就建立了一个公网域名到你本地启动项目端口的一个映射。

然后点击左侧在线隧道列表就可以看到映射的公网地址,http和https协议任选其一复制粘贴。
然后启动我们的SpringBoot项目。
打开微信公众平台,找到接口配置信息的URL那里,将刚复制好的公网ip地址填到下面的地方。下面的Token字段也是在WxConstants常量类中定义好的,用来校验的。可以自定义(这一步默认不用管也可以,下面的Token直接配置成asleepyfish)。

然后将刚才的公网地址粘贴到下方图片红框位置,输入项目中定义好的对应的Token,点击提交。


然后会在上方弹出一个配置成功的绿色的框。
接下来,在微信公众平台页面向下拉,找到获取用户地理位置的API,然后需要打开。这个意思是申请访问订阅者的地理位置,以便于实时根据订阅者地理位置推送天气。

这里需要让订阅者打开位置信息服务,微信打开关注好的接口测试号,进入设置,

然后将聊天中使用地理位置按钮点开即可。

注意:这里第一次设置完成后,退出关注的公众号的聊天对话框界面,然后再次进入,来记录当前的位置。(只有第一次打开位置信息需要这样,以后每次收到信息之后,会自动更新一次实时位置)

3.2 服务器版

首先将项目打包到服务器上,然后使用FTP工具传送到服务器上。

我这里将项目放在了software下。
config文件夹下是application.yml和db文件夹,db文件夹下是wx.db数据库。

相对于在windows上部署而言只需要修改wx.db的位置即可。我这里是把wx.db放到了/software/config/db/wx.db的位置。

然后使用启动脚本启动项目即可。直接输入:

nohup java -jar wx-pusher.jar >log.out 2>&1 &

启动以后参考3.1,对接口配置信息进行配置。
不同的点在于配置公网IP地址的地方可以配置自己服务器的地址,使用IP+端口的方式(有域名的使用域名+端口也可),如下图

接下来开启定位的方法参考3.1即可

4 个性化

上面的步骤完成后能够使用的定时任务在TimedTaskController类中,有两个

分别是早上五点给Special信息的人发送Special模板和早上六点给Other信息的人发送Other信息的模板。具体可以根据自己的实际需要对cron表达式进行修改来实现哪个时间发送模板。
如果想创建其他个性化的模板的话,只需要在微信公众平台上创建好一个新的模板,记录下模板ID,然后,在WxTemplateConstants类中新建一个变量保存新的模板ID。

然后在WxTemplateType枚举类中定义新的模板的信息,以及需要推送给订阅者的类型。

然后新建模板推送策略来实现WxTemplateStrategy,具体新建策略怎么编写,可以参考CommonMorningStrategy和SpecialMorningStrategy类。需要注意的是,新建的模板策略的Service中需要对应好这个策略对应的是WxTemplateConstants中的哪一个模板,如下所示。

然后在TimedTaskController类中仿照已经定义好的任务,新建定时任务对新模板进行推送。
具体新增的结果就如第5章新增所示。

5 新增

5.1 给Special的下午模板

5.2 给Special的晚安模板

微信公众号(一)每日推送详细教程(含实时定位,天气预报,每日英语,纪念日等,可快速自定义消息模板并指定订阅者类型发送)相关推荐

  1. 微信公众号(二)每日推送详细教程(AI回复助手)

    微信公众号(二)每日推送详细教程(回复助手) 1.准备阶段 1.1 基础性配置 1.2 账号准备 2. 配置阶段 2.1 配置application.yml文件 2.2 注解 3. 部署 效果图如下 ...

  2. 如何在微信公众号的文章推送中展示bilibili的视频

    0x00  需求背景: 我们学院举办了一个短视频设计大赛,需要在官方公众号里进行线上投票,选出大家最喜欢的视频. 然而微信公众号的文章推送中,限制了每篇文章只能上传三部视频,而我们需要把三十部作品都放 ...

  3. 通过python实现企业微信公众号链接+图文推送

    背景:通过python实现企业微信公众号链接+图文推送 目的:实现点击即看到内容,用更符合用户查看公众号消息的习惯推送消息 步骤: 1.创建企业微信公众号(应用) 2.确定推送内容(BI报表链接)+标 ...

  4. 观察者模式--微信公众号文章的推送

    ​观察者模式 学习容易,坚持不易,如果你坚持看完,会发现设计模式如此简单~ 目录 引子 认识观察者模式 我们先来看看微信公众号和用户之间的关注是怎么回事? 发布者+订阅者=观察者模式 观察者模式的原理 ...

  5. 实现微信公众号H5消息推送的超级详细步骤

    前言 前段时间在项目中做了一个给H5消息推送的功能,特此记录一下,感兴趣或者有需要的小伙伴可以查阅一下,因为其实代码并不难,我觉得对于初学者来说难的是一些概念和具体实现的过程,所以我会先使用微信提供的 ...

  6. 给女朋友做的每日消息推送微信公众号和邮箱推送

    前言: 最近看见好多做这个微信公众号推送的,其实不难很简单,自己也做了一个给女朋友,用了微信公众号推送和邮箱推送两个版本 网上大多是python版本,我用的是php分别写的微信和邮箱两个推送 项目地址 ...

  7. 该微信用户未开启“公众号安全助手”的消息接收功能,请先开启后再绑定,Java微信公众号开发消息推送公众号用户绑定问题 的解决办法

    问题概述 在进行微信公众号开发的时候遇到的这个问题,通过Web开发公众号的模板消息推送,在调试的过程中,需要进行开发者接口联调&调试,在调试之前需要将当前的公众号与用户的微信号进行绑定, 绑定 ...

  8. 微信公众号给女友推送消息,无需手写代码(超全)

    这次推出呆瓜版教程,几乎不需要编程基础就能操作并且对接api,只有挂在服务器上有一定门槛 作者:小曜 改编自:小红书@猪咪不是猪 一.呆瓜版究极教程 文件包下载方法: ​​​​​​​公众号消息推送.z ...

  9. 微信公众号实现无限制推送模板消息之免开发的玩法!

    不知道大家会不会因为服务号4次推送机会用完,又遇到老板施压,让发布重要消息,而苦恼? 经过我苦心搜索,找到了一个解决方法!原理就是,利用公众号模板消息,给粉丝推送. 作为运营同学,大多是不会技术的,所 ...

最新文章

  1. 剑指offer-面试题20.顺时针打印矩阵
  2. R包dplyr进行数据清洗和整理
  3. 键盘上每个键作用!!!
  4. python readline_python文件读read()、readline()、readlines()对比
  5. Fuchsia 对 Android 到底意味着什么?
  6. rtsp服务器搭建_如何从“零”开始搭建直播平台
  7. 世界对一名颓废者的惩罚——SDOI2019R1游记
  8. 实现对象的复用——享元模式
  9. usb PHY linux驱动
  10. MIP改造常见问题二十问
  11. fiddler chrome_fiddler抓包教程
  12. this 的4种绑定机制
  13. 表贴电阻尺寸与什么有关_什么是LED点光源屏?常见的LED点光源规格和型号
  14. DSP的CMD文件 RUN_START
  15. matlab微带带通滤波器,小型化宽阻带微带带通滤波器的设计方案
  16. HenCoder Android 开发进阶:自定义 View 1-4 Canvas 对绘制的辅助 clipXXX() 和 Matrix
  17. Linux网络服务--DHCP原理与配置 理论+实验(DHCP的分配方式,工作原理详解,配置文件修改和客户端的使用方式DHCP中继的配置命令)
  18. DirectX11(二)
  19. 【深度学习环境配置二】【Pytorch安装详解-内附下载链接】基于win 10+TITAN XP+CUDA11.1+python3.7+vs2019的pytorch安装
  20. 大数据第三季--Hive(day3)-徐培成-专题视频课程

热门文章

  1. rk3368-双以太网口
  2. 【调剂】2022年中国矿业大学(北京)接收调剂专业及要求
  3. Smart PLC与Wincc通过Simatic NET建立OPC通讯(1)
  4. Windows系统常用后缀名大全
  5. 股票期权基本特点是什么?详解股票期权两大特点?
  6. 客服工单系统的工单管理功能
  7. 企业微信+微信+简道云+API:创建贴心实用的学生请假系统(二)之技术方案
  8. 【小程序】实现页面跳转和数据传递方案
  9. DAC芯片CBM128S085
  10. 老魔杖(博弈 大数取模)