隨着微信逐漸開放的數據接口,開發者能夠設置自定義的服務器地址,微信的服務端會把用戶發送給公衆號的消息轉發到開發者自定義的服務器上,而且開發者能夠調用接口進行回覆,這就成就了基於微信進行二次開發的可能性。html
把微信和 LeanEngine 的網站託管(Web Hosting)功能結合起來,就能夠作一個幾乎零成本的微信公衆號自動問答機器人。node
本文的主要目的是指導開發者使用 LeanEngine 做爲微信公衆號的回調服務器,所以咱們設定了以下場景:實現一個自動根據用戶發送消息作簡單回覆的機器人 Bob;好比用戶發送「你好」,Bob 就會自動回覆「您好,你們好纔是真的好!」。git
微信公衆號向我的開放,也就是所謂的自媒體。github
登陸到微信後臺,截圖以下: web
左下角找到菜單入口: express
在 LeanCloud 控制檯中建立一個應用,暫且叫作「Wechat」,在本地建立一個文件夾,如 /usr/leancloud/wechat/,並在該目錄下執行下列命令行工具:json
avoscloud new
api
而後進入 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 的代碼,建議直接複製拷貝全部內容,所有覆蓋本地的/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 須要配置的是兩行代碼,以下:
'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
),驗證一下。若是微信控制檯提示驗證失敗,請仔細確認代碼中的配置是否與控制檯配置一致。
關注本身所註冊的微信公衆號,打開以後,發送「你好」,看看是否能成功按照代碼執行回覆指定的內容。 (正確的回覆應該是:您好,你們好纔是真的好!)