微信模板消息推送-模板再封装
前言微信公众号是当今社交媒体中最受欢迎的平台之一。每个公众号都希望与其粉丝保持良好的沟通和互动,这样可以增强用户黏性,促进商业交易。微信模板消息推送是微信公众号与用户通信的重要方式之一。在消息模板发送方面,微信官方提供了一套模板标准供使用者参考,这些模板可以不受限制地作为消息递交给用户。然而,原版的模板消息推送存在问题,消息内容有点杂乱无序,给用户造成不必要的困扰。为了解决这个问题,我们需要重新封装模板消息,使其更加有针对性和可操作性。
一、设计思路我们的设计思路是针对原有微信模板消息推送进行二次开发,主要目的是提高消息的可读性、可操作性和可扩展性。我们将从以下几个方面进行设计:
消息格式:我们需要对原模板消息进行改造,使其内容更加清晰、有针对性和可操作性。
存储方式:我们需要在数据库中存储封装后的消息模板,以便于程序使用和管理。
接口设计:我们需要设计合理的接口,使其在调用时更加方便快捷。
二、模板消息格式我们重新设计的消息格式需要遵循微信官方的规范,同时根据实际需求进行优化和改善。
1.微信模板下面是微信模板消息的基本格式:
{
"touser": "OPENID",
"template_id": "TEMPLATE_ID",
"url": "URL",
"miniprogram": {
"appid":"APPID",
"pagepath":"PAGEPATH"
},
"data": {
"first": {
"value":"FIRST",
"color":"173177"
},
"keyword1":{
"value":"KEYWORD1",
"color":"173177"
},
"keyword2": {
"value":"KEYWORD2",
"color":"173177"
},
"remark":{
"value":"REMARK",
"color":"173177"
}
}
}
2.封装后数据库中存储由于我们需要将消息模板存储到数据库中,我们必须重新设计数据格式。基于我们对微信模板的改进和扩展,下面是我们重新设计的消息格式:
{
"id":1,
"name": "订单状态通知",
"content": "亲爱的name,您在date的订单状态有更新,当前状态为status,请及时查看。",
"url": " "data": {
"first": {
"value":"ORDER STATUS CHANGE",
"color":"173177"
},
"keyword1":{
"value":"name",
"color":"173177"
},
"keyword2": {
"value":"date",
"color":"173177"
},
"keyword3": {
"value":"status",
"color":"173177"
},
"remark":{
"value":"查看详情",
"color":"173177",
"link":" }
}
}
我们对原有微信模板进行了如下改进:
内容模板中使用了变量,以便针对不同消息进行个性化处理。
增加了消息标题,使其更有针对性。
增加了跳转链接,方便用户快速跳转到相关页面。
3.接口设计在设计接口时,应该考虑到接口的易用性和可拓展性。下面是我们重新设计的接口样例:
public class WechatTemplateMessageService {
public static final String TEMPLATE_NAME_ORDER_STATUS_CHANGE = "order_status_change";
private Map
public WechatTemplateMessageService() {
templates = new HashMap<>();
templates.put(TEMPLATE_NAME_ORDER_STATUS_CHANGE, "1");
}
@Autowired private WechatApiService wechatApi;
public boolean sendOrderStatusChange(String openId, String orderId, String orderStatus) {
// 根据订单查询订单所属用户,这里略过 String userId = "9";
WechatUser user = wechatApi.getUserByOpenId(openId);
WechatTemplateMessage message = new WechatTemplateMessage();
message.setTemplateId(templates.get(TEMPLATE_NAME_ORDER_STATUS_CHANGE));
message.setTouser(user.getOpenId());
Map
data.put("first", new WechatTemplateData("您的订单状态有更新。"));
data.put("name", new WechatTemplateData(user.getNickname()));
data.put("date", new WechatTemplateData(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())));
data.put("status", new WechatTemplateData(orderStatus));
data.put("remark", new WechatTemplateData("查看订单详情").withUrl(" + orderId));
message.setData(data);
return wechatApi.sendTemplateMessage(message).isSuccess();
}
}
上述接口代码演示了如何发送订单状态更新通知。我们为每个消息模板定义一个字符串常量,以便调用时识别模板。然后我们获取用户信息并填充消息模板中的占位符。最后,我们调用微信API发送消息。
总结微信模板消息推送是微信公众号与用户进行沟通的重要方式之一。然而,在实际应用中,原有模板消息格式可能不符合我们的需求和要求。为了解决这个问题,本文提出了封装模板消息的方案,包括消息格式、存储方式和接口设计。我们重新设计的消息格式可以使消息更加清晰、易读和可操作,存储方式可以更好地管理和维护消息模板,接口设计则可以使开发者更加方便地调用微信API发送消息。