简介
模板消息仅用于公众号向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如信用卡刷卡通知,商品购买成功通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
关于使用规则,请注意:
1、所有服务号都可以在功能->添加功能插件处看到申请模板消息功能的入口,但只有认证后的服务号才可以申请模板消息的使用权限并获得该权限;
2、需要选择公众账号服务所处的2个行业,每月可更改1次所选行业;
3、在所选择行业的模板库中选用已有的模板进行调用;
4、每个账号可以同时使用25个模板。
5、当前每个账号的模板消息的日调用上限为10万次,单个模板没有特殊限制。【2014年11月18日将接口调用频率从默认的日1万次提升为日10万次,可在MP登录后的开发者中心查看】。当账号粉丝数超过10W/100W/1000W时,模板消息的日调用上限会相应提升,以公众号MP后台开发者中心页面中标明的数字为准。
关于接口文档,请注意:
1、模板消息调用时主要需要模板ID和模板中各参数的赋值内容;
2、模板中参数内容必须以”.DATA”结尾,否则视为保留字;
3、模板保留符号”{{ }}”。
======================只有认证后的服务号才可以申请模板消息的使用权限并获得该权限====
PS:=============请查阅JAVA微信公众号开发第1篇之环境配置与开发接入进行基本微信接入配置============
申请并添加模板
上传微信素材
使用wxService.mediaUpload(mediaType, fileType, inputStream)方法
/**
* <p>Title: pushGoOnlineMsg</p>
* <p>Description: 功能上线通知</p>
* @param touser 用户
* @param url 链接
* @param tiltle 标题
* @param functionName 功能名称
* @param remark 备注
* @return
*/
public Message<TemplateSenderResult> pushGoOnlineMsg(String touser,String url,String tiltle,String functionName,String remark){
int code=1002;
String msg="发送成功!";
TemplateSenderResult templateSenderResult=null;
try {
TemplateSender sender=new TemplateSender();
sender.setTemplate_id("hTjJXn5M3KEkk4ei7z_YQTBxV1s6bQEPhcvbC1lXL3w");
sender.setTouser(touser);
sender.setUrl(url);
Map<String, Object> data=new HashMap<String, Object>();
data.put("first", new ModelMsgData(tiltle,"#1ba2e6"));
data.put("name", new ModelMsgData(functionName,"#1ba2e6"));
data.put("time", new ModelMsgData(new SimpleDateFormat("yyyy年MM月dd日").format(new Date()),"#1ba2e6"));
data.put("remark", new ModelMsgData(remark,"#1ba2e6"));
sender.setData(data);
try {
templateSenderResult=templateSend(sender);
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
code=-6666;
msg="服务器开小差啦!";
}
return MessageUtil.getMessage(templateSenderResult, code, msg, null);
}
public TemplateSenderResult templateSend(TemplateSender sender) throws WxErrorException {
TemplateSenderResult result = null;
String postResult = null;
String url = WxConsts.URL_TEMPLATE_SEND.replace("ACCESS_TOKEN",wxService.getAccessToken());
try {
postResult = post(url, sender.toJson());
result = TemplateSenderResult.fromJson(postResult);
} catch (IOException e) {
throw new WxErrorException("[wx-tools]templateSend failure.");
}
return result;
}
public String post(String url, String params) throws WxErrorException {
return execute(new SimplePostRequestExecutor(), url, params);
}
/**
*
* 向微信端发送请求,在这里执行的策略是当发生access_token过期时才去刷新,然后重新执行请求,而不是全局定时请求
*
* @param executor
* @param uri
* @param data
* @return
* @throws WxErrorException
* @throws IOException
*/
public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException{
try {
return executeInternal(executor, uri, data);
} catch (WxErrorException e) {
throw e;
}
}
/**
* 请求执行器
*
* @param executor
* @param uri
* @param data
* @return
* @throws WxErrorException
* @throws IOException
*/
protected synchronized <T, E> T executeInternal(RequestExecutor<T, E> executor, String uri, E data)
throws WxErrorException{
try {
return executor.execute(getHttpclient(), uri, data);
} catch (WxErrorException e) {
throw e;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}