微信API的node实现
Install
npm install wego
Getting Started
假设你使用的是express框架
下面的代码是coffee写的。没有复杂的语法,直接脑补 括号就可以了
#app.coffee express = require 'express'app = expressport = 8000token = "your token" #你的微信token _WeGo = require 'wego' #引入wego #引入不同消息类型处理的处理函数 具体见下面的 accept.coffee acceptHandle = require '.accept' wego = tokenacceptHandle #进行基本设置。配置消息的处理事件等。 appget'/' #进行消息验证 是否来自于微信 #如果来自于微信,则返回来自于微信的一个随机字符串 echostr, #否则echostr为false echostr = wegoveritySignaturereq if echostr then ressendechostr else ressend'error' apppost'/' #获取post数据 交给wego处理既可以 wegoparsereqres applisten port
# accept.coffee _WeGo = require'wego'wego = #一个object对象 Accept = #处理微信的文本消息 : #用户发来的消息解析后,就在data参数里面。 当然,也绑定到了request的wego属性 #即这里通过data 或者 req.wego.xml 都能获取到用户的数据 consolelog 'accept data:'data #返回消息的设定。这一部分可以写自己的业务逻辑。这里只是做个demo。返回的结果是"you say" + 用户发送过来的消息 serverName = dataToUserName clientName = dataFromUserName data.ToUserName = clientName data.FromUserName = serverName data.Content = "you say: " #讲消息发送出去。 #注意 data为微信消息xml数据格式 的json类型。 也就是把对应的标签换成相应的json属性即可。 #注意 标签是大写 属性就大写,保持一致。 wegosendMsgreqrespdata #当来自于微信的xml数据无法解析时。会调用这个函数 : consolelog reqweixinerror consolelog reqweixindata respsend '' #如果有消息类型没有设置自定义函数处理,则默认使用parseDefault这个函数进行处理 : consolelog "消息未处理" consolelog data respsend '' module.exports = Accept
API
构造函数 Wego
Wego = wego = token options
token
微信的token。一般是开发者在微信公众平台自己设置的。
options
Object. 里面包含了一些 函数,用于对 不同消息类型进行处理
处理用户消息主要应该包括以下这几个字段函数:
parseText, parseImage, parseVoice, parseVideo, parseLocation, parseLink
分别处理用户发来的文本消息,图片消息, 语音消息, 视频消息, 位置消息,和 超链接消息。 也就是说当wego在request中提取到用户消息时,根据不同的消息类型会调用以上的函数进行处理。 这些函数接收三个参数request, response, data。
options = { } {...} ...
request 即 http request. 解析后的数据会绑定在wego属性上:
console.log(request.wego)
response 即 http response
data. 解析后的数据除了会绑定到request上外 也会作为第三个参数data传过来,方便获取。
解析用户消息函数 parse
app.post('/', function(req, resp){ wego.parse(req, resp)})
接受两个参数 http request 和 http resposne 调用完成后就会结构初始化构造函数时的options里面的相关事件处理了。
发送消息 sendMsg
接收三个参数 http request 和 http resposne 还有响应消息的json数据 data data为可选参数。 如果data存在则使用data中的数据。如果data不存在,则使用request.wego.xml中的数据
#讲消息发送出去。
#注意 data为微信消息xml数据格式 的json类型。 也就是把对应的标签换成相应的json属性即可。
#注意 标签是大写 属性就大写,保持一致。
wego.sendMsg(req, resp, data)