是否正为微信服务号的模板消息推送而抓耳挠腮呢,弄明白这个接口,你的用户触达率会翻倍。
微信服务号用于给用户发送服务通知的重要工具之一是模板消息。和群发消息有着不同的频率限制,在用户主动触发或者特定事件发生之后,模板消息能够精准推送提醒。像银行扣款通知、订单状态变更这类场景,在这些场景下面,用户可不是持嫌恶态度,相反是极为需要。
在2015年那个时候,不少开发者都在钻研怎样去把这个功能运用得恰如其分,它化解了服务号跟用户之间存在的低频互动方面的难题,使得重要的信息能够及时地抵达用户的手机,有数据表明,那些对模板消息进行合理运用的公众号,其用户打开率相较于普通推送而言要高出30%以上。
着手使用模板消息接口以前,务必先去获取access_token。此凭证等同于你服务号的身份证,每日调用次数受限为2000次。进行获取时得提供appid以及secret,找这两个参数的位置是在微信公众平台开发者中心那里。
2015年8月时的接口文档表明,用来获取地址的是https://api.weixin.qq.com/cgi-bin/token。其请求方式采用的是GET,而且呢还得拼接grant_type=client_credential这个参数。在返回的JSON数据当中是存在你所需要那么个access_token的,它的有效期是7200秒,你可一定要记得把它缓存起来以便能够重复将其加以使用。
存在部分服务号,并非均可直接去发送模板消息。你得先于公众平台后台的“功能 - 添加功能插件”之处 ,寻觅到“模板消息”进而申请予以开通。待审核通过以后 ,方可从模板库内挑选契合你业务的模板。
彼时,微信给出了几百种行业领域的模板,像电商、金融、餐饮之类。选了模板后会得到一个模板ID,此ID在推送接口里必定得要用。记着,模板内容当中的参数得用{{first.DATA}}这般的格式,不可自行随意变动关键词。
可以推送的接口地址为https://api.weixin.qq.com/cgi-bin/message/template/send ,其调用的方式一定要采用POST ,提交的数据格式是JSON ,其中要包含touser(也就是用户的openid) 、template_id(即模板ID)以及data(模板有关内容的数据)。
于二零一五年开展的开发实践期间,不少人于拼接 data 参数之际极易出现差错,像颜色值需采用十六进制来表示,参数名务必与模板之中的完全保持一致这样。曾有一位电商客户,当时由于遗漏了{{remark.DATA}},进而致使整推送失效。经过花费半天时间展开排查,才找出相应问题所在。
调用接口之后,微信将会返回JSON数据,errcode为0时意味着成功,其他数值均代表不同的错误,举例来说,40037代表模板ID不正确,41001代表缺少access_token,这些返回码在开发文档当中都有详细的列表,建议打印至日志里以便于调试。
public static void Send()
{
dynamic postData = new ExpandoObject();
postData.touser = "OpenId";
postData.template_id = "template_id";
postData.url = string.Empty;
postData.topcolor = "#FF";
postData.data = new ExpandoObject();
var data = new[]
{
new Tuple("title", "航班延误通知", "#FF"),
new Tuple("trainNumber", "分钟", "#FF"),
new Tuple("fromto", "上海-北京", "#FF"),
new Tuple("formerTime", "// ::", "#FF"),
new Tuple("Time", "// ::", "#FF"),
new Tuple("number", "分钟", "#FF"),
new Tuple("reason", "天气原因", "#FF"),
new Tuple("remark", "请关注我们的微信通知", "#FF")
};
var dataDict = (IDictionary)postData.data;
foreach (var item in data)
{
dataDict.Add(item.Item, new { value = item.Item, color = item.Item });
}
string json = ((object)postData).Serialize();
Console.WriteLine(json);
var r = NetUtils.CreateHttpResponse(@"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=@access_token", json);
Console.WriteLine(r);
}
当时,存在一位从事餐饮服务号开发的人,常常遭遇45009错误,此错误乃是接口调用超出频率限制所致。其后,经发现得知是他们未进行access_token缓存操作,每一次推送时均重新获取,从而致使token被刷爆。这个问题在2015年极具典型性,众多新手都会在此处踩坑。
尽管模板消息具备使用便利的特性,然而却绝不能够进行过度使用行为。微信作出了明确的规定,其用途不可被用于发送营销广告内容,仅能够发送给与用户存在交互情况的服务通知。在2015年的时候,存在不少公众号由于违反规定从而被封禁了接口权限,如此做法实在是得不偿。
推送时间同样得予以留意,于深夜进行推送极易遭到用户投诉。最好是在用户实施操作之后的1小时之内予以发送,就像下单成功即刻发送提醒,下单2小时之后发送发货通知那样。有一个测试得出的数据显示,在15分钟以内推送的消息,用户查看率能够达到80%以上。
以个人而言,你是否曾历经模板消息设定未恰当合理,致使使用者接收不到关键重要通知的过往情形;若有此类经历的话,欣然欢迎于评论区域分享你遭受挫折陷入困境的经历故事,一旦真切觉得文章具备价值作用的情况下,可要记得点赞并转发给予更多有需求的朋友。