时间:2021-05-25
上一篇文章:nodejs微信公众号开发(2)自动回复,实现了简单的关注回复。采用拼接字符串的形式,并不是很方便,这里我们将其封装承接口。
1. ejs模板引擎
不使用拼接字符串的方式,那么模板引擎就是较好的选择。Nodejs开源模板的选择很多,程序中使用 EJS,有Classic ASP/PHP/JSP的经验用起EJS来的确可以很自然,也就是说,你能够在 <%...%> 块中安排 JavaScript 代码,利用最传统的方式 <%=输出变量%>(另外 <%-输出变量是不会对 & 等符号进行转义的).
2. heredoc
在php、python中都有heredoc方式的字符串定义方法,JavaScript也实现了heredoc模块,主要解决大量字符串拼接问题。
新建模板文件tpl.js:
3. 处理接收到的消息
修改generator.js中之前直接回复消息的那部分代码,我们将处理回复内容的逻辑交给业务层,等其处理完毕,继续执行下面的代码,封装消息内容成xml并回复出去。
var message = util.formatMessage(content.xml); this.weixin = message; //挂载消息yield handler.call(this,next); //转到业务层逻辑wechat.replay.call(this); //真正回复4.业务层的处理逻辑
app.js里面中间件的使用方式修改为:
var weixin = require('./weixin');...app.use(wechat(config.wechat,weixin.reply));weixin.reply即generator.js中的handler,我们将公众号业务成的逻辑都写在weixin.js里面,如回复消息、将来的爬取电影网站信息、支付等。
exports.reply = function* (next){ var message = this.weixin; if(message.magType === 'event'){ if(message.Event === 'subscribe'){ if(message.EventKey) console.log('扫描二维码关注:'+message.EventKey+' '+message.ticket); this.body = '终于等到你,还好我没放弃'; }else if(message.Event === 'unsubscribe'){ console.log(message.FromUserName +' 悄悄地走了...'); } }else{ // } yield next;}5.回复消息
我们在Wechat原型链上增加replay方法:
Wechat.prototype.replay = function(){ var content = this.body; var message = this.weixin; var xml = util.tpl(content,message); this.status = 200; this.type = 'application/xml'; this.body = xml;}这样实现了wechat.replay.call(this); 的回复消息功能。
6.总结
上面代码已经基本实现了消息的封装,回复规则和回复内容写在业务层代码weixin.js中,里面简单的实现了关注和取关的事件处理。
由于koa框架是基于ES6,里面充斥了大量的Promise、genarator、yield等内容,对ES6不了解的,可以学习一下此篇文章:ECMAScript6快速入手攻略
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
微信公众号模块名字怎么弄?怎么修改微信公众号模块名称?大家知道微信公众号模块名字怎么弄;怎么修改微信公众号模块名称吗?还不是很清楚的朋友可以看看接下来对微信
上一篇文章:nodejs微信公众号开发(1)接入微信公众号,本篇文章将在此基础上实现简单的回复功能。1.接入代码的优化之前我们简单粗暴的实现了微信公众号的接入,
3月5日消息,微信支付日前已正式面向开发者开放申请,开通了公众号的开发者可以登录公众平台申请微信支付。根据微信的官方介绍,开发者申请微信支付需要经过四个流程:申
Nginx反向代理一个80端口下配置多个微信项目详解 我们要接入微信公众号平台开发,需要填写服务器配置,然后依据接口文档才能实现业务逻辑。但是微信公众号接口只支
登录微信公众号平台,才能解绑于微信公众号绑定的微店。2在微信公众号菜单栏选择自定义菜单也可选择开发者中心,查看微信公众号所授权绑定的其他第三方平台。3打开授权管