co-wechat 微信公众平台消息接口服务中间件
微信公众平台消息接口服务中间件
升级注意事项
支持 Koa2
如果仍然使用 Koa1,请使用co-wechat@1.x。
middleware 方法变更
middleware() 方法接受一个 async function 作为参数。
app.use(wechat(config).middleware(async (message, ctx) => {// TODO
}));
上下文与返回值变更
现在的上下文不再是原始的 请求上下文,而仅仅是 message 对象。
业务的返回值现在直接返回即可,无需关注上下文。比如:
async (message, ctx) => {return 'Hello world!';
}
取消 session 的支持
不再支持 session 的功能。如需使用 session 功能,建议使用 redis 自行处理逻辑,取 message.FromUserName 作为 key,取一个合适的 ttl 时间即可。
功能列表
- 自动回复(文本、图片、语音、视频、音乐、图文)
Installation
$ npm install co-wechat
Use with koa2
const wechat = require('co-wechat');const config = {token: 'THE TOKEN',appid: 'THE APPID',encodingAESKey: 'THE ENCODING AES KEY'
};app.use(wechat(config).middleware(async (message, ctx) => {// 微信输入信息就是这个 messageif (message.FromUserName === 'diaosi') {// 回复屌丝(普通回复)return 'hehe';} else if (message.FromUserName === 'text') {//你也可以这样回复text类型的信息return {content: 'text object',type: 'text'};} else if (message.FromUserName === 'hehe') {// 回复一段音乐return {type: "music",content: {title: "来段音乐吧",description: "一无所有",musicUrl: "http://mp3.com/xx.mp3",hqMusicUrl: "http://mp3.com/xx.mp3"}};} else if (message.FromUserName === 'kf') {// 转发到客服接口return {type: "customerService",kfAccount: "test1@test"};} else {// 回复高富帅(图文回复)return [{title: '你来我家接我吧',description: '这是女神与高富帅之间的对话',picurl: 'http://nodeapi.cloudfoundry.com/qrcode.jpg',url: 'http://nodeapi.cloudfoundry.com/'}];}
}));
备注:token 在微信平台的开发者中心申请
开启调试模式(用于微信公众平台接口调试工具调试)
//构造函数的第二个函数isDebug参数,为true或别的正值时表示开启,推荐用配置或是环境变量的方式传参
wechat(config, true)
配置成debug模式后,用微信公众平台接口调试工具发送POST请求(比如消息接口调试-文本消息)时返回结果不会提示Invalid signature
回复消息
当用户发送消息到微信公众账号,自动回复一条消息。这条消息可以是文本、图片、语音、视频、音乐、图文。详见:官方文档
回复文本
async (message, ctx) => {return 'Hello world!';
}
// 或者
async (message, ctx) => {return {type: "text", content: 'Hello world!'};
}
回复图片
async (message, ctx) => {return {type: "image",content: {mediaId: 'mediaId'}};
}
回复语音
async (message, ctx) => {return {type: "voice",content: {mediaId: 'mediaId'}};
}
回复视频
async (message, ctx) => {return {type: "video",content: {mediaId: 'mediaId',thumbMediaId: 'thumbMediaId'}};
}
回复音乐
async (message, ctx) => {return {title: "来段音乐吧",description: "一无所有",musicUrl: "http://mp3.com/xx.mp3",hqMusicUrl: "http://mp3.com/xx.mp3"};
}
回复图文
async (message, ctx) => {return [{title: '你来我家接我吧',description: '这是女神与高富帅之间的对话',picurl: 'http://nodeapi.cloudfoundry.com/qrcode.jpg',url: 'http://nodeapi.cloudfoundry.com/'}];
}
回复空串
async (message, ctx) => {return '';
}
转发到客服接口
async (message, ctx) => {return {type: "customerService",kfAccount: "test1@test" //可选};
}
集成到 Egg.js
路由设置
// app/router.js
'use strict';module.exports = app => {// 将 get/post 请求都转给 home.wechatapp.all('/', 'home.wechat');
};
控制器
'use strict';const wechat = require('co-wechat');module.exports = app => {class HomeController extends app.Controller {}// 因为 Egg 需要用类的形式来组织,而 wechat 是通过 middleware 方法来生成中间件HomeController.prototype.wechat = wechat({token: 'token',appid: 'appid',encodingAESKey: ''}).middleware(async (message, ctx) => {// TODO});return HomeController;
};
相同路由支持多账号
// app/router.js
'use strict';module.exports = app => {// 将 get/post 请求都转给 home.wechatapp.all('/wechat/:appid', 'home.prehandle', 'home.wechat');
};
在前置中间件中预先设置 ctx.wx_token 或 ctx.wx_cryptor:
'use strict';const WXBizMsgCrypt = require('wechat-crypto');
const wechat = require('co-wechat');module.exports = app => {class HomeController extends app.Controller {async prehandle(ctx, next) {const appid = ctx.params.appid;const token = getTokenByAppid(appid);ctx.wx_token = token// 或者const encodingAESKey = getEncodingAESKeyByAppid(appid);ctx.wx_cryptor = new WXBizMsgCrypt(token, encodingAESKey, appid);await next();}}HomeController.prototype.wechat = wechat({// 当有前置中间件设置 ctx.wx_token 和 ctx.wx_cryptor 时,这里配置随意填写// token: 'token',// appid: 'appid',// encodingAESKey: ''}).middleware(async (message, ctx) => {// TODO});return HomeController;
};
注意,上述的 getTokenByAppid 和 getEncodingAESKeyByAppid 方法根据自己情况请自行提供。
欢迎关注。
代码:https://github.com/JacksonTian/api-doc-service
你可以在CloudFoundry、appfog、BAE等搭建自己的机器人。
详细API
原始API文档请参见:消息接口指南。
转自https://github.com/node-webot/co-wechat#readme
co-wechat 微信公众平台消息接口服务中间件相关推荐
- 微信公众平台消息接口开发(1)
原文链接 现在微信很热,微信公众平台的应用也很热,其实微信公众平台消息接口开发并不难,只要有接口调用就OK了. 要开发微信公众平台上的应用,得准备什么呢? 至少要有一个公众账号.服务器.域名这三样东西 ...
- 微信公众平台消息接口星标功能
[微信公众平台星标功能接口被撤销]微信公众平台消息接口中的星标功能,被悄悄的去掉了. 原因应该是有的账号在程序中大量使用星标功能,造成微信服务器存储记录过于宠大. 现在要继续使用星标功能,只能在后台手 ...
- 微信公众平台消息接口开发(13)多语种互译
微信公众平台消息接口 微信公众平台API 微信开发模式 多语种翻译 多语言互译 Microsoft Translator 方倍工作室 Paraphrase API 10 out of 11 rated ...
- 微信公众平台消息接口API指南
下述文档已过期,更加完整及详细的请访问 http://www.cnblogs.com/txw1958/p/wechat-tutorial.html 简介 微信公众平台消息接口为开发者提供了一种新的消 ...
- 微信公众平台消息接口开发(2)-封装weixin.class.php
微信公众平台消息接口开发(2)-封装weixin.class.php 一.封装weixin.class.php 由于微信公众平台的通信使用的是特定格式的XML数据,每次接受和回复都要去做一大堆的数据处 ...
- 微信公众平台消息接口开发(34)微信墙之表白墙/婚礼墙/晚会墙/会议墙/晒单墙/照片墙/历史墙...
微信公众平台开发模式 微信 公众平台 消息接口 开发模式 企业微信公众平台 微信墙 婚礼墙/晚会墙/会议墙/晒单墙/照片墙/历史墙 历史上的今天 作者:方倍工作室 原文: http://www.c ...
- php网站怎么对接微信群,PHP对接微信公众平台消息接口开发流程教程
PHP(外文名:PHP: Hypertext Preprocessor,中文名:"超文本预处理器")是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于学习,使 ...
- php对接微信提醒,PHP对接微信公众平台消息接口开发流程教程
PHP对接微信公众平台消息接口开发流程教程 发布于 2015-02-15 08:54:13 | 157 次阅读 | 评论: 1 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hyperte ...
- php微信公众号怎么开发_PHP对接微信公众平台消息接口开发流程详解及实例
这篇文章主要介绍了PHP对接微信公众平台消息接口开发流程,如何使用PHP版接口操作公众平台消息,需要的朋友可以参考下 一.写好接口程序 在你的服务器上上传好一个接口程序文件内容如下: 代码如下:< ...
- 微信公众平台消息接口使用指南
>>微信公众平台接口申请地址 最近微信开发这个东西炒的很猛,于是dApps考虑提供一些资源. 一 .微信公众平台消息接口简介 公众平台消息接口为开发者提供了一种新的消息处理方式. 二 . ...
最新文章
- cs通信查询mysql数据库_C#访问和操作MYSQL数据库
- 二十三、死锁的处理策略---避免死锁(银行家算法)
- Citrx XenDesktop 7 实施三 配置XenServer
- html制作花样链接卡页面_花样链接卡.html
- 学python最重要的是_基础、语法都不是最重要的,学Python最重要的是什么?编程思路!-站长资讯中心...
- Qt调用动态链接库ControlCAN.dll实例
- 手机技巧:手机用一段时间就发烫,如何解决?
- ElasticSearch优化系列三:索引过程
- 【Flink】Flink开发中遇到的问题及解法
- linux下安装cudnn
- 安卓rom制作教程_安卓手机TWRP_Recovery卡刷图文教程 适用于卡刷ROM,TWRP救砖
- 自定义Java规则 Sonar
- 大奖赛现场统分(哈工大Mooc)
- 更换持续集成工具,从 Travis 到 Github Actions
- UOJ #449.【集训队作业2018】喂鸽子 min-max容斥
- MySQL慢查询,一口从天而降的锅!
- 牛客网刷题——斩获offer
- Class的基本语法
- 【无标题】关于BC25连接电信物联网平台的问题(批量产品在广东连接不到物联网平台,在合肥测试是可以的)
- 北京信息科技大学计算机学院官网,北京信息科技大学教务处官网入口地址
热门文章
- 基于深度信念网络的事件识别
- [每日一氵] openCV drawMatches 函数中 flag 用法
- 详解String的intern方法
- 计算机税率函数,个税计算器2021 - 个人所得税计算器2021 - 个人所得税的Excel函数计算公式整理...
- 好用的邮箱客户端有哪些,办公用什么邮箱客户端呢?
- 企业邮箱哪个比较安全好用?外贸邮箱品牌哪个好用?
- 用python玩转数据前三节_2020中国大学慕课用Python玩转数据题目答案
- html怎么设置章节,奇数页眉设置成章节名 假设此处需要显示的是章对应内容
- 解决MAC系统Big Sur 11无法安装cad注册机无权限 奔溃 闪退问题 AutoCAD 2021 for Mac CAD2021 中文版安装注册激活教程
- 计算机任务管理器恢复默认,我的电脑中的任务管理器怎么打不开了,总是提示的“任务管理器已被系统管理员停用”,请问如何才能使任务管理器恢复正常。...