内容简介:微信公众号模板消息的使用权限、设置所属行业、规则、申请、添加、删除以及大家问得比较多的问题可以参考之前写的一篇文章,此文章到目前为止(2019.4.28) 已有同时也可以参考官方模板消息接口文档点击这里
TNW : TypeScript(The) + Node.js(Next) + WeChat 微信公众号开发脚手架,支持 http 模块扩展、支持任何 Node.js 的服务端框架(Express、NestJS、eggjs 等)
概述
微信公众号模板消息的使用权限、设置所属行业、规则、申请、添加、删除以及大家问得比较多的问题可以参考之前写的一篇文章,此文章到目前为止(2019.4.28) 已有 8w+的阅读量 90+的评论 微信公众号开发之模板消息
同时也可以参考官方模板消息接口文档点击这里
access_token
是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用 access_token
获取 access_token
详细介绍请参考之前写的文章
TNW 中已实现的接口
export class TemplateApi { public static sendTemplateUrl = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s' private static setIndustryUrl = 'https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=%s'; private static getIndustryUrl = 'https://api.weixin.qq.com/cgi-bin/template/get_industry?access_token=%s'; private static getTemplateIdUrl = 'https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=%s'; private static delTemplateUrl = 'https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token=%s'; private static getAllTemplateUrl = 'https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=%s'; /** * 发送模板消息 * @param tempJson */ public static async send(tempJson: string) { let accessToken = await AccessTokenApi.getAccessToken(); let url = util.format(this.sendTemplateUrl, (<AccessToken>accessToken).getAccessToken); return HttpKit.getHttpDelegate.httpPost(url, tempJson); } /** * 设置所属行业 * @param industry_id1 公众号模板消息所属行业编号 * @param industry_id2 公众号模板消息所属行业编号 */ public static async setIndustry(industry_id1: string, industry_id2: string) { let accessToken = await AccessTokenApi.getAccessToken(); let url = util.format(this.setIndustryUrl, (<AccessToken>accessToken).getAccessToken); return HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ "industry_id1": industry_id1, "industry_id2": industry_id2 })); } /** * 获取设置的行业信息 */ public static async getIndustry() { let accessToken = await AccessTokenApi.getAccessToken(); let url = util.format(this.getIndustryUrl, (<AccessToken>accessToken).getAccessToken); return HttpKit.getHttpDelegate.httpGet(url); } /** * 获取模板列表 * @param templateIdShort 模板库中模板的编号 */ public static async getTemplateId(templateIdShort: string) { let accessToken = await AccessTokenApi.getAccessToken(); let url = util.format(this.getTemplateIdUrl, (<AccessToken>accessToken).getAccessToken); return HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({ "template_id_short": templateIdShort })); } /** * 删除模板 */ public static async delTemplate() { let accessToken = await AccessTokenApi.getAccessToken(); let url = util.format(this.delTemplateUrl, (<AccessToken>accessToken).getAccessToken); return HttpKit.getHttpDelegate.httpGet(url); } /** * 获取模板列表 */ public static async getAllTemplate() { let accessToken = await AccessTokenApi.getAccessToken(); let url = util.format(this.getAllTemplateUrl, (<AccessToken>accessToken).getAccessToken); return HttpKit.getHttpDelegate.httpGet(url); } 复制代码
发送模板消息
Express 示例如下:
// 发送模板消息 app.get('/sendTemplate', (req: any, res: any) => { let templateJson = new TemplateData().New(). setToUser("ofkJSuGtXgB8n23e-y0kqDjJLXxk"). setTemplateId("BzC8RvHu1ICOQfO4N7kp6EWz9VAbISJjV2fO5t7MiXE"). setTemplateUrl("https://gitee.com/javen205/IJPay"). add("first", "恭喜你购买成功!", "#743A3A"). add("keyword1", "IJPay 让支付触手可及", "#0000FF"). add("keyword1", "聚合支付公开课", "#0000FF"). add("keyword2", "免费", "#0000FF"). add("keyword3", "Javen205", "#0000FF"). add("keyword4", "2019-03-12 13:14", "#0000FF"). add("remark", "请点击详情直接看课程直播,祝生活愉快", "#008000"). build(); console.log("templateJson", templateJson); TemplateApi.send(templateJson).then(data => { res.send(data); }); }); 复制代码
Nest 示例如下:
// 发送模板消息 @Get('/sendTemplate') sendTemplate(@Req() req: Request, @Res() res: Response) { let templateJson = new TemplateData().New(). setToUser("ofkJSuGtXgB8n23e-y0kqDjJLXxk"). setTemplateId("BzC8RvHu1ICOQfO4N7kp6EWz9VAbISJjV2fO5t7MiXE"). setTemplateUrl("https://gitee.com/javen205/IJPay"). add("first", "恭喜你购买成功!", "#743A3A"). add("keyword1", "IJPay 让支付触手可及", "#0000FF"). add("keyword1", "聚合支付公开课", "#0000FF"). add("keyword2", "免费", "#0000FF"). add("keyword3", "Javen205", "#0000FF"). add("keyword4", "2019-03-12 13:14", "#0000FF"). add("remark", "请点击详情直接看课程直播,祝生活愉快", "#008000"). build(); console.log("templateJson", templateJson); TemplateApi.send(templateJson).then(data => { res.send(data); }); }; 复制代码
上面是通过封装的实体类来构建发送模板消息需要的 JSON 数据,当然你也可从配置文件、数据库…...中读取 JSON 数据。
默认 nest.js 底层也是使用的 express ,当然也可以替换成其他框架,nest.js 更多介绍请参考官方文档。
开源推荐
-
TNW
微信公众号开发脚手架: gitee.com/javen205/TN… -
IJPay
让支付触手可及: gitee.com/javen205/IJ… -
SpringBoot 微服务高效开发
mica
工具集: gitee.com/596392912/m… -
Avue
一款基于 vue 可配置化的神奇框架: gitee.com/smallweigit… -
pig
宇宙最强微服务(架构师必备):gitee.com/log4j/pig -
SpringBlade
完整的线上解决方案(企业开发必备): gitee.com/smallc/Spri…
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 客户端发送的请求在语法上是不正确的. – Spring MVC JDBC模板
- SpringBoot系列(十四)集成邮件发送服务及邮件发送的几种方式
- Linux如何用脚本监控Oracle发送警告日志ORA-报错发送邮件
- Android 快速发送邮件
- Python 发送邮件
- Python邮件发送指南
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
智能Web算法(第2版)
【英】Douglas G. McIlwraith(道格拉斯 G. 麦基尔雷思)、【美】Haralambos Marmanis(哈若拉玛 玛若曼尼斯)、【美】Dmitry Babenko(德米特里•巴邦科) / 达观数据、陈运文 等 / 电子工业出版社 / 2017-7 / 69.00
机器学习一直是人工智能研究领域的重要方向,而在大数据时代,来自Web 的数据采集、挖掘、应用技术又越来越受到瞩目,并创造着巨大的价值。本书是有关Web数据挖掘和机器学习技术的一本知名的著作,第2 版进一步加入了本领域最新的研究内容和应用案例,介绍了统计学、结构建模、推荐系统、数据分类、点击预测、深度学习、效果评估、数据采集等众多方面的内容。《智能Web算法(第2版)》内容翔实、案例生动,有很高的阅......一起来看看 《智能Web算法(第2版)》 这本书的介绍吧!