微信公众号开发教程(五)发送模板消息
作者:陈惠,叩丁狼教育高级讲师。原创文章,转载请注明出处。
发送模板消息也叫业务通知,听起来虽然有点陌生,但是在生活当中是经常见到的。这一次,我们直接来看个效果。
图片.png如上图所示,在我们的生活中,无论是微商城消费,还是日常生活消费,都可能收到这种提示,比如订单通知,快递状态通知,银行卡支付通知,都属于业务通知,很多公众号也都实现了这种功能,当触发了某种行为或状态改变,就会发送这么一个消息给你,因为这种消息都是按照一定的的格式来编辑,所以也叫模板消息。
发送模板消息
那要怎么才能发送呢?我们打开开发文档"消息管理"中的"模板消息接口"。
图片.png
要注意的是认证后的服务号才可以申请模板消息的使用权限并获得该权限,否则就只能使用测试号。
该页面中介绍了几个接口,我们主要使用第6个来发送模板消息。
其他的接口主要是为了方便开发者获取或设置公众号的所属行业,比如餐饮,教育等等,如果是正式的公众号,也可以登录公众平台来进行设置,其他的接口就是获取模板的信息等,如果没需求可以不调用。
我们要发送模板消息,第一步是需要创建一个模板,有了模板之后,我们才能填充内容来进行发送。
1.创建模板
创建模板不需要调用接口,在公众号后台即可设置。
图中是测试号中的设置界面。
现在我们来按照下面案例来新建一个模板。但是模板的内容是有一定的规则的,不能随便添加。
图片.png注意:
1、测试模板的模板ID仅用于测试,不能用来给正式帐号发送模板消息
2、为方便测试,测试模板可任意指定内容,但实际上正式帐号的模板消息,只能从模板库中获得
3、需为正式帐号申请新增符合要求的模板,需使用正式号登录公众平台,按指引申请
4、模板内容可设置参数(模板标题不可),供接口调用时使用,参数需以{{开头,以.DATA}}结尾
图片.png
模板内容里面的内容如果是不会变动的就可以直接写死,如果是变动的一定要设置成参数。
参数需要以"{{"这两个左花括号开头,以".DATA}}"结尾,如上图所示。
保存之后,微信会给该模板分配一个ID,待我们要发送模板消息的时候就需要用到这个ID了。
图片.png
2.发送给用户
打开文档"发送模板消息"
获得发送模板的接口地址:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
使用POST的方式来发送,并且把模板消息的数据以json数据的格式传递到该接口。
我们先来看看json里面的参数主要有哪些?
图片.png实际上,必传的只有 touser接收者,template_id模板id,data模板数据这3个参数,其他的可以不传,如果传了就会有相应的跳转,比如跳转至指定url,或者跳转至小程序。
准备好的json数据:
{
"touser":"OPENID",
"template_id":"QI4JojaGvL9-5ynjwFwOSPqH2eWXHpr7ZeseysefKqc",
"data":{
"first": {
"value":"恭喜你购买成功!",
"color":"#173177"
},
"product":{
"value":"巧克力",
"color":"#173177"
},
"amount": {
"value":"39.8元",
"color":"#173177"
},
"time": {
"value":"2014年9月22日",
"color":"#173177"
},
"remark":{
"value":"欢迎再次购买!",
"color":"#173177"
}
}
}
把touser改成接收消息的用户的OPENID就可以了 。
创建发送模板的方法:
//发送模板消息的接口
public static final String SEND_TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
/**
* 发送模板
*
*/
public static void sendTemplate(String data){
String result = HttpUtil.post(SEND_TEMPLATE_URL.replace("ACCESS_TOKEN", getAccessToken()),data);
System.out.println(result);
}
getAccessToken方法是上一篇文章自定义菜单的时候已经创建好了,主要是获取我们调用接口的凭据AccessToken。
运行时把json数据传入到方法中,我们可以看到打印出来的结果。
{"errcode":0,"errmsg":"ok","msgid":232391810540961792}
errcode为0代表已经发送成功。如果errcode是其他值,请打开文档的错误返回码页面中查找错误信息。
手机上的效果,参考图中红线框:
模板消息