【对接方案】推送微信公众号模板消息
本帖最后由 Gerald.Zhang 于 2023-6-29 18:53 编辑我们经常会收到很多微信公众号的消息,比如银行信息变动、快递到货、任务提醒等,如果我们希望在自己的活字格应用中,也能给自己的工单模块、审批模块、任务模块增加类似的推送,该怎么做呢?
前置工作
当我们想要推送微信模板消息,需要提前做一些准备工作,才能进行相关的技术开发。
首先我们需要在微信公众平台进行公众号注册属于我们应用自己的公众号,注册成功后,微信会为咱们提供一个管理后台,在这个管理后台的订阅消息模块中可以进行消息模板的注册。这个消息模板,负责承载我们最终发送消息的信息。
需要注意(该内容为微信官方开发文档的注意事项):
[*]所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
[*]需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
[*]在所选择行业的模板库中选用已有的模板进行调用;
[*]每个账号可以同时使用25个模板。
[*]当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。
活字格对接
一、配置全局变量
活字格提供了全局变量,方便管理第三方对接时需要的各种信息参数。在对接微信开发平台时,我们需要维护如下变量参数:
[*]wxTokenApi = https://api.weixin.qq.com/cgi-bin/token
access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。微信开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
文档链接:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html
[*]wxTemplateMsgSendApi = https://api.weixin.qq.com/cgi-bin/message/template/send
用于推送微信模板消息的api
文档链接:https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html
[*]wxAppId
微信公众平台注册的公众号id
[*]wxSecret
微信公众平台注册的公众号秘钥
[*]wxTemplateId
微信模板id,该id需要在开放平台后台去获取。
使用全局变量的好处在于,只需要在一处维护,可以全局调用,当发布在服务器上之后,如果对应的变量有变化,可以直接在服务器的全局变量里进行配置,即时生效,不需要重新修改应用后发布。基于这样的特性,就可以在测试环境、生产环境的管理控制台上分别配置,实现不同环境使用的微信公众号相互隔离的效果,以策安全。全局变量的配置如图所示:
二、服务端命令开发
第二部分的功能主要使用活字格的【发送HTTP请求】服务端命令,在推送模板消息时,需要分两步操作,分别为
[*]获取接口的accessToken :getWxAccessToken
[*]推送模板消息(携带第一步获取到的token):sendWxTempMsg
具体的设置方式,可参考附件工程。
附件使用方式:全局变量配置为自己对应的参数,sendWxTempMsg中http请求命令,修改对应的data字段为自己申请模板的参数即可。
其他说明
在使用微信模块消息时,有几个点还是需要留意一下滴~
[*]wxAppId和wxSecret从哪里来?
在微信公众平台(不是开放平台)的后台中,“设置与开发”菜单下找到“基本配置”,其中的开发者ID就是AppID,开发者密码是AppSecret。
[*]微信模板id那里来?
首先你需要再微信公众平台的后台中申请开通“模板消息”,点击“新的功能”菜单,选择申请即可。开通后,你需要申请一个模板,为了确保能够顺利通过,我们建议你从模板库中选择平台上已经存在的模板。添加到“我的模板”后,就可以在列表上看到模板ID了。在接口中推送的微信模板id是一串较长的无规则字符,例如Doclyl5uP7Aciu-qZ7mJNPtWkbkYnWBWVja26EGbNyk,后台中看到的有规则的短id是无法在推送接口中使用的。
[*]微信消息模板需要注意些什么?
微信模板在申请时,需要选择行业类目,微信消息的规则是消息模板是依赖于行业类目的,所以其格式会被行业类目限定。所以有些内容无法自定义,需要额外关注不同模板下对应的关键字是什么,这些关键字对应的就是sendWxTempMsg的接口请求体中data字段内部的数据结构上。不同的模板,data内部的keyword是不同的,不同的关键字对应的值,最终会展现在关键字所在的那行内容上。
[*]模板中的关键字有哪些,怎么设置?
通常,模板消息中包含的关键字包含有两个固定项目,和若干个非固定项目。固定的是first和remark,其他的根据模板本身的定义而不同,比如demo中的“登录通知”有time、ip和reason三个关键字。如果你需要指定first和所有三个自定义关键字,则需要在data参数中配置4个属性,分别是first、time、ip和reason,每个属性都是一个对象,下面包含有文字value和颜色color两个固定的属性,如果不需要指定颜色,也可以不传color属性。
[*]用户的openid从哪里来?
通常情况下,需要用到模板消息的应用需要采用第三方认证(微信公众平台),所以,请先跟着 帮助文档 完成公众平台的接入。接入之后,当用户在微信H5中打开需要登录的页面,授权后,活字格会自动创建用户,而这个用户的用户名(UserName)默认就是OpenID。所以,你可以通过查询需要接受推送的用户的UserName,直接获取OpenID用于模板消息推送。
页:
[1]