Node.js-微信公共平台消息接口服务中间件

  • c6_251451
    了解作者
  • 2.6MB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-21 08:32
    上传日期
微信公共平台消息接口服务中间件
Node.js-微信公共平台消息接口服务中间件.zip
  • node-webot-wechat-d272cd6
  • figures
  • api.graffle
    138.6KB
  • wechat.graffle
    44.5KB
  • wechat.png
    64.4KB
  • test
  • fixture
  • test.mp3
    74.6KB
  • menu.json
    606B
  • movie.mp4
    2.3MB
  • image.jpg
    74.3KB
  • pic.jpg
    27.7KB
  • get_message.test.js
    898B
  • wechat3.test.js
    12KB
  • parse.test.js
    1.4KB
  • talk.test.js
    5.2KB
  • session.test.js
    3.6KB
  • api_customer.test.js
    2.1KB
  • pay.test.js
    644B
  • list.test2.js
    1.5KB
  • oauth.test.js
    10.8KB
  • support.js
    1.7KB
  • wechat2.test.js
    12KB
  • api_mass_send.test.js
    8.6KB
  • list.test.js
    1.5KB
  • config.js
    101B
  • common.test.js
    25.4KB
  • reply.test.js
    6.9KB
  • wechat.test.js
    9.6KB
  • wechat_nohandle.test.js
    978B
  • lib
  • api_customer.js
    7.4KB
  • api_menu.js
    3.3KB
  • wechat.js
    10.5KB
  • api_pay.js
    3KB
  • api_user.js
    2.5KB
  • api_media.js
    3.3KB
  • api_shop_order.js
    9.2KB
  • api_common.js
    6.1KB
  • api_shop_common.js
    1.3KB
  • api_qrcode.js
    2.7KB
  • session.js
    1.1KB
  • api_shop_shelf.js
    8.1KB
  • api_custom_service.js
    1.5KB
  • api_group.js
    5.1KB
  • api_shop_goods.js
    15.4KB
  • menu.js
    379B
  • api_shop_stock.js
    1.4KB
  • oauth.js
    6.4KB
  • api_feedback.js
    1.2KB
  • list.js
    1.2KB
  • api_shop_group.js
    6.3KB
  • api_shop_express.js
    7.2KB
  • util.js
    826B
  • api_mass_send.js
    10.3KB
  • index.js
    1.4KB
  • README.md
    11.8KB
  • .jshintrc
    655B
  • README.en.md
    10KB
  • .gitignore
    62B
  • MIT-License
    1.1KB
  • package.json
    1.1KB
  • .travis.yml
    77B
  • Makefile
    608B
内容介绍
wechat [![NPM version](https://badge.fury.io/js/wechat.png)](http://badge.fury.io/js/wechat) [![Build Status](https://travis-ci.org/node-webot/wechat.png?branch=master)](https://travis-ci.org/node-webot/wechat) [![Dependencies Status](https://david-dm.org/node-webot/wechat.png)](https://david-dm.org/node-webot/wechat) [![Coverage Status](https://coveralls.io/repos/node-webot/wechat/badge.png)](https://coveralls.io/r/node-webot/wechat) ====== 微信公共平台消息接口服务中间件与API SDK [Wechat document in English](./README.en.md) ## 功能列表 - 自动回复(文本、图片、语音、视频、音乐、图文) - 发送客服消息(文本、图片、语音、视频、音乐、图文) - 菜单操作(查询、创建、删除) - 二维码(创建临时、永久二维码,查看二维码URL) - 分组操作(查询、创建、修改、移动用户到分组) - 用户信息(查询用户基本信息、获取关注者列表) - 媒体文件(上传、获取) - 等待回复(用于调查问卷、问答等场景) - 会话支持(创新功能) - OAuth API(授权、获取基本信息) - 群发消息(文本、图片、语音、视频、图文) - 客服记录 - 群发消息 - 公众号支付(发货通知、订单查询) - 微信小店(商品管理、库存管理、邮费模板管理、分组管理、货架管理、订单管理、功能接口) 详细参见[API文档](http://node-webot.github.io/wechat/api.html) ## Installation ``` npm install wechat ``` ## Use with Connect/Express ``` var wechat = require('wechat'); app.use(connect.query()); // Or app.use(express.query()); app.use('/wechat', wechat('some token', function (req, res, next) { // 微信输入信息都在req.weixin上 var message = req.weixin; if (message.FromUserName === 'diaosi') { // 回复屌丝(普通回复) res.reply('hehe'); } else if (message.FromUserName === 'text') { //你也可以这样回复text类型的信息 res.reply({ content: 'text object', type: 'text' }); } else if (message.FromUserName === 'hehe') { // 回复一段音乐 res.reply({ type: "music", content: { title: "来段音乐吧", description: "一无所有", musicUrl: "http://mp3.com/xx.mp3", hqMusicUrl: "http://mp3.com/xx.mp3" } }); } else { // 回复高富帅(图文回复) res.reply([ { title: '你来我家接我吧', description: '这是女神与高富帅之间的对话', picurl: 'http://nodeapi.cloudfoundry.com/qrcode.jpg', url: 'http://nodeapi.cloudfoundry.com/' } ]); } })); ``` 备注:token在[微信平台上申请](http://mp.weixin.qq.com/cgi-bin/callbackprofile?type=info&t=wxm-developer-ahead&lang=zh_CN) ### 回复消息 当用户发送消息到微信公众账号,自动回复一条消息。这条消息可以是文本、图片、语音、视频、音乐、图文。详见:[官方文档](http://mp.weixin.qq.com/wiki/index.php?title=发送被动响应消息) #### 回复文本 ``` res.reply('Hello world!'); // 或者 res.reply({type: "text", content: 'Hello world!'}); ``` #### 回复图片 ``` res.reply({ type: "image", content: { mediaId: 'mediaId' } }); ``` #### 回复语音 ``` res.reply({ type: "voice", content: { mediaId: 'mediaId' } }); ``` #### 回复视频 ``` res.reply({ type: "video", content: { mediaId: 'mediaId', thumbMediaId: 'thumbMediaId' } }); ``` #### 回复音乐 ``` res.reply({ title: "来段音乐吧", description: "一无所有", musicUrl: "http://mp3.com/xx.mp3", hqMusicUrl: "http://mp3.com/xx.mp3" }); ``` #### 回复图文 ``` res.reply([ { title: '你来我家接我吧', description: '这是女神与高富帅之间的对话', picurl: 'http://nodeapi.cloudfoundry.com/qrcode.jpg', url: 'http://nodeapi.cloudfoundry.com/' } ]); ``` ### WXSession支持 由于公共平台应用的客户端实际上是微信,所以采用传统的Cookie来实现会话并不现实,为此中间件模块在openid的基础上添加了Session支持。一旦服务端启用了`connect.session`中间件,在业务中就可以访问`req.wxsession`属性。这个属性与`req.session`行为类似。 ``` app.use(connect.cookieParser()); app.use(connect.session({secret: 'keyboard cat', cookie: {maxAge: 60000}})); app.use('/wechat', wechat('some token', wechat.text(function (info, req, res, next) { if (info.Content === '=') { var exp = req.wxsession.text.join(''); req.wxsession.text = ''; res.reply(exp); } else { req.wxsession.text = req.wxsession.text || []; req.wxsession.text.push(info.Content); res.reply('收到' + info.Content); } }))); ``` `req.wxsession`与`req.session`采用相同的存储引擎,这意味着如果采用redis作为存储,这样`wxsession`可以实现跨进程共享。 ### 等待回复 等待回复,类似于电话拨号业务。该功能在WXSession的基础上提供。需要为等待回复预置操作,中间件将其抽象为`List`对象,在提供服务前需要添加服务。 ``` var List = require('wechat').List; List.add('view', [ ['回复{a}查看我的性别', function (info, req, res) { res.reply('我是个妹纸哟'); }], ['回复{b}查看我的年龄', function (info, req, res) { res.reply('我今年18岁'); }], ['回复{c}查看我的性取向', '这样的事情怎么好意思告诉你啦- -'] ]); ``` 然后在业务中触发等待回复事务,如下示例,当收到用户发送`list`后,调用`res.wait('view')`进入事务`view`中。 ``` var app = connect(); app.use(connect.query()); app.use(connect.cookieParser()); app.use(connect.session({secret: 'keyboard cat', cookie: {maxAge: 60000}})); app.use('/wechat', wechat('some token', wechat.text(function (info, req, res, next) { if (info.Content === 'list') { res.wait('view'); } else { res.reply('hehe'); // 或者中断等待回复事务 // res.nowait('hehe'); } }))); ``` 用户将收到如下回复: ``` 回复a查看我的性别 回复b查看我的年龄 回复c查看我的性取向 ``` 用户回复其中的`a`、`b`、`c`将会由注册的方法接管回复。回复可以是一个函数,也可以是一个字符串: ``` List.add('view', [ ['回复{a}查看我的性别', function (info, req, res, next) { res.reply('我是个妹纸哟'); }], // 或者字符串 ['回复{c}查看我的性取向', '这样的事情怎么好意思告诉你啦- -'] ]); ``` 如果用户触发等待回复事务后,没有按照`{}`中的进行回复,那么将会由原有的默认函数进行处理。在原有函数中,可以选择调用`res.nowait()`中断事务。`nowait()`除了能中断事务外,与`reply`的行为一致。 ## Show cases ### Node.js API自动回复 ![Node.js API自动回复机器人](http://nodeapi.diveintonode.org/assets/qrcode.jpg) 欢迎关注。 代码:<https://github.com/JacksonTian/api-doc-service> 你可以在[CloudFoundry](http://www.cloudfoundry.com/)、[appfog](https://www.appfog.com/)、[BAE](http://developer.baidu.com/wiki/index.php?title=docs/cplat/rt/node.js)等搭建自己的机器人。 ## 详细API 原始API文档请参见:[消息接口指南](http://mp.weixin.qq.com/wiki/index.php?title=消息接口指南)。 目前微信公共平台能接收到7种内容:文字、图片、音频、视频、位置、链接、事件。支持6种回复:纯文本、图文、音乐、音频、图片、视频。 针对目前的业务形态,发布了0.6.x版本,该版本支持六种内容分别处理,以保持业务逻辑的简洁性。 ``` app.use('/wechat', wechat('some token', wechat.text(function (message, req, res, next) { // message为文本内容 // { ToUserName: 'gh_d3e07d51b513', // FromUserName: 'oPKu7jgOibOA-De4u8J2RuNKpZRw', // CreateTime: '1359125035', // MsgType: 'text', // Content: 'http', // MsgId: '
评论
    相关推荐