# koa2-wechat2

**Badges** 

Optional badges such as npm version, test and build coverage, and so on.

**Summary** 

Koa2Wechat2 use koa2 middleware async function for wechat

## Overview

koa2Wechat2 provide two method **getWechat()** for wechatApi , and **weReply()** for wechat auto Reply logic

## Installation

```
$ npm install koa2-wechat2 --save
```

## Basic use

if we only want to get wechat auto reply, then
```js
import Koa from 'koa'
import {weReply} from 'koa2-wechat2'

const app = new Koa()
//opts see below
app.use(weReply(opts))

```


## API 

the following methods both have a opts parameter
```js
let opts {
  appID:'xx',
  appSecret:'xx',
  token:'eid'
}
```

- ``weReply(opts, handler)`` : if handler undefined then use default reply handler, you can provide your own reply logic, example below, more details [reply.js](/src/wx/reply.js):

```js
let handler = async (ctx, next) => {
  //ctx.wexin is wechat server post content to your node server
  let message = ctx.weixin
  let reply
   if (message.MsgType === 'event') {
    if (message.Event === 'subscribe') {
      if (message.EventKey) {
        console.log(`qrcode: ${message.EventKey} ${message.ticket}` )
      }
      reply ='haha , you subscribed\n' 
    } else if (message.Event === 'unsubscribe') {
      console.log('unsubscribe')
      reply = 'unsubscribe'
    }
  } else if (message.MsgType === 'voice') {
      let voiceText = message.Recognition
      reply = `you says: ${voiceText}`
  } else if (message.MsgType === 'text') {
      // this handle your input text logic
    } else {
      reply = 'empty msg'
    }

    ctx.body = reply
    await next()
}

```

- ``getWechat(opts)`` : returned wechatApi with promisify method, ex:

```js
import {getWechat} from 'koa2-wechat2'

//opts above: appId, Secret, token
let wechatApi = getWechat(opts)
```

## Tests

```sh
npm test
```

## License

MIT