微信公众平台消息接口服务中间件
升级注意事项
支持 Koa2
如果仍然使用 Koa1,请使用co-wechat@1.x。
middleware 方法变更
middleware() 方法接受一个 async function 作为参数。
app;
上下文与返回值变更
现在的上下文不再是原始的 请求上下文,而仅仅是 message 对象。
业务的返回值现在直接返回即可,无需关注上下文。比如:
async { return 'Hello world!';}
取消 session 的支持
不再支持 session 的功能。如需使用 session 功能,建议使用 redis 自行处理逻辑,取 message.FromUserName 作为 key,取一个合适的 ttl 时间即可。
功能列表
- 自动回复(文本、图片、语音、视频、音乐、图文)
Installation
$ npm install co-wechat
Use with koa2
const wechat = ; const config = token: 'THE TOKEN' appid: 'THE APPID' encodingAESKey: 'THE ENCODING AES KEY'; app;
备注:token 在微信平台的开发者中心申请
微信公众平台接口调试工具调试)
开启调试模式(用于//构造函数的第二个函数isDebug参数,为true或别的正值时表示开启,推荐用配置或是环境变量的方式传参
配置成debug模式后,用微信公众平台接口调试工具发送POST请求(比如消息接口调试-文本消息)时返回结果不会提示Invalid signature
回复消息
当用户发送消息到微信公众账号,自动回复一条消息。这条消息可以是文本、图片、语音、视频、音乐、图文。详见:官方文档
回复文本
async { return 'Hello world!';}// 或者async { return type: "text" content: 'Hello world!';}
回复图片
async { return type: "image" content: mediaId: 'mediaId' ;}
回复语音
async { return type: "voice" content: mediaId: 'mediaId' ;}
回复视频
async { return type: "video" content: mediaId: 'mediaId' thumbMediaId: 'thumbMediaId' ;}
回复音乐
async { return title: "来段音乐吧" description: "一无所有" musicUrl: "http://mp3.com/xx.mp3" hqMusicUrl: "http://mp3.com/xx.mp3" ;}
回复图文
async { return title: '你来我家接我吧' description: '这是女神与高富帅之间的对话' picurl: 'http://nodeapi.cloudfoundry.com/qrcode.jpg' url: 'http://nodeapi.cloudfoundry.com/' ;}
回复空串
async { return '';}
转发到客服接口
async { return type: "customerService" kfAccount: "test1@test" //可选 ;}
集成到 Egg.js
路由设置
// app/router.js'use strict'; module { // 将 get/post 请求都转给 home.wechat appall'/' 'home.wechat';};
控制器
'use strict'; const wechat = ; module { Controller {} // 因为 Egg 需要用类的形式来组织,而 wechat 是通过 middleware 方法来生成中间件 HomeControllerprototypewechat = ; return HomeController;};
相同路由支持多账号
// app/router.js'use strict'; module { // 将 get/post 请求都转给 home.wechat appall'/wechat/:appid' 'home.prehandle' 'home.wechat';};
在前置中间件中预先设置 ctx.wx_token 或 ctx.wx_cryptor:
'use strict'; const WXBizMsgCrypt = ;const wechat = ; module { Controller async { const appid = ctxparamsappid; const token = ; ctxwx_token = token // 或者 const encodingAESKey = ; ctxwx_cryptor = token encodingAESKey appid; await ; } HomeControllerprototypewechat = ; return HomeController;};
注意,上述的 getTokenByAppid 和 getEncodingAESKeyByAppid 方法根据自己情况请自行提供。
Show cases
Node.js API 自动回复
欢迎关注。
代码:https://github.com/JacksonTian/api-doc-service
你可以在CloudFoundry、appfog、BAE等搭建自己的机器人。
详细API
原始API文档请参见:消息接口指南。
交流群
QQ群:157964097,使用疑问,开发,贡献代码请加群。
捐赠
如果您觉得Wechat对您有帮助,欢迎请作者一杯咖啡
License
The MIT license.
Contributors
project : co-wechat
repo age : 3 years, 1 month
active : 21 days
commits : 59
files : 10
authors :
46 Jackson Tian 78.0%
6 ifeiteng 10.2%
3 lixiaojun 5.1%
2 Andrew Lyu 3.4%
1 Jealee3000 1.7%
1 fancyoung 1.7%