怎么自己制作网站免费,网站建设有关书籍,深圳设计师工资一般多少,手机网站做多宽前言
消息提醒功能是提升用户满意度的最有效方式,基于微信聊天的消息提醒也是现在最常见的消息提醒方式之一,常见的业务场景:从医院里面进行挂号预约,预约成功或是快到预约时间会从微信聊天列表中显示对应的提醒;这种提醒的方式实际上是借助于微信公众号进行实现,当然只是针对…前言
消息提醒功能是提升用户满意度的最有效方式,基于微信聊天的消息提醒也是现在最常见的消息提醒方式之一,常见的业务场景:从医院里面进行挂号预约,预约成功或是快到预约时间会从微信聊天列表中显示对应的提醒;这种提醒的方式实际上是借助于微信公众号进行实现,当然只是针对于关注公众号的用户进行消息推送.本文主要介绍如何从头开始实现公众号消息推送.
1.创建服务号类型的公众号并进行认证
首先要创建公众号,注意创建的类型一定是服务号,模板消息发送功能只支持服务号,订阅号只能进行消息订阅功能;这里面有坑,不仔细的同学会发现没有申请模板消息的入口,根本原因就是所使用的公众号是订阅号而不是服务号;查看公众号是服务号还是订阅号的方式可以参考下图(公账号登录之后右上角账号信息中),如果是订阅号,模板消息发送功能就不用考虑了. 另外一定要进行认证才允许申请模板消息认证入口如下 由于已经认证过,所以右边不显示认证入口.认证的流程是补充公司营业执照相关信息、公司对公账号打款、三方电话认证等。这里需要交300认证费的做过认证的都知道很简单感觉人家三百赚的真容易。
2.申请模板消息功能
认证审核通过之后可以添加模板消息功能入口如下 由于已经添加过所以广告服务下方不在显示。如果没开通的话会显示出模板消息。如存在没开通还没显示则证明该公众类型为订阅号。 添加模板信息需要选择两个行业分类按照业务类型选择对应的分类即可如果选项中没有符合要求的选择其他即可简单描述一下模板消息的目的。
添加消息模板
模板消息功能中我的模板会显示已添加的消息模板(注意模板id发送消息的时候会用到) 对于模板消息,腾讯提供了很多的消息模板进行选择,基本上涵盖当前大部分的消息提醒需求,直接按照内容进行搜索添加就可以,如果当前的业务消息提醒确定没有也可以进行添加,审核通过后会添加到模板库中,所有开发者都能使用. 自定义添加模板消息入口(先搜索,搜索不到才会显示入口):
4.添加模板消息发送接口
4.1获取权限AccessToken
公众号支持的接口基本上都需要权限认证,所以首先要获取AccessToken.获取方式如下: public String getWxgAccessToken() {// 服务号的appid以及秘钥String appid服务号的appid;String Wxgsecret服务号的秘钥;String requestUrl StrUtil.format(https://api.weixin.qq.com/cgi-bin/token?grant_typeclient_credentialappid{}secret{}, appid, Wxgsecret);String returnMsg HttpUtil.get(requestUrl);cn.hutool.json.JSONObject responseJsonObject JSONUtil.parseObj(returnMsg);if(ObjectUtil.isNull(responseJsonObject)) throw new Exception(响应异常:获取信息为空!);String accessToken responseJsonObject.getStr(access_token);return accessToken;}请求发送使用hutool中的HttpUtil,引入的依赖如下: dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.2.4/version/dependency4.2获取要发送的用户的openId
直接使用官方在线的接口文档 官方文档中有获取关注公众号的所有用户信息接口.调用入口如下: 其中的openId中会显示所有关注公众号的用户openId.
4.3给指定用户发送消息
请求参数:
public class WxgMessageDto {// 消息接收者openIdNotBlank(message 微信公众平台不允许为空!)private String openId;// 认证tokenNotBlank(message accessToken不允许为空!)private String accessToken;// 省略get/set
}控制层:
PostMapping(/sendWxgMessage)public ApiResult sendWxgMessage(RequestBody Validated WxgMessageDto wxgMessageDto) throws Exception {smallProgressService.sendWxgMessage(wxgMessageDto);return ApiResult.ok();}发送消息具体逻辑: public void sendWxgMessage(WxgMessageDto wxgMessageDto) {// 组装消息内容String templateId模板id; // 模板idString urlhttps://www.baidu.com/; // 跳转路径(小程序之外)String appid; // 小程序appidString pagepath; // 小程序跳转路径String client_msg_id; // 防重入idString first朋友,有一个邀请面试通知待查收; // 副标题String keyword1; // 关键词1String remark更多详情信息请点击查看; // 备注String keyword1Value阿里巴巴济南分巴; // 信息String keyword2Value山东金融数字产业园; // 信息String keyword3Value18560152023; // 信息String keyword4Value总是想把世界上最好的给你,却发现世界上最好的是你..........; // 信息String color; // 颜色String messageStr{\n \touser\:\wxgMessageDto.getOpenId()\,\n \template_id\:\templateId\,\n \url\:\url\, \n \miniprogram\:{\n \appid\:\appid\,\n \pagepath\:\pagepath\\n },\n
// \client_msg_id\:\MSG_000001\,\n \data\:{\n \first\: {\n \value\:\first\,\n \color\:\#173177\\n },\n \keyword1\:{\n \value\:\keyword1Value\,\n \color\:\#173177\\n },\n \keyword2\: {\n \value\:\keyword2Value\,\n \color\:\#173177\\n },\n \keyword3\: {\n \value\:\keyword3Value\,\n \color\:\#173177\\n },\n \keyword4\: {\n \value\:\keyword4Value\,\n \color\:\#173177\\n },\n \remark\:{\n \value\: \remark\,\n \color\:\#173177\\n }\n }\n };// 发送消息String accessTokenwxgMessageDto.getAccessToken();String returnMsg HttpUtil.post(StrUtil.format(https://api.weixin.qq.com/cgi-bin/message/template/send?access_token{}, accessToken), messageStr);cn.hutool.json.JSONObject jsonObject JSONUtil.parseObj(returnMsg);String errmsg jsonObject.getStr(errmsg);if(!StrUtil.equals(ok,errmsg)) throw new BusinessException(消息发送失败!);}关于请求参数拼接直接使用的是官方给出的请求示例,注意里面传参的时候需要进行引号的转义.
查看消息接收情况: