消息通知需求
完成協做工做。golang
在不少應用中,各類方式的消息通知是必不可少的功能之一,蜘蛛表格也不例外,涉及消息推送通知的地方不少,總結起來有如下幾處:面試
向管理員用戶發送其組織內的重要通知,好比人員被邀請註冊、企業帳戶須要升級或續費等這些系統消息。
用戶註冊、重置密碼時的通知。
當組織內的用戶 A 向用戶 B 共享了一份數據以後,須要通知用戶 B。
用戶能夠主動訂閱某條數據的評論信息,若是主動訂閱,當這條數據有任何人評論了新的內容時,會通知到訂閱的用戶。
用戶 A 能夠在數據記錄中以及針對數據的評論中@用戶 B,此時用戶 B 會收到通知消息。
用戶 A 將某條數據記錄的協做者指定爲用戶 B 時,能夠通知用戶 B 會收到協做的通知消息。
所在組織的各類用量(好比附件空間大小、剩餘郵件封數)即將用盡或已經用盡時,須要通知組織管理員。
工做流通知。用戶能夠根據數據自由設定條件(好比數據記錄發生變化、有人提交了新的數據、或是到達了某個事件點),當達到這個條件時執行其設定的操做,而「消息通知」是能夠設定的操做之一。
蜘蛛表格中的數據字段都是用戶自主定製的,工做流程觸發條件和操做也是用戶自主定製,很是靈活。蜘蛛表格在很早以前就已經實現了電子郵件通知以及應用內部的站內信通知,結合國內的互聯網環境,不少用戶但願能接入微信通知,因而就有了這篇記錄實現過程的文章。小程序
開始以前的準備
一個已認證的服務號
模板消息功能默認是沒有開放的,須要自行在功能->添加功能插件處申請,只有已認證的服務號才能成功申請到模板消息的使用權限。後端
公網能夠訪問的服務器
模板消息功能須要公衆號啓用開發模式,在公衆號後臺的開發-基本設置頁面,勾選協議成爲開發者,點擊「修改配置」按鈕,填寫服務器地址(URL)、Token 和 EncodingAESKey,其中 URL 是開發者用來接收微信消息和事件的接口 URL。服務器
足夠的耐心,申請或在模板庫中尋找適合你的消息模板。
開通了模板消息的功能以後,還須要添加消息模板才能使用,首先須要設置好行業,才能查看所選行業分類下的全部公共消息模板,這裏要吐槽一下微信,1000 多頁夾雜着已失效模板的列表只能一個一個點開去看,要找到合適的模板只能嘗試用關鍵字去搜索。微信
若是實在找不到合適的模板,就只能本身申請新的消息模板了,而申請模板又是一個考驗耐心的事情:併發
能夠看到,蜘蛛表格工做流通知的模板消息,從第一次申請消息模板到最終審覈經過,經歷了三次修改,歷時足有一個月之多。ide
服務端接口開發
一切準備材料就緒,接下來就是開發過程了。函數
蜘蛛表格的後端使用 golang 語言開發,這裏使用了第三方的 WeChat SDK for Go( 項目地址)。測試
首先須要配置微信公共帳號的 AppID,AppSecret,Token 以及EncodingAESKey信息:
//配置微信參數
config := &wechat.Config{
AppID: 「xxxx」,
AppSecret: 「xxxx」,
Token: 「xxxx」,
EncodingAESKey: 「xxxx」,
Cache: cache.NewMemory(),
}
wc := wechat.NewWechat(config)
這裏SDK已經幫咱們封裝處理了微信的簽名認證機制。因此咱們發送模板消息能夠直接調用SDK中template包的方法來構建消息實例併發送出去:
func sendWechatMessage(userOpenID, tplID, tplArgs, link) {
wechatMessage := &template.Message{
ToUser: userOpenID, // 接收這條模板消息的用戶OpenID TemplateID: tplID, // 這裏填寫消息模板的ID URL: link, Data: tplArgs,
}
tplInstance := template.NewTemplate(wechat.Wechat.Context)
msgID, err := tplInstance.Send(wechatMessage)
if err != nil {
glog.Errorf(「error with template msgid: %v, %v」, msgID, err)
}
}
其中,tplArgs是消息模板對應的變量參數,相似這樣:
map[string]*(template.DataItem) {
「first」: {Value: 「你好,李惠中,有一條你訂閱的工做流已被執行。」}, 「keyword1」: {Value: 「【面試評價】工做表中有一條記錄等待更新」}, 「keyword2」: {Value: 「薛明超」}, 「keyword3」: {Value: 「2019年11月21日 14:36」}, 「remark」: {Value: 「點擊進入「蜘蛛表格」平臺,進一步查看信息」}, },
}
若是須要跳轉小程序,還能夠傳入」miniprogram」參數,具體用法能夠參考官方文檔。
在相應的業務代碼中,調用sendWechatMessage函數,就能夠發送對應業務的模板消息了。
在開發過程當中,能夠申請一個微信測試號進行調試,調試完成後再上線到生產環境。注意測試號能夠隨意添加模板,而真正的生產環境帳號的模板是在模板庫中選擇或申請的。
效果演示
用戶經過掃碼綁定微信帳號後,就能夠收到蜘蛛表格的工做流通知了,用戶點擊後能夠打開記錄數據的詳情,很是方便。固然,綁定微信帳號的過程不在這篇文章的討論範圍,有機會我能夠單獨再寫一篇文章。