在上一往篇文章《Nodejs微信開發》中,微信后台能夠正常的接收到客戶端的消息,並能夠簡單的回復一條消息至客戶端。
但我的目錄是將微信與Bot Framework進行關聯,那么肯定就有一些情況是Bot Framework是有多條消息,或是會回復圖片消息的,這個時候只回復一條消息就無法滿足我現在的需求了
可以看到在以下代碼中,我使用wechat進行微信消息的接收,使用wechat-api對用戶進行多次的回復,我就可以解決wechat只能對消息回復一次的問題
簡單來說,wechat只負責接收到消息的回復,從bot framework提取到的消息需要通過wechat-api來進行發送
var wechat = require('wechat'); var wechatAPI = require('wechat-api'); //wechat config var config = { token: 'weixin', appid: 'wx1434eed5268660c4', encodingAESKey: 'ZEtViedarf49EUOCDeu45pqhkZhKPFBjSHI2DynP4vq', checkSignature: true // 可選,默認為true。由於微信公眾平台接口調試工具在明文模式下不發送簽名,所以如要使用該測試工具,請將其設置為false }; //創建wechat-api var api = new wechatAPI(config.appid, '30a5f51682755652e6e02879757a0fb1'); var menu = { "button": [ { "type": "click", "name": "WeChat Bot", "key": "V1001_TODAY_MUSIC" }, { "name": "BotFramework", "sub_button": [ { "type": "view", "name": "botframework", "url": "https://dev.botframework.com/" }, { "type": "click", "name": "贊一下我們", "key": "V1001_GOOD" }, { "name": "發送位置", "type": "location_select", "key": "rselfmenu_2_0" },] }] }; //刪除菜單 api.removeMenu(function (err, result) { if (err) { logger.log('error', err); } logger.log('info', 'remove menu success'); }); //創建菜單 api.createMenu(menu, function (err, result) { if (err) { logger.log('error', err); } logger.log('info', 'create menu success'); }); app.use(express.query()); app.use('/wechat', wechat(config, wechat.text(function (message, req, res, next) { //------------------------------------------------------------------------ var message = req.weixin; logger.log("info", message); res.reply('Message Send To Bot Completed , Wait Response.'); api.sendText(message.FromUserName, 'this message from wechat-api', function (err, result) { if (err) { logger.log('error', err); } logger.log('info', 'reply message success'); }); }).image(function (message, req, res, next) { var message = req.weixin; logger.log("info", message); res.reply('功能開發中'); }).voice(function (message, req, res, next) { var message = req.weixin; logger.log("info", message); res.reply('功能開發中'); }).video(function (message, req, res, next) { var message = req.weixin; logger.log("info", message); res.reply('功能開發中'); }).location(function (message, req, res, next) { var message = req.weixin; logger.log("info", message); res.reply('功能開發中'); }).link(function (message, req, res, next) { var message = req.weixin; logger.log("info", message); res.reply('功能開發中'); }).event(function (message, req, res, next) { var message = req.weixin; logger.log("info", message); res.reply('感謝你的關注,你也可以在nodejs npm中查看wechat和wechat-api'); }).device_text(function (message, req, res, next) { var message = req.weixin; logger.log("info", message); res.reply('功能開發中'); }).device_event(function (message, req, res, next) { if (message.Event === 'subscribe' || message.Event === 'unsubscribe') { var message = req.weixin; logger.log("info", message); res.reply("功能開發中"); } else { var message = req.weixin; logger.log("info", message); res.reply('功能開發中'); } })));
參考:https://www.npmjs.com/package/wechat-api
https://www.npmjs.com/package/wechat
http://mp.weixin.qq.com/wiki/16/52e198333f5c127ddd5c45e875191b14.html