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
Nodejs微信开发使用wechat-api回复多条消息的更多相关文章
- Nodejs微信开发
因为使用了Bot Framework开发了一个小功能,它目前支持了Skype\Teams\Slack等,但在国内来讲,微信还是一个比较流行的软件,所以需要接上微信 原来开发Bot的时候使用的是.Net ...
- 【微信开发】常用 api
[微信开发]api 一. 开发文档 二. 调试工具 三. api 1. 获取 token - https://api.weixin.qq.com/cgi-bin/token?grant_type=cl ...
- 微信.NET 微信开发 自己主动内容回复 ASP.NET C#代码
微信开发中,首先遇到的问题就是处理怎样接收和响应用户消息 , 本文将向大家介绍一下方法和关键的代码. 本文使用的接口库是 :https://github.com/chendong152/Weixin ...
- nodejs微信开发获取token,ticket-1
/* jshint -W079 */ /* jshint -W020 */ "use strict"; var _ = require("lodash"); v ...
- 解析nodejs微信开发-2获取ticket
获取ticket是需要拼接url,url中需要获得的tocken 1.先判断有无tocken:若有则拼接url: 2.请求url: a.处理回调数据,注意时间戳和签名处理方式,此两项并未存到ticke ...
- java微信开发(wechat4j)——发送客服消息
微信支持主动发送客服消息.如果你要实现此功能,需要使用CustomerMsg类. 获得access_token access_token请求之后有一个过期时间,微信平台建议你使用一个中控服务器来定时刷 ...
- java微信开发API解析(二)-获取消息和回复消息
java微信开发API解析(二)-获取消息和回复消息 说明 * 本演示样例依据微信开发文档:http://mp.weixin.qq.com/wiki/home/index.html最新版(4/3/20 ...
- nodejs微信公众号快速开发|自定义关键字回复
一点说明: nodejs 微信api 扩展,集成大部分功能. 案例 https://github.com/leiroc/node-wxeasy-example 上传example中文件到服务器 ,然后 ...
- 记微信开发(有道翻译api)
记微信开发(有道翻译api) 记微信开发(有道翻译api) 效果: 有道翻译api申请: 地址:http://fanyi.youdao.com/openapi code: <?php/** * ...
随机推荐
- 安装elasticsearch-1.7.1及中文IK和近义词配置
安装elasticsearch及中文IK和近义词配置 https://www.cnblogs.com/yjf512/p/4789239.html 安装elasticsearch及中文IK和近义词配置 ...
- Beats数据采集
Beats数据采集 Beats是elastic公司的一款轻量级数据采集产品,它包含了几个子产品: packetbeat(用于监控网络流量). filebeat(用于监听日志数据,可以替代logstas ...
- dnsmasq-2.48没有ipset特性,安装dnsmasq-2.71来支持ipset
iptables只能根据ip地址进行转发,不能识别域名,而dnsmasq-full不仅可以实现域名-IP的映射,还可以把这个映射关系存储在ipset中,所以使用dnsmasq+ipset就可以实现ip ...
- GDI绘图中的映射模式CDC::SetMapMode()
原文链接:http://blog.csdn.net/charlessimonyi/article/details/8264572 在GDI绘图前,一般要设置映射模式.映射模式是什么呢?它是逻辑长度单位 ...
- [Leetcode] Interger to roman 整数转成罗马数字
Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 t ...
- 【BZOJ 2957】楼房重建&&Codechef COT5 Count on a Treap&&【NOIP模拟赛】Weed 线段树的分治维护
线段树是一种作用于静态区间上的数据结构,可以高效查询连续区间和单点,类似于一种静态的分治.他最迷人的地方在于“lazy标记”,对于lazy标记一般随我们从父区间进入子区间而下传,最终给到叶子节点,但还 ...
- [NOIP2003] 传染病控制 搜索+剪枝
搜索的最广泛应用优化——剪枝 这道题的dp和贪心都是无正确性的,所以,搜~~~~~~~ 搜的时候你发现不剪枝极容易被卡掉(然而良心NOIP没有这么做,不剪枝仍然飞快),所以我们需要一些玄学的剪枝最常见 ...
- [COGS 622] [NOIP2011] 玛雅游戏 模拟
整个模拟的关键除了打出来就是一个剪枝:对于两个左右相邻的块你不用再走←,因为走→是等效的 #include<cstdio> #include<cstring> #include ...
- [codechef MEXDIV]Mex division
题目链接:https://vjudge.net/contest/171650#problem/I 直接用set+dp水过去了... /* 设dp[i]表示前i个做划分满足条件的方案数 有一个显然的转移 ...
- fastjson解析服务端返回的数据
1.配置依赖 //fastjson api 'com.alibaba:fastjson:1.2.44' 2.设计服务端返回的数据 {},{},{}]} 3.编写bean类,特别注意,要和服务端返回的类 ...