Nodejs微信开发
因为使用了Bot Framework开发了一个小功能,它目前支持了Skype\Teams\Slack等,但在国内来讲,微信还是一个比较流行的软件,所以需要接上微信
原来开发Bot的时候使用的是.Net开发的,这次我决定使用Nodejs开发一个简单的后台程序。
说真的,刚开始的时候没有任何经验,刚开始的时候,还是很辛苦的。
一.注册一个微信公众号(我开始的时候注册了一个个人订阅帐号,才发现似乎接口不支持),推荐使用官方的测试平台(http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login),是一个功能完整的测试帐号

二.使用Nodejs开发后台,前提是你的机器已经安装了Nodejs开发环境
如果你本机还未全局安装express,那先使用npm全局安装express
npm install express -g
2.1 选中一个目录,使用express创建一个项目
express WeChat-Bot

这时,在该目录就会产生一个WeChat-Bot的文件夹

2.2在命令行中进入至WeChat-Bot文件夹,安装依赖包(express生成的项目会包含某部分依赖包)并安装wechat
cd WeChat-Bot
npm install
npm install wechat -save

2.3编辑control加入文件wechat.js,并加入代码
var wechat = require('wechat');
var config = {
token: 'weixin',//token是你申请测试公众号时候填写的token
appid: 'wxf6d0ac7f84dc22fb',//appid是申请时,自动生成的,就在最顶部
encodingAESKey: 'ZEtViedarf49EUOCDeu45pqhkZhKPFBjSHI2DynP4vq',
checkSignature: true // 可选,默认为true。由于微信公众平台接口调试工具在明文模式下不发送签名,所以如要使用该测试工具,请将其设置为false
};
//以下开始为获取到微信服务器发送过来的消息,并在此处回复消息
//此处监控的是URL的wechat,那么在配置微信的URL时,也需要在主机URL地址后面加入wechat这样才可以获取到数据
app.use(express.query());
app.use('/wechat', wechat(config, function (req, res, next) {
// 微信输入信息都在req.weixin上
var message = req.weixin;
console.log(message);
if(message.MsgType === 'text')
{
res.reply('这是一个自动回复');
}
else if(message.MsgType === 'voice')
{
}
else if(message.MsgType === 'image')
{
res.reply([
{
title: '文章提示',
description: '返回的是文章',
picurl: 'http://pic002.cnblogs.com/images/2011/159097/2011102917303125.jpg',
url: 'http://doxmate.cool/node-webot/wechat/api.html'
}
]);
}
}));
2.4使用npm运行项目,运行命令后,Nodejs将在本机开发监听3000端口的请求
npm start

三.使用ngrok将本机端口发布至公网



将生成的公网URL复制至公众平台中,为什么在地址后面加入wechat??这是因为Nodejs中,不是监听根目录,而是根目录下的wechat路径,如果监听的是根目录,则在公众号中不需要加入wechat

微信与公众号后台数据交互流程

参考:https://www.npmjs.com/package/wechat wechat包
http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index 微信公众号测试开发平台
http://www.cnblogs.com/xuange306/p/4971702.html 微信后台开发第一步:nodeJS+express接入微信后台详细教程
Nodejs微信开发的更多相关文章
- Nodejs微信开发使用wechat-api回复多条消息
在上一往篇文章<Nodejs微信开发>中,微信后台能够正常的接收到客户端的消息,并能够简单的回复一条消息至客户端. 但我的目录是将微信与Bot Framework进行关联,那么肯定就有一些 ...
- 解析nodejs微信开发-2获取ticket
获取ticket是需要拼接url,url中需要获得的tocken 1.先判断有无tocken:若有则拼接url: 2.请求url: a.处理回调数据,注意时间戳和签名处理方式,此两项并未存到ticke ...
- nodejs微信开发获取token,ticket-1
/* jshint -W079 */ /* jshint -W020 */ "use strict"; var _ = require("lodash"); v ...
- NodeJS微信公众平台开发
微信是手机用户必备的App,微信最开始只是作为社交通讯应用供用户使用,但随着用户量不断的增加,微信的公众号在微信上表现出来了它强大的一面,微信公众平台具有四大优势:1.平台更加稳固:2.用户关系更加平 ...
- nodejs微信公众号快速开发|自定义关键字回复
一点说明: nodejs 微信api 扩展,集成大部分功能. 案例 https://github.com/leiroc/node-wxeasy-example 上传example中文件到服务器 ,然后 ...
- Nodejs微信公众号开发
概览 key value 项目名称 node微信公众号开发 项目描述 使用node编写接口,前后端分离获取签名数据 开发者 leinov 发布日期 2018-11-07 仓库 github地址 安装& ...
- 基于fastweixin的微信开发环境搭建(一)
由于公司业务需要,开发微信版本,才开始接触微信公众平台.在github折腾了几天,试过好几个微信sdk,最终选择fastweixin.个人觉得这个框架还是值得使用的,使用也简单.那么问题来了,很多人想 ...
- oAuth2授权协议 & 微信授权登陆和绑定 & 多环境共用一个微信开发平台回调设置
OAuth2(open Auth)开放授权协议 授权码模式流程: 1.浏览器(客户端)点击一个比如使用微信登陆按钮 2.会跳到认证服务器页面,让用户选择是否授权 3.如果用户点击授权,那么会跳转到开始 ...
- Nodejs微信与Bot framework通过Direct Line连接
背景 最近开发了一个Bot Framework的小工具,能够通过Luis分析出用户输入的文本,对文本中的StyleNo/FabricNo/TrimNo提取出来,并传入另一个小系统进行查询出结果,包括文 ...
随机推荐
- el-upload怎么拿到上传的图片的base64格式
这里只是本地上传,拿图片的base64,并不向后台直接上传,拿到base64后手动上传 上传前效果: 上传后效果: .vue <el-form-item label="礼品封面&quo ...
- BZOJ4651 NOI2016网格(割点)
首先显然可以通过孤立角落里的跳蚤使其不连通,所以只要有解答案就不会大于2.同样显然的一点是当且仅当跳蚤数量<=2且连通时无解.做法其实也很显然了:特判无解,若跳蚤不连通输出0,否则看图中是否无割 ...
- (转载)Hadoop示例程序WordCount详解
最近在学习云计算,研究Haddop框架,费了一整天时间将Hadoop在Linux下完全运行起来,看到官方的map-reduce的demo程序WordCount,仔细研究了一下,算做入门了. 其实Wor ...
- hihocoder 后缀自动机专题
一.后缀自动机基本概念的理解 1.首先后缀自动机的状态是由子串的endpos来决定的 子串的endpos是指一个子串可以在原字符串的哪些位置进行匹配, endpos构成的不同集合划分成不同的状态 关于 ...
- [BZOJ1921] [CTSC2010]珠宝商
Description Input 第一行包含两个整数 N,M,表示城市个数及特征项链的长度. 接下来的N-1 行, 每行两个整数 x,y, 表示城市 x 与城市 y 有直接道路相连.城市由1~N进行 ...
- BZOJ5343 [Ctsc2018]混合果汁 【二分 + 主席树】
题目链接 BZOJ5343 题解 明显要二分一下美味度,然后用尽量少的价格去购买饮料,看看能否买到\(L\)升,然后看看能否控制价格在\(g\)内 尽量少的价格,就优先先选完便宜的饮料,由于询问的是一 ...
- [学习笔记]对未来做出承诺的DP小结
这是一种DP状态设计方法. 有些题,当你必须以一个顺序往后填的话,然而后面的填法会对之前产生影响,那么,不妨在之前就对未来怎么填做出承诺. 通俗的讲,就是对未来打一个表. 然后后面填的时候,直接查表转 ...
- 如何最快地实现 ALTER TABLE
如果您不了解ALTER TABLE的语法,可以先参考: http://dev.mysql.com/doc/refman/5.1/en/alter-table.html 使用ALTER TABLE 可以 ...
- 生产服务器环境最小化安装后Centos 6.5优化配置备忘
生产服务器环境最小化安装后 Centos 6.5优化配置备忘 本文 centos 6.5 优化 的项有18处,列表如下: 1.centos6.5最小化安装后启动网卡 2.ifconfig查询IP进行S ...
- CSS中的块级元素、内联元素(行内元素)
Block element 块级元素 顾名思义就是以块显示的元素,高度宽度都是可以设置的.比如我们常用 的<div>.<p>.<ul>默认状态下都是属于块级元 ...