1、请看VCR
这是真实效果图,因为地址过于详细这里保护一下个人隐私
ok,接下来直接上教程
2、相关API接口申请
2.1、 微信
2.1.1、微信公众平台申请测试账号
首先打开微信公众平台申请测试账号。 网页链接:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
要用微信登录,需要按一下那个登录按钮。然后扫描一下屏幕上的二维码,就可以进入了。需要记住页面上的几个数据,接下来这些数据会被添加到项目的常量类中。
用具体id替代xxx。
2.1.2、让你想发送模板信息的人关注你的公众号
用微信扫描左侧二维码关注。
咱们在项目里头要把关注者分开归类,通常可以分成两种类型:一类是Special,一类是Other。比如说,你和你对象是Special,那么你就可以指定个模板,只发送给Special。其他的朋友们,你可能希望他们都能关注你,但你又不想把和对象私用的模板上的内容每天都发给他们,那么你可以不把他们加入Special列表就行了。只要不是Special都按Other算。
在配置之后,你就能根据需要自定义模板并发送给不同的人群。
- 第一种是发送给Special(比如发送带有纪念日内容的模板给你和你的对象)
- 第二种是发送给Other(Other就是除了Special以外的其他关注者,比如发送带有天气预报的模板给其他人)
- 第三种是发送给所有人
那么怎么配置呢?很简单,在项目的配置文件application.yml中找到specialOpenIdList,在下面添加就行关注人的id就行,添加的id会被视为Special
只需简单操作,把特别关注Special模板的订阅者们(就像你和你的伙伴)的OpenID设定在这里,就万事大吉啦!
2.2、百度
打开百度地图开放平台,点击右上角登录百度账号(没有自己注册)
网页链接:https://lbsyun.baidu.com/index.php?title=首页
登录以后点击右上方控制台
我们需要创建一个应用
输入应用名称然后翻到下面白名单校验填写: 0.0.0.0/0
点击提交后自动转跳回控制台页面
这里就会显示刚创建好的应用了,把鼠标移动到访问应用(AK)下面的英文的地方,会弹出来复制图标,复制这个AK,替换掉项目配置类WxConstants中BAI_DU_AK的值。
2.3、天行API
打开天行API官网,注册登录后每天会赠送免费的请求次数。
打开后点击搜索框输入:每日英语
然后点击进行申请。 申请完成后,我们点击右上角的控制台进入
点击 ”数据管理“ 然后点击 ”我的密钥key“ ,复制apiKey替换掉项目配置类WxConstants中TX_AK的值。
至此当前项目所需要的调用相关的KEY申请完成。
3、模板配置
上面说过,模板可以向三种人发送,然后给Special和Other发模板。 这里讲解分别给Special和Other分别发送模板。 首先,项目里有一个WxTemplateType的枚举类
四个参数的含义分别如上面所示,枚举类中已经定义好了两个模板,第一个是给Special的关注者发送的模板,第二个是Other关注者发送的模板(除了定义好的Special以外的订阅者都叫Other) 其中第一个参数templateId使用了一个常量类WxTemplateConstants去维护
这里面的xxx就是等会需要我们在微信测试公众平台上创建的模板对应的模板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_en1.DATA}}{{daily_english_en2.DATA}}
译文:{{daily_english_cn1.DATA}}{{daily_english_cn2.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_en1.DATA}}{{daily_english_en2.DATA}}
译文:{{daily_english_cn1.DATA}}{{daily_english_cn2.DATA}}
模板也可以自己DIY写点骚话,具体参照微信的官方文档。
创建好后,我们复制粘贴模板id替换掉WxTemplateConstants里的模板ID即可。 上述模板中给Special发送的时候有一个纪念日的日期,定义在WxConstants中,可以根据实际情况进行修改。不知道写什么时候就写看到我文章的日期吧,毕竟这是我们相遇的日子。
4、配置与部署
4.1、没用云服务器的朋友看这里
项目使用的是sqlite数据库对信息进行保存,只需要在application.yml中配置好地址即可。 根据自己项目中wx.db的实际位置情况,复制粘贴全路径来覆盖下方红框位置即可。
没有服务器的,可以使用内网穿透工具,将本机服务启动端口映射到一个公网域名上。这里推荐一种内网穿透工具Cpolar,点击链接下载对应版本并安装即可。(推荐还是云服务器,自己提升学习也是一个利器,面试的时候说:我自己有自己的服务器,维护了一个项目多牛)
打开后登录,点击隧道管理然后点击创建隧道
创建完成可以选一个ip复制
粘贴到这个接口配置信息中,同时这个Token需要和项目里WxConstants类中的TOKEN对应,修改完点击提交。
然后会在上方弹出一个配置成功的绿色的框。
接下来,在微信公众平台页面向下拉,找到获取用户地理位置的API,然后需要打开。这个意思是申请访问订阅者的地理位置,以便于实时根据订阅者地理位置推送天气。
这里需要让订阅者打开位置信息服务,微信打开关注好的接口测试号,进入设置,打开 在聊天中使用地理位置 按钮。
注意:这里第一次设置完成后,退出关注的公众号的聊天对话框界面,然后再次进入,来记录当前的位置。(只有第一次打开位置信息需要这样,以后每次收到信息之后,会自动更新一次实时位置)
到这里只要本地起项目就行了,我留有测试接口TestController类自己看一眼就明白了。
4.2、有服务器的朋友看这里
把配置文件改成这样
#sqlite
spring:
datasource:
driver-class-name: org.sqlite.JDBC
url: jdbc:sqlite::resource:db/wx.db
username: ""
password: ""
我这里使用的是MobaXtrem,创建一个文件夹然后把这些文件都丢上去
前三个都是resources下的文件,log.txt是启动后会生成的文件,wxGZH.jar是项目打的包。
然后使用输入一下命令并喊出: 代码!启动!
nohup java -jar wxGZH.jar >log.txt 2>&1 &
接下来就参考4.1了,把服务区地址换上以及剩下操作
标签:now,微信,Other,模板,定时,推送,DATA,Special From: https://blog.51cto.com/u_16013021/7389030