消息通知需求
完成协做工做。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函数,就能够发送对应业务的模板消息了。
在开发过程当中,能够申请一个微信测试号进行调试,调试完成后再上线到生产环境。注意测试号能够随意添加模板,而真正的生产环境帐号的模板是在模板库中选择或申请的。
效果演示
用户经过扫码绑定微信帐号后,就能够收到蜘蛛表格的工做流通知了,用户点击后能够打开记录数据的详情,很是方便。固然,绑定微信帐号的过程不在这篇文章的讨论范围,有机会我能够单独再写一篇文章。