經過了幾天的奮戰,終於把微信服務號的模板訊息給寫完了。後端其實沒花多少時間,因為之前已經有同學提過pull request
了,我在這基礎之上簡單最佳化下就完事了,主要的時間都是花在前端上,對前端頁面和引數的適配比較麻煩。
訊息推送平臺?推送下發【郵件】【簡訊】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。
不多說了,先來看看效果圖吧。
要實現微信服務號的模板訊息推送,首先我們得有一個服務號。要值得注意的是,服務號是服務號,訂閱號是訂閱號。服務號會有單獨的聊天框,所以Java3y實際上是一個訂閱號。
服務號申請要有企業的資料,而我,是沒有的。那我這次是怎麼除錯的呢?後來經朋友圈提醒,微信是能讓我們申請測試號的,相關的API都是能用的,得知了以後,那我不就屁顛屁顛花了幾天實現了嘛。
申請測試號連結:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
進入到測試號以後,我們能把自己加入到測試的微訊號內,拿到對應的openId
建立幾個測試下發的模板;
0reG3uUoUSonh0jGi-8ufj3VheCFlaoXqxBxD-zvswE
待處理作業提醒
{{first.DATA}} 作業型別:{{keyword1.DATA}} 作業名稱:{{keyword2.DATA}} 所屬專案:{{keyword3.DATA}} 提交日期:{{keyword4.DATA}} {{remark.DATA}}
我們還能直接拿到appID
和appsecret
,這就相當於當前服務號賬號的資訊。那我要做的就是把這個資訊加入到訊息推送平臺的賬號體系下。
在新建模板傳送訊息的時候,我們就可以選擇到這個被加入到賬號體系的賬戶,拿到這個賬戶下的模板列表,再得到具體模板的詳情資訊啦,這會有個聯動的效果。
我這就一個完整的訊息模板,來讓大家看看,順便講講相關的功能吧。
儲存之後就會跳轉到模板的列表頁,就能看到剛才所建的模板啦。
這時候,我們點選測試按鈕,就能看到下發的效果:
至於功能實現,我就不在這多說啦。因為訊息推送平臺的架構已經搭好了,接入訊息這個過程沒多少工作量,主要是適配整個架構程式碼的實現就好了。至於做了什麼改動,你們看commit就好啦。
幾個關鍵程式碼入口:
- 前端互動:com.java3y.austin.web.controller.OfficialAccountController
- 傳送訊息入口:com.java3y.austin.service.api.impl.service.SendServiceImpl#send
- 真正處理微信服務號模板訊息傳送入口:com.java3y.austin.handler.handler.impl.OfficialAccountHandler#handler
如果想學Java專案的,我還是強烈推薦我的開源專案訊息推送平臺Austin(8K stars) ,可以用作畢業設計,可以用作校招,可以看看生產環境是怎麼推送訊息的。開源專案訊息推送平臺austin倉庫地址:
訊息推送平臺?推送下發【郵件】【簡訊】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。