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

Nodejs微信开发使用wechat-api回复多条消息的更多相关文章

  1. Nodejs微信开发

    因为使用了Bot Framework开发了一个小功能,它目前支持了Skype\Teams\Slack等,但在国内来讲,微信还是一个比较流行的软件,所以需要接上微信 原来开发Bot的时候使用的是.Net ...

  2. 【微信开发】常用 api

    [微信开发]api 一. 开发文档 二. 调试工具 三. api 1. 获取 token - https://api.weixin.qq.com/cgi-bin/token?grant_type=cl ...

  3. 微信.NET 微信开发 自己主动内容回复 ASP.NET C#代码

    微信开发中,首先遇到的问题就是处理怎样接收和响应用户消息 , 本文将向大家介绍一下方法和关键的代码. 本文使用的接口库是  :https://github.com/chendong152/Weixin ...

  4. nodejs微信开发获取token,ticket-1

    /* jshint -W079 */ /* jshint -W020 */ "use strict"; var _ = require("lodash"); v ...

  5. 解析nodejs微信开发-2获取ticket

    获取ticket是需要拼接url,url中需要获得的tocken 1.先判断有无tocken:若有则拼接url: 2.请求url: a.处理回调数据,注意时间戳和签名处理方式,此两项并未存到ticke ...

  6. java微信开发(wechat4j)——发送客服消息

    微信支持主动发送客服消息.如果你要实现此功能,需要使用CustomerMsg类. 获得access_token access_token请求之后有一个过期时间,微信平台建议你使用一个中控服务器来定时刷 ...

  7. java微信开发API解析(二)-获取消息和回复消息

    java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...

  8. nodejs微信公众号快速开发|自定义关键字回复

    一点说明: nodejs 微信api 扩展,集成大部分功能. 案例 https://github.com/leiroc/node-wxeasy-example 上传example中文件到服务器 ,然后 ...

  9. 记微信开发(有道翻译api)

    记微信开发(有道翻译api) 记微信开发(有道翻译api) 效果: 有道翻译api申请: 地址:http://fanyi.youdao.com/openapi code: <?php/** * ...

随机推荐

  1. JSP表单提交出现中文乱码的解决方法

    1)post方式 在servlet的doGet( )  doPost( )  中增加以下代码: response.setContentType("text/html;charset=utf- ...

  2. AJAX基本演示使用

    Servlet配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="h ...

  3. Impala-1

    Impala相关操作上   阅读目录 序 数据库相关 表相关 系列索引 序 上一篇,我们介绍Impala的介绍及安装.   下面我们开始继续进一步的了解Impala的相关操作. 数据库相关 一:创建 ...

  4. 【bzoj4152】[AMPPZ2014]The Captain 堆优化Dijkstra

    题目描述 给定平面上的n个点,定义(x1,y1)到(x2,y2)的费用为min(|x1-x2|,|y1-y2|),求从1号点走到n号点的最小费用. 输入 第一行包含一个正整数n(2<=n< ...

  5. [bzoj3004] [SDOi2012]吊灯

    Description Alice家里有一盏很大的吊灯.所谓吊灯,就是由很多个灯泡组成.只有一个灯泡是挂在天花板上的,剩下的灯泡都是挂在其他的灯泡上的.也就是说,整个吊灯实际上类似于[b]一棵树[/b ...

  6. JavaScript(二):对象、注释、事件!

    对象 JavaScript的一个重要功能就是面向对象的功能,通过基于对象的程序设计,可以用更直观.模块化和可重复使用的方式进行程序开发. 一组包含数据的属性和对属性中包含数据进行操作的方法,称为对象. ...

  7. JavaScript数组遍历map()的原型扩展

    在 JavaScript 1.6 里,javascript 数组增加了几个非常有用的方法:indexOf.lastIndexOf.every. filter. forEach. map. some,其 ...

  8. 如何在数据访问层上提高js的执行效率

    本文讲到的是如何从数据访问层面上提高JS 代码的执行效率.总的来讲有以下几条原则: 函数中读写局部变量总是最快的,而全局变量的读取则是最慢的: 尽可能地少用with 语句,因为它会增加with 语句以 ...

  9. Codeforces 931.D Peculiar apple-tree

    D. Peculiar apple-tree time limit per test 1 second memory limit per test 256 megabytes input standa ...

  10. (转)Python中实现带Cookie的Http的Post请求

    转自crifan: http://www.crifan.com/python_http_post_request_with_cookie/ . . . .