微信公众号开发之模板消息

作者: Javen205 | 来源:发表于2016-10-20 23:38 被阅读48334次

    欢迎留言、转发

    微信极速开发系列文章:点击这里

    最近有点小感冒,文章的更新进度延误了一些,希望此系列文章对你研究微信公众开发有帮助。前几篇文章介绍了微信支付。 公众号支付微信扫码支付刷卡支付微信买单

    此文来聊聊微信中的业务通知----微信模板消息

    如何查看是否有权限

    在交流群中,总是有人问个人订阅号认证的订阅号服务号认证的服务号 某个接口是否有权限使用。

    其实这个问题很简单,在【微信公众平台】现在已经可以直接查看自己的公众号都能使用那些接口。

    登录【微信公众平台】进入首页>开发>接口权限

    模板消息-权限.png

    添加模板消息插件

    注意必须是认证的服务号

    登录【微信公众平台】进入首页>添加插件功能>找到模板消息按照指引流程操作即可。

    模板消息接口使用规则

    官方文档 发送消息-模板消息接口 以及 模板消息运营规范

    关于使用规则,请注意:
    1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
    2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
    3、在所选择行业的模板库中选用已有的模板进行调用;
    4、每个账号可以同时使用25个模板。
    5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。

    添加模板消息

    按照上文添加模板消息插件之后【微信公众平台】首页左侧栏就会出现模板消息菜单,收取点击进去需要同意协议并设置公众账号服务所处的2个行业。

    以上设置好了就可以通过关键词查模板库中已有的模板,如果没有找到可以自己申请。

    模板消息-添加模板.png

    找到合适的模板消息点击详情,进去查看模板详情,如果需要添加即可。添加完成会在我的模板中生成模板消息的 模板ID模板ID在后面会用到。

    模板消息-模板详情.png

    测试号添加模板消息

    测试号添加模板消息.png 测试号添加模板消息.png

    模板消息接口的使用

    客观前面都是一些准备工作,端杯茶耐心往下看。先来点实际的看看开源项目中封装的接口是如何使用的。

    com.javen.weixin.controller.WeixinMsgController.java

    模板消息的使用.png 接收到的通知

    模板消息的封装

    官方参考文档 具体实现 com.jfinal.weixin.sdk.api.TemplateMsgApi.java

    public class TemplateMsgApi {
        
        private static String sendApiUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
        
        /**
         * 发送模板消息
         * @param jsonStr json字符串
         * @return {ApiResult}
         */
        public static ApiResult send(String jsonStr) {
            String jsonResult = HttpUtils.post(sendApiUrl + AccessTokenApi.getAccessToken().getAccessToken(), jsonStr);
            return new ApiResult(jsonResult);
        }
    }
    
    

    json数据的封装

    com.jfinal.weixin.sdk.api.TemplateData.java

    public class TemplateData {
    
        private String touser;
        private String template_id;
        private String url;
        private String topcolor;
        private TemplateItem data;
    
        public static TemplateData New() {
            return new TemplateData();
        }
    
        private TemplateData() {
            this.data = new TemplateItem();
        }
    
        public String getTouser() {
            return touser;
        }
    
        public TemplateData setTouser(String touser) {
            this.touser = touser;
            return this;
        }
    
        public String getTemplate_id() {
            return template_id;
        }
    
        public TemplateData setTemplate_id(String template_id) {
            this.template_id = template_id;
            return this;
        }
    
        public String getUrl() {
            return url;
        }
    
        public TemplateData setUrl(String url) {
            this.url = url;
            return this;
        }
    
        public String getTopcolor() {
            return topcolor;
        }
    
        public TemplateData setTopcolor(String topcolor) {
            this.topcolor = topcolor;
            return this;
        }
    
        public TemplateItem getData() {
            return data;
        }
    
        public TemplateData add(String key, String value, String color){
            data.put(key, new Item(value, color));
            return this;
        }
    
        /**
         * 直接转化成jsonString
         * @return {String}
         */
        public String build() {
            return JsonUtils.toJson(this);
        }
    
        public class TemplateItem extends HashMap<String, Item> {
    
            private static final long serialVersionUID = -3728490424738325020L;
            
            public TemplateItem() {}
    
            public TemplateItem(String key, Item item) {
                this.put(key, item);
            }
        }
    
        public class Item {
            private Object value;
            private String color;
    
            public Object getValue() {
                return value;
            }
            public void setValue(Object value) {
                this.value = value;
            }
            public String getColor() {
                return color;
            }
            public void setColor(String color) {
                this.color = color;
            }
    
            public Item(Object value, String color) {
                this.value = value;
                this.color = color;
            }
        }
    }
    

    相关文章

      网友评论

      • c4bcb88c7ab6:你好 我想问下,公众号关联了小程序,那小程序的下单以及付款操作,要在公众号进行推送。
        那这些模板接口是写在我开发的小程序后台还是前端?
        Javen205:@Aurora_7fc2 需要将公众号以及小程序绑定到开放平台通过uuid来识别公众号对应的openid
      • 俊成_e68b:你好,我想问下,在小程序购买相关产品后,能在自己的服务号上发送模板消息通知用户吗?
        Javen205:@俊成_e68b 可以的 需要将服务号以及小程序绑定到开放平台使用unionid查对应的openid
      • 遥啊遥啊遥啊:麻烦问下,我在公众号关联了小程序,那我在小程序的的操作,能在公众号进行推送吗
        Javen205:@遥啊遥啊遥啊 小程序也有模板消息 你为啥要用公众号的?
        遥啊遥啊遥啊:@Javen205 就是消息模板啦
        Javen205:@遥啊遥啊遥啊 目前公众号关键微信小程序 是为了在文章以及菜单中启动小程序。你知道你说的在公众号推送是什么需求:joy:
      • 匠心笔芯:请问大神~怎样添加“详情”跳转页链接
        年少尚文艺:在哪里添加链接跳转?直接在remark.data字段里面复制粘贴想要跳转的连接就行?
        匠心笔芯:@Javen205 谢谢~
        Javen205:@太阳没有眉毛 模板消息可以设置URL
      • f693fd210963:用户没有像服务号发送消息的情况下,能不能获取openid?可以对该用户发送模板消息吗?
        Javen205:@f693fd210963 服务号可以通过授权以及用户相关的接口来获取openid,模板消息是可以主动发送。
      • e86534ef61c6:您好,大神,我想做一个上课提醒的消息,消息模板可以群发或者按照标签发吗
        Javen205:@关关胖胖 看你用户基础了,都有利有弊
        e86534ef61c6:@Javen205 小程序的消息推送会比公众号的好吗
        Javen205:@关关胖胖 可以的
      • 寻寻_b1fa:亲,还有个问题,就是例如卖方,买方,买方买一个东西,可以有一个购买成功通知,是否可以同时给卖方发送一个通知“某个商品被某人购买”的通知;查看了模板消息的规则:是用户触发消息之后才能有通知,是否可以使用户A触发事件,A有一个通知消息,同时也给用户B一个通知消息,这样违规吗?
        Javen205:@寻寻_b1fa 我认为是不违规的
      • 寻寻_b1fa:您好,留言消息不能用模板消息吗?昨天申请被驳回了,原因是:发送频率过高,可能引起用户反感。
        Javen205:@寻寻_b1fa 是的 建议你表达委婉一点:blush:
      • 慧行说:老铁,模板消息有两个按钮的咋弄
        Javen205:@慧行产品说 模板可以自定义的
        慧行说:@Javen205 那我看你这个demo中的标题可不可以修改呢,比如我要把“授课老师”改成“授课讲师”,或者改成其他的名字,可以吗
        Javen205:@慧行产品说 此接口没有开放
      • 缘子团:您好,请问我想把公众号模板库里的所有模板下载下来,这个如何处理呢?
        缘子团:@Javen205 获取公众号已有的所有模板现在是没问题的(get_all_private_template), 现在产品要求是要可以把公众号所在行业对应模板库中的所有模板罗列出来供同事自己挑选,比如主IT、副:互联网/电子商务 下面微信提供了600多页的模板都要显示在我们的功能页
        Javen205:@缘子团 使用模板相关的接口可以获取公众号已有的模板……官方的接口名称获取模板列表
      • 丶又刂丨丿巾:请问一下,在服务器上怎么主动发模板消息,就是没有逻辑去触发的时候,能给个建议吗
        Javen205:@丶又刂丨丿巾 模板消息只要知道了openid可以在任何地方调用接口主动发的
      • f59f8099481f:请问模版消息下面的按钮怎么开发
        Javen205:@一毛三_4907 据我了解目前此功能还没有开放
      • 干脆面_0e99:你好,请教下有些模板推送的信息有部分字体是放大了的,请问这个一般怎么处理的啊?
        Javen205:@干脆面_0e99 不能设置字体的大小
      • 那些丶我无处安放的哀伤:请问下大神 模板消息的URL填什么才对?
        Javen205:@那些丶我无处安放的哀伤 根据你业务逻辑填写就行,比如你是做订单通知的,点击URL进入可以查看订单详情
      • a7c693399da8:大神,模版消息開發,可以請你幫忙嗎?
        Javen205:@LukeShi_08d4 可以呀 私聊我
      • eaa704f259a4:ApiResult 和那个HttpUtils能不能麻烦贡献一下 老哥 我永不了
        Javen205:@噫_236d 百度或者Google搜索weixin_guide,有你想要的代码
      • 蝶引风香:怎样才能找到自己想要的模板行业啊,我想要一个当用户提问时可以提醒被提问者,被提问者回答问题后提醒对应的提问者的模板,应该选择什么行业啊,百度上怎么也搜不到,求大神帮忙啊
        Javen205:@蝶引风香 哈哈 描述可以写得委婉一点 不用写得太具体:smile:
        蝶引风香:@Javen205 我选的是学术科研行业,申请了这样的模板,被拒绝了,以可能会过多地给用户发送的原因驳回了。
        Javen205:@蝶引风香 你这种特殊不是公用的模板比较难找 你可以直接根据你自己的需求进行申请就可以了
      • 孟瑶123:您好 我现在想发送一条信息 就让他把模板消息发给我 就像你的这样 怎么触发呀 大神 跪求
        沐沐柒:@Javen205 怎么触发呀,我也不明白...
        Javen205:@孟瑶123 怎么触发得看你业务需求 比如支付成功了发送模板消息通知
      • 傅猿猿:你文笔这么好干嘛不在CSDN也转载呀
        Javen205:@傅猿猿 CSDN上也有
      • 不离开她:大佬请问,如何在本地进行调试啊。用腾讯的开发工具的话 貌似不能直接调试我在本地写的页面啊。总不能每次写一点发布后再调吧。。。
        Javen205:@不离开她 http://www.jianshu.com/p/b81bb6a3c0b9 看看这篇文章
      • LC_ed46:想请大神帮忙
        Javen205:@LC_ed46 遇到啥问题了:interrobang:
      • 9b7b724b570a:自动推送怎么调试
        Javen205:@叫我vitamin 群发不建议使用模板消息
        叫我vitamin:@Javen205 就是你搞一个活动想自动推送信息给所有人
        Javen205:@Bbbsss 自动推送? 需求能说具体点吗?

      本文标题:微信公众号开发之模板消息

      本文链接:https://www.haomeiwen.com/subject/hskquttx.html