用 LeanEngine 开发微信公众号自动回复机器人

随着微信逐渐开放的数据接口,开发者能够设置自定义的服务器地址,微信的服务端会把用户发送给公众号的消息转发到开发者自定义的服务器上,而且开发者能够调用接口进行回复,这就成就了基于微信进行二次开发的可能性。html

把微信和 LeanEngine 的网站托管(Web Hosting)功能结合起来,就能够作一个几乎零成本的微信公众号自动问答机器人。node

场景设定

本文的主要目的是指导开发者使用 LeanEngine 做为微信公众号的回调服务器,所以咱们设定了以下场景:实现一个自动根据用户发送消息作简单回复的机器人 Bob;好比用户发送「你好」,Bob 就会自动回复「您好,你们好才是真的好!」。git

注册微信公众号

微信公众号向我的开放,也就是所谓的自媒体。github

微信控制台设置

登陆到微信后台,截图以下: web

微信的开发选项

左下角找到菜单入口: express

建立项目

在 LeanCloud 控制台中建立一个应用,暂且叫作「Wechat」,在本地建立一个文件夹,如 /usr/leancloud/wechat/,并在该目录下执行下列命令行工具:json

avoscloud newapi

而后进入 LeanCloud 控制台,选择刚才建立的应用 Wechat,再选择 设置 > 应用 Key,找到 App ID 以及 Master Key 并复制。服务器

回到命令行工具,它会要求你输入 App ID 以及 Master Key,输入完成以后,能够看见在 /usr/leancloud/wechat/ 下已经建立了一个 LeanEngine 默认的模板项目,打开app.js 文件。而后访问放在 GitHub 上的 LeanEngine 微信自动问答机器人 项目,打开该项目下的 wechatBot.js文件(建议克隆到本地)。微信

编写代码

添加依赖包

打开package.json文件,替换成以下内容:

{
  "name": "LeanEngine_Weixin_Sample",
  "version": "1.0.0",
  "description": "A sample Weixin server app using LeanEngine",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "keywords": [
    "node",
    "LeanCloud",
    "LeanEngine",
    "express",
    "Weixin"
  ],
  "license": "MIT",
  "dependencies": {
    "async": "^1.5.2",
    "body-parser": "1.12.3",
    "cookie-parser": "^1.3.5",
    "ejs": "2.3.1",
    "express": "4.12.3",
    "leanengine": "^0.4.0",
    "request": "^2.69.0",
    "strformat": "0.0.7",
    "wechat": "^2.0.3",// 
    "wechat-api": "^1.24.0"
  }
}复制代码

wechatBot.js

参照 wechatBot.js 的代码,建议直接复制拷贝全部内容,所有覆盖本地的/usr/leancloud/wechat/routes/wechatBot.js的内容。若是没有该文件,就直接复制到对应的目录下,而后修改关键的配置项。此时须要打开微信公众号管理控制台,进行对应设置。

而后下图是我用来作实验的公众号的设置,描红的部分是个人配置:

// 引用 wechat 库,详细请查看 https://github.com/node-webot/wechat
var wechat = require('wechat');
var config = {
  token: 'weixinDemo',
  appid: '请把微信的 AppID 填写在这里',
  encodingAESKey: '请把微信后台为您生成的 EncodingAESKey 填写在这里'
};复制代码

对应关系以下: 还有须要设置以下选项,把 AppID(应用ID)AppSercet(应用密钥) 填入以下引号中,做为初始化参数:

var WechatAPI = require('wechat-api');
var api = new WechatAPI('请把微信的 AppID 填写在这里',
  '请把微信的 Secret Key 填写在这里');复制代码

app.js

在根目录下的 app.js 须要配置的是两行代码,以下:

'use strict';
...
var wechat = require('./routes/wechatBot'); // 这一段必须拷贝到当前项目中,它是定义了一个路由集合
...复制代码

而后在后面引用定义过的这个路由集合:

// 能够将一类的路由单独保存在一个文件中
app.use('/wechat', wechat);复制代码

微信的配置是实时验证的,假如你的服务器上并无正确的进行验证,是没法配置成功。所以,咱们先部署到 LeanEngine 中,才能在微信这边保存设置。

部署项目

回到LeanCloud 控制台的中 LeanEngine 设置界面 ,找到设置二级域名的地方:

设置域名为:wechatTest.leanapp.cn。而后回到项目目录下,执行以下命令行:

avoscloud deploy复制代码

这个是部署到预备环境,并无真正发布到外网的线上,若是 deploy 成功以后,能够之下以下命令行:

avoscloud publish复制代码

验证配置

此时须要回到微信公众号的控制台,能够点击保存设置,此时,须要把刚才在 LeanEngine 上设置的域名填写在微信的控制台中(本例为:wechatTest.leanapp.cn),验证一下。若是微信控制台提示验证失败,请仔细确认代码中的配置是否与控制台配置一致。

微信内验证

关注本身所注册的微信公众号,打开以后,发送「你好」,看看是否能成功按照代码执行回复指定的内容。 (正确的回复应该是:您好,你们好才是真的好!)

相关文章
相关标签/搜索