模板消息相对来说用的比较多的了,建议有时间去读一下文档,多了解一下
想要发送模板消息,首先你得有模板消息,所以要新建模板消息,在测试号里面是可以无限制新建的,在正式的公众号里面貌似需要申请,你可以从模板库里面导入,或者自己定义,一个月貌似是3条,如果急用肯定来不及,所以还是去模板库老老实实找吧,比较多,我这里没有正式号,所以没法演示,有机会补上去吧
下面我们来看测试号:
在你的测试号管理界面有一个模板消息接口,你可以选择新增,但是上限是十个,大概像这样
模板id就是我们开发者要使用的了,后面的就是展示给客户的内容了,然后还会有一个链接,就是点击这个消息会跳转到哪里
成功后大概是这样,我这里跳转的是百度
我们新增一条试试
内容
{
{first.DATA}
}
用户昵称:{
{keyword1.DATA}
}
绑定时间:{
{keyword2.DATA}
}
备注:{
{keyword3.DATA}
}
{
{remark.DATA}
}
成功之后,这个后面的我们会用到,模板消息的数据有个规范
在我前面发的,你也可以查一下相关文档,好好熟悉一下
发送模板消息,post请求,参数格式为json
开始代码
if ("4".equals(content)) {
MsgUtil.sendTemplateMsgToUser( openId,response);
}
public static void sendTemplateMsgToUser(String openId, HttpServletResponse response) {
String msg = JSONObject.fromObject(MsgUtil.initTemplateMsg(openId, response)).toString();
System.out.println("封装的模板消息是"+ msg);
JSONObject result = HttpUtil.doPoststr(WeiXinUtil.SEND_TEMPLATE_MSG.replace("ACCESS_TOKEN", WeiXinUtil.getAccessToken()),msg);
if("ok".equals(result.getString("errmsg"))){
System.out.println("发送的结果是"+result);
}
}
这里首先初始化一条json数据,然后调用post请求发送
/**
* 初始化模板消息
* @param openId
* @param response
*/
public static TemplateMsg initTemplateMsg(String openId, HttpServletResponse response) {
Map<String,TempData> m = new HashMap<String,TempData>();
TempData first = new TempData();
first.setColor("#000000");
first.setValue("您好,您有一条新通知。");
m.put("first", first);
TempData keyword1 = new TempData();
keyword1.setColor("#328392");
keyword1.setValue("小猪");
m.put("keyword1", keyword1);
TempData keyword2 = new TempData();
keyword2.setColor("#328392");
keyword2.setValue("2014-10-19");
m.put("keyword2", keyword2);
TempData keyword3 = new TempData();
keyword3.setColor("#328392");
keyword3.setValue("您已经成功绑定");
m.put("keyword3", keyword3);
TempData remark = new TempData();
remark.setColor("#929232");
remark.setValue("请确认绑定信息");
m.put("remark", remark);
TemplateMsg template = new TemplateMsg();
template.setUrl("www.baidu.com"); //模板详情链接
template.setTouser(openId); //接收者
template.setTopcolor("#000000");
template.setTemplate_id("rcfRlSI6MnDAgFjVVkQtI2FpPWf9dXmODfUKJddlxyE"); //模板id
template.setData(m);
return template;
}
对照参数说明来建立实体类
一个msg,然后里面有个map,key是string,value是data,然后data里面是value和颜色
实体类如下:
public class TemplateMsg {
private String touser;
private String template_id;
private String url;
private String topcolor;
private Map<String,TempData> data;
public String getTouser() {
return touser;
}
public void setTouser(String touser) {
this.touser = touser;
}
public String getTemplate_id() {
return template_id;
}
public void setTemplate_id(String template_id) {
this.template_id = template_id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Map<String, TempData> getData() {
return data;
}
public void setData(Map<String, TempData> data) {
this.data = data;
}
public String getTopcolor() {
return topcolor;
}
public void setTopcolor(String topcolor) {
this.topcolor = topcolor;
}
}
public class TempData {
private String value;
private String color;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
日志信息如下
封装的模板消息是{"touser":"oHz9D0TObxbKYC720R61svLa0YDg","data":{"keyword3":{"color":"#328392","value":"您已经成功绑定"},"keyword1":{"color":"#328392","value":"小猪"},"keyword2":{"color":"#328392","value":"2014-10-19"},"remark":{"color":"#929232","value":"请确认绑定信息"},"first":{"color":"#000000","value":"您好,您有一条新通知。"}},"template_id":"rcfRlSI6MnDAgFjVVkQtI2FpPWf9dXmODfUKJddlxyE","url":"www.baidu.com","topcolor":"#000000"}
发送的结果是{"errcode":0,"errmsg":"ok","msgid":555163492806885379}
到此,微信发送模板消息就结束了,关于概念性的东西说的比较少,建议自己去看一下