Nodejs微信開發使用wechat-api回復多條消息


在上一往篇文章《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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM