官方公众号助手的消息送达一直是个拉跨的功能,不知道是登录公众号多,还是软件bug,比如A和B两个公众号同时收到消息,当登录A公众号时,仅仅会显示A公众号消息的角标,不会有任何横幅之类的提醒,B的公众号消息不会有任何提醒,只有打开软件的时候才会显示一下几条私信。
这就不得不每天打开软件看一下,否则错过了七天有效期就回复不了,如果是三个公众号的话更是灾难,一直想通过他们官方api接口优化一下,现在得空搞定了,出奇的顺利。
邮件和钉钉通知
通知可以参考基于Vapor搭建GitHub的钉钉通知,通过创建钉钉机器人,来创建一个钉钉的通知即可。邮件通知的服务器开源库更是一抓一大把,基本只需要发送端账号和密码,接收端的账号和内容即可,所以这里不需要再贴代码。
实现思路
1、开启公众号服务器配置
在公众号的基本配置里面,有一个服务器配置,介绍的很清楚,就是收到消息会自动转发,所以就是开发一个接收消息并转发通知的功能即可
2、接收消息通知
公众号收到用户操作之后,会将内容转发到公众号服务器配置的url,可以参考下面三个官方文档直接开发服务器端代码:
其中接收普通消息就是接受用户的发送的消息,比如文本、图片、语音等,简单点如果不需要解析,接收到消息直接通知一条默认的提醒到邮件或者钉钉即可。如果需要高级点,就解析request.body
里面的xml
字符串,通过MsgType
确定消息类型,通过Content
读取内容。然后返回success
字符串给微信,代表已经处理该信息
接收时间推送是系统事件,比如用户订阅、用户取消订阅、点击菜单等系统操作,所以这个可以参照接受普通消息的方式进行操作。
3、进阶功能
1、被动回复用户消息
文档地址:被动回复用户消息
这个功能的含义是接受到用户消息之后,可以通过该接口进行自动回复消息,就像上面接收普通消息提到的,直接返回success
字符串给微信,代表已经处理该信息,你也可以返回对应格式的消息,同样代表处理了用户发送的消息,比如解析用户发送的content
内容里面包含有客服
、人工帮助
等字眼,就可以返回自定义的消息内容。当然如果仅仅是接受消息通知,这个功能可以忽略
2、自定义菜单
文档地址:自定义菜单
自定义菜单可以在微信公众号后台创建,但是如果你开启了公众号服务器配置,那么后台创建的自定义菜单会失效,这样只能通过API创建接口去创建自定义菜单。然而这个API创建的接口只有已认证公众号和服务号才支持,如果是默认未认证的公众号,这个接口是无权限调用的,会报错。这个是鱼和熊掌不可兼得,期望以后微信会开放
而如果你有权限去通过API创建菜单的话,可以不用写代码,直接通过他的工具获得自己公众号的ACCESS_TOKEN
,然后通过postman
之类的工具,直接按照文档里的格式拼接好json数据,发送请求到https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN
即可,反正菜单不会经常变更。
完工效果
这样开发完之后,可以在每个公众号都创建同样的接口,在接受的消息里面通过解析ToUserName
可以获得接受方的微信,也可以通过不同的接口去配置给不同的公众号作区分。现在每条消息都可以收到钉钉通知啦,不会错过消息咯。
预览视频
版权属于:东哥笔记 - DongGe.org
本文链接:https://dongge.org/blog/1218.html
自2017年12月26日起,『转载以及大段采集进行后续编辑』须注明本文标题和链接!否则禁止所有转载和采集行为!