node package manager

wechat-yoo

wechat-yoo tnpm JavaScript Style Guide

本模块的特点:

  • 被动回复信息
  • 按特定列表回复
  • SESSION支持

安装模块:

$ npm install wechat-yoo

使用说明:

  1. 仅支持 Koa@2 版本
  2. 代码不精,仅作练手用,希望多多指导
  3. 若使用 Nodejs 7.0 以下版本,请自行使用 babel 模块
  4. Nodejs 7.0 以上版本可使用下面的代码启动服务器
    $ node --harmony index

使用方法:

快速开始
var wechatYoo = require('wechat-yoo')
var Koa = require('koa')
 
var yoo = wechatYoo('你的Token')
yoo.default(async reply => {
  reply({text: '欢迎使用WeChatYoo!'})
})
 
var app = new Koa()
 
app.use(yoo).listen(3000)
创建参数
wechatYoo({
  token: '你的Token',
  timeout: true, // 启用超时,当4500毫秒没反应后自动回复success 
  session: false, // 关闭SESSION功能 
  wait: true, // 启用列表回复功能 
  key: '你的EncodinAESKey',
  appid: '你的Appid'
})
设置监听器与回复不同类型的信息
yoo.text(async (reply, data) => {
 
  // 可选参数在微信开发文档上标明 
  // data是发送的数据,也按文档说明 
  // 比如文本信息为 data.Content[0] 
 
  reply({text: '回复的文本'}) // 文本 
  reply({
    type: 'image', // 图片 
    id: '媒体ID'
  })
  reply({
    type: 'voice', // 录音 
    id: '媒体ID'
  })
  reply({
    type: 'video', // 视频 
    id: '媒体ID',
    title: '标题',
    description: '描述'
  })
  reply({
    type: 'music', // 音乐 
    id: '媒体ID',
    title: '标题',
    description: '描述'
    url: '链接',
    hqUrl: '高清链接'
  })
  reply({
    type: 'news', // 图文,data是数组 
    data: [{
      title: '标题',
      description: '描述'
      url: '跳转链接',
      picUrl: '图片链接'
    }]
  })
  reply({
    type: 'customerService', // 转移到多客服 
    account: '客服账户'
  })
}).default(async (reply, data, args) => {
  // 某个事件没有监听器时触发 
  var [type, session] = args
  /* type: 若为监听器,则为监听器类型
     session: SESSION对象 */
}).image(async (reply, data) => {})
  .subscribe(async (reply, data) => {})
 
  // 以下是全部监听器 
  /* "types": [
    "text", // 收到文本
    "image", // 收到图片
    "voice", // 收到语音
    "video", // 收到视频
    "shortvideo", // 收到短视频
    "location", // 收到位置
    "link" // 收到链接
  ],
  "type": [
    "subscribe", // 收到关注事件
    "unsubscribe", // 收到取消关注事件
    "scan", // 收到扫描二维码事件
    "location", // 收到位置发送事件
    "click", // 收到菜单被点击事件
    "view", // 收到菜单跳转事件
    "shakearoundusershake", // 收到摇一摇事件
    // 以下是 扫一扫事件推送 的事件
    "user_scan_product", // 收到打开商品主页事件
    "user_scan_product_enter_session", // 收到进入公众号事件
    "user_scan_product_async" // 收到地理位置信息异步推送事件
  ] */
SESSION

由于需要koa-generic-session中间件,所以请使用以下的方法进行编写代码

安装模块:

$ npm install koa-convert
$ npm install koa-generic-session

使用代码:

var wechatYoo = require('wechat-yoo')
var Koa = require('koa')
var convert = require('koa-convert')
var session = require('koa-generic-session')
 
var yoo = wechatYoo('123456')
yoo.text(async (reply, data, session) => {
  reply({text: `你上次发送的信息是: ${session.text || ''}`})
  session.text = data.Content[0]
})
 
var app = new Koa()
app.keys = ['wechat']
 
// 需要先加载koa-generic-session中间件 
app.use(convert(session(app))).use(yoo).listen(3000)
按特定列表回复,使用的话可能会对性能产生影响

需要在开启SESSION的情况下使用

var wechatYoo = require('wechat-yoo')
var Koa = require('koa')
var convert = require('koa-convert')
var session = require('koa-generic-session')
 
var yoo = wechatYoo({
  token: '123456',
  wait: true
})
yoo.text(async (reply, data, session) => {
  reply({text: `欢迎!`})
  if (!session._wait || session._wait.length < 1) {
    reply.wait({
      text: '你好吗',
      reply: {text: '你好'}
    }).wait({
      text: '我好',
      reply: {text: '大家好'}
    }).wait({
      text: '才是',
      reply: {text: '真的好'}
    })
  }
})
 
var app = new Koa()
app.keys = ['wechat']
 
app.use(convert(session(app))).use(yoo).listen(3000)

感谢

协议

MIT License