消息通知需求
在很多应用中,各种方式的消息通知是必不可少的功能之一,蜘蛛表格也不例外,涉及消息推送通知的地方很多,总结起来有以下几处:

向管理员用户发送其组织内的重要通知,比如人员被邀请注册、企业账户需要升级或续费等这些系统消息。
用户注册、重置密码时的通知。
当组织内的用户 A 向用户 B 共享了一份数据之后,需要通知用户 B。
用户可以主动订阅某条数据的评论信息,如果主动订阅,当这条数据有任何人评论了新的内容时,会通知到订阅的用户。
用户 A 可以在数据记录中以及针对数据的评论中@用户 B,此时用户 B 会收到通知消息。
用户 A 将某条数据记录的协作者指定为用户 B 时,可以通知用户 B 会收到协作的通知消息。
所在组织的各种用量(比如附件空间大小、剩余邮件封数)即将用尽或已经用尽时,需要通知组织管理员。
工作流通知。用户可以根据数据自由设定条件(比如数据记录发生变化、有人提交了新的数据、或是到达了某个事件点),当达到这个条件时执行其设定的操作,而“消息通知”是可以设定的操作之一。
蜘蛛表格中的数据字段都是用户自主定制的,工作流程触发条件和操作也是用户自主定制,非常灵活。蜘蛛表格在很早之前就已经实现了电子邮件通知以及应用内部的站内信通知,结合国内的互联网环境,很多用户希望能接入微信通知,于是就有了这篇记录实现过程的文章。

开始之前的准备
一个已认证的服务号
模板消息功能默认是没有开放的,需要自行在功能->添加功能插件处申请,只有已认证的服务号才能成功申请到模板消息的使用权限。
公网可以访问的服务器
模板消息功能需要公众号启用开发模式,在公众号后台的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token 和 EncodingAESKey,其中 URL 是开发者用来接收微信消息和事件的接口 URL。

足够的耐心,申请或在模板库中寻找适合你的消息模板。
开通了模板消息的功能之后,还需要添加消息模板才能使用,首先需要设置好行业,才能查看所选行业分类下的所有公共消息模板,这里要吐槽一下微信,1000 多页夹杂着已失效模板的列表只能一个一个点开去看,要找到合适的模板只能尝试用关键字去搜索。

在蜘蛛表格中实现微信消息通知是这样做到的

如果实在找不到合适的模板,就只能自己申请新的消息模板了,而申请模板又是一个考验耐心的事情:
在蜘蛛表格中实现微信消息通知是这样做到的

可以看到,蜘蛛表格工作流通知的模板消息,从第一次申请消息模板到最终审核通过,经历了三次修改,历时足有一个月之多。

服务端接口开发
一切准备材料就绪,接下来就是开发过程了。

蜘蛛表格的后端使用 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函数,就可以发送对应业务的模板消息了。

在开发过程中,可以申请一个微信测试号进行调试,调试完成后再上线到生产环境。注意测试号可以随意添加模板,而真正的生产环境账号的模板是在模板库中选择或申请的。

效果演示

在蜘蛛表格中实现微信消息通知是这样做到的
用户通过扫码绑定微信账号后,就可以收到蜘蛛表格的工作流通知了,用户点击后可以打开记录数据的详情,非常方便。当然,绑定微信账号的过程不在这篇文章的讨论范围,有机会我可以单独再写一篇文章。

在蜘蛛表格中实现微信消息通知是这样做到的相关推荐

  1. 解决微信“聊天界面中的新消息通知”设置按钮不见了问题

    原因 解决微信"聊天界面中的新消息通知"设置按钮不见了问题 解决方法 开启"接收新消息通知"后,"聊天界面中的新消息通知"设置按钮就会出现

  2. mulitpartfile怎么接收不到值_手机有时接收不到微信消息通知,怎么办?超全解决方案...

    不知道大家在使用微信的过程中有没有遇到以下情况,在自己看视频或者刷其他网页的时候,没有接收到微信的任何通知和提示的消息.等到你进入微信页面后,突然发现有很多未读信息.这种情况时有发生,很多人都反应说微 ...

  3. 4.Jenkins入门基础使用与邮箱钉钉微信消息通知集成配置与实践

    WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少. Tips : 本文章来源 Blog 站点或者 WeiyiGeek 公众账号 (技术交流.友链交换请邮我哟), 原文地址: 4.J ...

  4. [经验教程]手机上微信新消息不提示也不显示微信消息通知怎么办?

    微信来新消息手机上不提示也不显示新消息提醒通知,主要因为二个方便:一是微信设置新消息通知未启,另一个是手机微信应用未开通消息提醒通知.只要按下面的教程分别排查开启新消息通知即可恢复微信消息通知提醒正常 ...

  5. 【Golang】实现企业微信消息通知的方法(可在接口中调用)

    1.问题背景 1.在一次实际的项目中,需要在一个应用中发送消息提醒相关人员提交对应的表单.于是我查阅了企业微信开发文档有关消息提醒部分,然后按照其指导,实现了如下效果: 2.解决方案: 首先我们需要创 ...

  6. SQL语句中发送微信消息

    利用EasySQLMAIL的外部接口表功能来发送.可以支持Oracle.SQL Server.MySQL.PostgreSQL.Informix数据库.步骤如下: (1)在数据源的"外部接口 ...

  7. 微信如何取消企业微信消息通知 ?

    企业微信真的很烦,在企业微信里通知一遍,在个人微信里有再通信一遍,那么,有什么办法可能去掉微信里的通知吗?如下.

  8. Jenkins 企业微信消息通知

    和钉钉一样,也需要在群里面添加一个机器人 添加群机器人 企业微信 AgentId 1000006 wUs3TtGLYGnJ5YeezwxK60dEuXJeuF_01unh2TnaFRA  文本消息 { ...

  9. 企业微信实现消息通知功能

    一:获取消息通知所需参数:appid,secret,agentid 登录企业微信:https://work.weixin.qq.com/ 企业微信消息通知文档:https://work.weixin. ...

最新文章

  1. 为什么“15。。。”会导致微信ANR?
  2. mysql forget the password
  3. 【错误记录】Groovy工程中的文件查找策略 ( main 函数中需要使用 src/main/groovy/Script.groovy | Groovy 脚本直接使用代码相对路径 )
  4. java comparable Comparator 区别
  5. leetcode 622. Design Circular Queue | 641. 设计循环双端队列(Java)
  6. 编程填空:学生信息处理程序_项目学生:业务层
  7. java.io下载_java io 文件下载
  8. Qt Dialog捕捉鼠标移动事件
  9. office 2003 兼容包 (兼容 office 2007 office 2010)
  10. asp.net mysql 论坛源码_最新asp.net微信商城快速开发框架Magicodes.Shop微商城开发框架源码企业商业版源代码...
  11. python同切圆_Python绘制同切圆和同心圆
  12. 同步、异步ETL架构的比较
  13. RISC-V E300 SOC架构介绍——1.总体介绍
  14. JDK8的介绍下载和安装(附网盘地址)
  15. 数据结构大作业_聊聊我的数据结构与算法课
  16. Python:用【Win32】模块,结合Word通配符替换,将Word文档表格的部分内容替换为加粗
  17. arm linux alsa驱动使用 usb 声卡
  18. springboot中使用druid查询sqlite报错getFetchDirection error ResultSet closed
  19. cin、cout的使用
  20. 线性判别函数(Python实现批感知器算法、Ho Kashyap算法和MSE多类扩展方法)——模式识别编程作业

热门文章

  1. FANUC机器人控制柜死机或示教器空白故障诊断
  2. stata 模型设定专题【计量经济系列(六)】(遗漏变量、无关变量、多重共线性、leverage、虚拟变量、线性插值......)
  3. [SV]合并数组和非合并数组
  4. JointJS实现节点自动布局
  5. PMP项目管理培训——管理评估
  6. 【计算方法】插值法多项式的求法--利用Lagrange插值和Newton插值
  7. [附源码]计算机毕业设计Python+uniapp基于微信小程序某企业考勤系统01yr8(程序+lw+远程部署)
  8. CC2640R2F学习笔记(四.电源管理:用电源管理开发应用程序)
  9. 程序员小猪队友行为大赏
  10. [work] Softmax 函数的特点和作用