消息通知需求
完成協(xié)作工作。
在很多應(yīng)用中,各種方式的消息通知是必不可少的功能之一,蜘蛛表格也不例外,涉及消息推送通知的地方很多,總結(jié)起來有以下幾處:
向管理員用戶發(fā)送其組織內(nèi)的重要通知,比如人員被邀請注冊、企業(yè)賬戶需要升級或續(xù)費等這些系統(tǒng)消息。
用戶注冊、重置密碼時的通知。
當(dāng)組織內(nèi)的用戶 A 向用戶 B 共享了一份數(shù)據(jù)之后,需要通知用戶 B。
用戶可以主動訂閱某條數(shù)據(jù)的評論信息,如果主動訂閱,當(dāng)這條數(shù)據(jù)有任何人評論了新的內(nèi)容時,會通知到訂閱的用戶。
用戶 A 可以在數(shù)據(jù)記錄中以及針對數(shù)據(jù)的評論中@用戶 B,此時用戶 B 會收到通知消息。
用戶 A 將某條數(shù)據(jù)記錄的協(xié)作者指定為用戶 B 時,可以通知用戶 B 會收到協(xié)作的通知消息。
所在組織的各種用量(比如附件空間大小、剩余郵件封數(shù))即將用盡或已經(jīng)用盡時,需要通知組織管理員。
工作流通知。用戶可以根據(jù)數(shù)據(jù)自由設(shè)定條件(比如數(shù)據(jù)記錄發(fā)生變化、有人提交了新的數(shù)據(jù)、或是到達了某個事件點),當(dāng)達到這個條件時執(zhí)行其設(shè)定的操作,而“消息通知”是可以設(shè)定的操作之一。
蜘蛛表格中的數(shù)據(jù)字段都是用戶自主定制的,工作流程觸發(fā)條件和操作也是用戶自主定制,非常靈活。蜘蛛表格在很早之前就已經(jīng)實現(xiàn)了電子郵件通知以及應(yīng)用內(nèi)部的站內(nèi)信通知,結(jié)合國內(nèi)的互聯(lián)網(wǎng)環(huán)境,很多用戶希望能接入微信通知,于是就有了這篇記錄實現(xiàn)過程的文章。
開始之前的準備
一個已認證的服務(wù)號
模板消息功能默認是沒有開放的,需要自行在功能->添加功能插件處申請,只有已認證的服務(wù)號才能成功申請到模板消息的使用權(quán)限。
公網(wǎng)可以訪問的服務(wù)器
模板消息功能需要公眾號啟用開發(fā)模式,在公眾號后臺的開發(fā)-基本設(shè)置頁面,勾選協(xié)議成為開發(fā)者,點擊“修改配置”按鈕,填寫服務(wù)器地址(URL)、Token 和 EncodingAESKey,其中 URL 是開發(fā)者用來接收微信消息和事件的接口 URL。
足夠的耐心,申請或在模板庫中尋找適合你的消息模板。
開通了模板消息的功能之后,還需要添加消息模板才能使用,首先需要設(shè)置好行業(yè),才能查看所選行業(yè)分類下的所有公共消息模板,這里要吐槽一下微信,1000 多頁夾雜著已失效模板的列表只能一個一個點開去看,要找到合適的模板只能嘗試用關(guān)鍵字去搜索。
如果實在找不到合適的模板,就只能自己申請新的消息模板了,而申請模板又是一個考驗?zāi)托牡氖虑椋?br/>
可以看到,蜘蛛表格工作流通知的模板消息,從第一次申請消息模板到最終審核通過,經(jīng)歷了三次修改,歷時足有一個月之多。
服務(wù)端接口開發(fā)
一切準備材料就緒,接下來就是開發(fā)過程了。
蜘蛛表格的后端使用 golang 語言開發(fā),這里使用了第三方的 WeChat SDK for Go( 項目地址)。
首先需要配置微信公共賬號的 AppID,AppSecret,Token 以及EncodingAESKey信息:
//配置微信參數(shù)
config := &wechat.Config{
AppID: “xxxx”,
AppSecret: “xxxx”,
Token: “xxxx”,
EncodingAESKey: “xxxx”,
Cache: cache.NewMemory(),
}
wc := wechat.NewWechat(config)
這里SDK已經(jīng)幫我們封裝處理了微信的簽名認證機制。所以我們發(fā)送模板消息可以直接調(diào)用SDK中template包的方法來構(gòu)建消息實例并發(fā)送出去:
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是消息模板對應(yīng)的變量參數(shù),類似這樣:
map[string]*(template.DataItem) {
“first”: {Value: “你好,李惠中,有一條你訂閱的工作流已被執(zhí)行?!眪,
“keyword1”: {Value: “【面試評價】工作表中有一條記錄等待更新”},
“keyword2”: {Value: “薛明超”},
“keyword3”: {Value: “2019年11月21日 14:36”},
“remark”: {Value: “點擊進入「蜘蛛表格」平臺,進一步查看信息”},
},
}
如果需要跳轉(zhuǎn)小程序,還可以傳入”miniprogram”參數(shù),具體用法可以參考官方文檔。
在相應(yīng)的業(yè)務(wù)代碼中,調(diào)用sendWechatMessage函數(shù),就可以發(fā)送對應(yīng)業(yè)務(wù)的模板消息了。
在開發(fā)過程中,可以申請一個微信測試號進行調(diào)試,調(diào)試完成后再上線到生產(chǎn)環(huán)境。注意測試號可以隨意添加模板,而真正的生產(chǎn)環(huán)境賬號的模板是在模板庫中選擇或申請的。
效果演示
用戶通過掃碼綁定微信賬號后,就可以收到蜘蛛表格的工作流通知了,用戶點擊后可以打開記錄數(shù)據(jù)的詳情,非常方便。當(dāng)然,綁定微信賬號的過程不在這篇文章的討論范圍,有機會我可以單獨再寫一篇文章。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。