Node.js 微信后台搭建系列 - 微信集成
Updated:
终于基本到了最后的一步了。微信集成主要包含三个部分:
- 接入验证,让微信确认你的服务器,就是你公众号的拥有人。
- 接收微信给你服务器的消息。
- 发送消息给微信服务器,让它转发给你公众号的关注者。
公众号的基本开发,微信的官方文档「入门指南」其实已经基本包含所有必须要知道的知识。但是,它的文档是以 Python 为例子,还有一些比较看起来吓死人的流程图,技术细节,和一些个人号没法开通的功能介绍。所以,这篇教程是侧重于个人公众号如何用 JavaScript 来开发实现。
接入验证
怎么申请微信个人公众号,我就不说了。个人只能申请订阅号。
申请成功后,登录,点击左边菜单栏下面的「开发」->「基本配置」,可以看到如下页面:
先把 开发者ID(AppID)
和 开发者密码(AppSecret)
分别复制出来,保存在一边。令牌(Token)
是自己定的不让别人知道的字符串。下面我们来看看系统里如何配置,接入微信。
打开命令行,进入你的项目目录,然后输入以下命令:
yo evergrow:wechat
它会提醒你是否要覆盖 package.json
文件,你可以输入 d
,按 Enter
看有什么变动。其实只是新加一些必要的包,所以你输入 Y
,然后覆盖就可以了。正常的话,操作后会如下图那样,新生成几个微信相关的文件。
打开 config/wechat/sample.js
文件,内容如下:
1 | module.exports = { |
你要做的是,复制 sample.js
文件,重命名为 production.js
,然后把前面保存的 开发者ID(AppID)
和 开发者密码(AppSecret)
分别赋值给 appId
和 appSecret
。appToken
不用理会。appToken 和 appSecret 可不要让别人知道!以我的为例:
1 | module.exports = { |
设置完了以后,你就可以部署到服务器上面了。
确定你的服务器已经启动后,你就可以在微信「启用」你的服务器了。服务器的 URL 就填你的服务器地址(或 IP),加上我们微信集成模块的路由 /wechat
,比如: http://www.mydomain.com/wechat/
。
接收消息
启用后大概要过三五分钟可能才会生效。然后,如果你发一段文字给你的公众号,你的服务器会打印出接受到的消息内容。
文字消息
1 | { |
关注公众号的消息
1 | { |
图片消息
1 | { |
发送消息
知道了上面几大类型的消息格式,我们就可以做一些东西了。
微信消息的接收和处理,都在 wechat/wechat-controller.js
里面的 wechatMsg
方法里处理就可以了。它默认生成的代码是这样的:
1 | module.exports.wechatMsg = WechatManager.getWechatRouter(function(req, res, next) { |
关注自动回复
如果要在用户关注后自动回复,我们可以在上面的方法里加如下的代码:
1 | module.exports.wechatMsg = WechatManager.getWechatRouter(function(req, res, next) { |
因为启用自己的服务器后,自定义菜单功能就没有了,我只能在关注自动回复加链接去我的历史文章页了(哭)。
回复用户发来的图片
如果我们想直接把用户发给我们的图片回复回去,我们可以这样做:
1 | module.exports.wechatMsg = WechatManager.getWechatRouter(function(req, res, next) { |
有了这些基础,你可以按自己的需求,来实现其它自动回复的功能。下一章我们再看如何结合之前的系统,随机抽取系统接收的其它用户发来的图片,而不是返回自己当前发来图片。