不注册微服务号如何使用Java实现每日给女友微信发送早安等信息?
前言
據(jù)說(shuō)這個(gè)功能最近在抖音上很火,我沒(méi)有抖音,沒(méi)有看到。 但是我在掘金和CSDN上看了,相關(guān)案例確實(shí)很多,但是大家都是借助于了微信服務(wù)號(hào),在我看來(lái),效果很不佳。
其實(shí)我原來(lái)的初衷是這樣的,每天定時(shí)給群里推送新聞,這個(gè)原因在之前的文章中也提到過(guò),這邊就不在細(xì)說(shuō)了,然后實(shí)現(xiàn)了給群中推送之后,就想著,能不能每天給指定人發(fā)送消息,網(wǎng)上搜了搜,果然有,各種實(shí)現(xiàn)方式五花八門,但是都沒(méi)看上,于是就自己找了個(gè),自己寫。
網(wǎng)上案例
網(wǎng)上最多的可能就是利用微信服務(wù)號(hào)給推送信息,如圖所示:
?
??缺點(diǎn)如下:
-
需要點(diǎn)進(jìn)去訂閱號(hào)才能看到,沒(méi)有起到吸引的作用
-
申請(qǐng)的測(cè)試服務(wù)號(hào),也不知道多久過(guò)期,說(shuō)停就給你停掉了
-
定制化的需求有的達(dá)不到
鑒于此,我就自己找了一個(gè)路子去做,昨晚剛寫完,測(cè)了測(cè),效果還是比較不錯(cuò)的。如下圖所示:
?(有點(diǎn)肉麻~)
實(shí)現(xiàn)方式
下面我們來(lái)看看是如何實(shí)現(xiàn)的。
準(zhǔn)備工作
注冊(cè)智能微秘書(shū)賬號(hào),花20塊錢開(kāi)個(gè)會(huì)員(20塊錢一點(diǎn)都不多)
注冊(cè)天行數(shù)據(jù)的賬號(hào),申請(qǐng)三個(gè)接口(早安寄語(yǔ)、每日新聞、土味情話),也可以自己加入別的有意義的內(nèi)容,直接申請(qǐng)接口就行。
準(zhǔn)備一個(gè)微信號(hào),可以用你現(xiàn)在自己的,也可以再申請(qǐng)一個(gè)。
準(zhǔn)備一個(gè)服務(wù)器
準(zhǔn)備一個(gè)java項(xiàng)目,放服務(wù)器上跑就可以
假使你的準(zhǔn)備工作除4、5之外,都已經(jīng)做完了,下面我們來(lái)看看如何從代碼層面來(lái)實(shí)現(xiàn)。
實(shí)現(xiàn)原理
-
調(diào)用天行數(shù)據(jù)的api,獲取自己想要的數(shù)據(jù),封裝起來(lái)
-
調(diào)用智能微秘書(shū)的接口,實(shí)現(xiàn)給微信好友發(fā)送消息
-
給控制器controller類中添加定時(shí)任務(wù),實(shí)現(xiàn)定時(shí)發(fā)送
關(guān)鍵代碼如下所示:
調(diào)用天行數(shù)據(jù)接口,獲取早安寄語(yǔ):
調(diào)用天行數(shù)據(jù)接口,獲取土味情話:
調(diào)用天行數(shù)據(jù)接口,獲取天氣預(yù)報(bào):
日期處理關(guān)鍵代碼
獲取今天是周幾
獲取紀(jì)念日的天數(shù)(兩個(gè)日期之間的差):
實(shí)現(xiàn)給指定微信好友推送消息
/*** 每天將指定信息推送到微信個(gè)人*/@Overridepublic void sendWechatToUser() {String url = WEI_MI_SHU_API + "/openapi/v1/chat/contact";WeiZhiMiShuVO weiZhiMiShuVO = new WeiZhiMiShuVO();//發(fā)送文字信息weiZhiMiShuVO.setType(1);try {//拿到發(fā)送的消息列表SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");SimpleDateFormat format_h = new SimpleDateFormat("yyyy-MM-dd");//今天的日期String toDate = format_h.format(new Date());//相戀的日期String lian = "2022-03-28";//兩個(gè)日期相差的天數(shù)int cha = DateUtils.getDayByTwoDay(toDate, lian);String todayDate = format.format(new Date());//根據(jù)陽(yáng)歷計(jì)算農(nóng)歷Calendar today = Calendar.getInstance();String week = DateUtils.getDaysByWeekChina(toDate);today.setTime(DateUtils.chineseDateFormat.parse(todayDate));DateUtils lunar = new DateUtils(today);String nongli = lunar.toString();nongli = nongli.substring(nongli.indexOf("年") + 1);StringBuilder sb = new StringBuilder();sb.append("親愛(ài)的老婆~早\n\n").append("充滿希望的一天又開(kāi)始了,今天也要一直開(kāi)心,不能生我氣氣~").append("\n\n今天是:").append(todayDate).append(",星期").append(week).append(",農(nóng)歷").append(nongli).append("\n").append("是我們相愛(ài)的第:").append(cha).append("天").append("\n\n");JSONObject tianqiObject = TianXingApiUtil.getWeather();sb.append("目前濟(jì)南天氣:").append(tianqiObject.getString("weather")).append("\n").append("當(dāng)前氣溫:").append(tianqiObject.getString("real")).append("\n").append("今天最高溫度:").append(tianqiObject.getString("highest")).append("\n").append("最低溫度:").append(tianqiObject.getString("lowest")).append("\n").append("風(fēng)向:").append(tianqiObject.getString("wind")).append("\n").append("空氣質(zhì)量:").append(tianqiObject.getString("quality")).append("\n").append("空氣質(zhì)量指數(shù):").append(tianqiObject.getString("aqi")).append("\n").append("小提示:").append(tianqiObject.getString("tips"));//土味情話sb.append("\n\n").append("愛(ài)你一日言:").append(TianXingApiUtil.getLoveWords()).append("\n\n【早安寄語(yǔ)】").append(goodMorning());weiZhiMiShuVO.setContent(sb.toString());for (String str : SEND_USER) {JSONObject object = new JSONObject();object.put("apiKey", WEI_MI_SHU_KEY);//好友昵稱object.put("name", str);//好友備注object.put("alias", str);object.put("message", weiZhiMiShuVO);String body = HttpUtil.createPost(url).body(JSON.toJSONString(object)).execute().body();System.out.println("傳遞的參數(shù)是:" + JSON.toJSONString(object));System.out.println("發(fā)送成功了嗎?" + body);}} catch (ParseException e) {e.printStackTrace();}}說(shuō)明:
WeiZhiMiShuVO 類可以參考文章:java實(shí)現(xiàn)給微信群中定時(shí)推送消息
代碼中涉及到的常量,都放在了常量類中,SEND_USER是要發(fā)給微信好友的好友昵稱,不是備注哈。
智能微秘書(shū)接口地址:接口地址
然后我們?cè)诳刂破鱟ontroller中調(diào)用該方法即可實(shí)現(xiàn):
/*** 發(fā)送消息給指定的人*/@GetMapping(value = "/sendWechatToUser")@Scheduled(cron ="0 0 8 * * ?")public void sendWechatToUser(){articleService.sendWechatToUser();}cron ="0 0 8 * * ?是一個(gè)corn表達(dá)式,表示每天早上8點(diǎn)給指定的微信好友推送消息。
總結(jié)
以上是生活随笔為你收集整理的不注册微服务号如何使用Java实现每日给女友微信发送早安等信息?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Kafka实战 - 06 Kafka消费
- 下一篇: select Java Aplicati