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是你申请测试公众号时候填写的tokenappid: '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接入微信后台详细教程

 

转载于:https://www.cnblogs.com/weschen/p/6405436.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/396739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性别有什么用_为啥不让男孩玩布娃娃?别让你的“性别偏见”,给孩子的人生设限...

在养育孩子的过程中,父母总是会犯许多错误,更是有一些错误会直接使孩子毁掉一生,而性别偏见正是很多家长都会去犯的错误,对男孩和女孩有着刻板印象,也正是因为这一点使孩子的潜力和天赋被压制。前几天我带着孩子去逛商…

android的时间代码怎么写,Android 日期和时间的使用实例详解

Android 日期和时间的使用日期和时间的使用;1:弹出框TimePickerDialog,DatePickerDialog2:组件TimePicker,DatePickerTimePickerDialog的使用:通过点击button显示图一,然后用户可以设置时间DatePickerDialog的使用只需…

andriod studio 查看项目依赖_Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图...

Maven 组件界面介绍如上图标注 1 所示,为常用的 Maven 工具栏,其中最常用的有:第一个按钮:Reimport All Maven Projects 表示根据 pom.xml 重新载入项目。一般单我们在 pom.xml 添加了依赖包或是插件的时候,发现标注 4…

Kurento协议

2019独角兽企业重金招聘Python工程师标准>>> Kurento媒体服务器可以被两种外部Kurento客户端控制,如Java或JavaScript。这些客户端使用Kuernto协议来和KMS通信。Kurento 协议是基于WebSocket协议,并使用了JSON-RPC V2.0 消息来提交请求和发送…

升级php7_PhpStorm 2019.3 发布,全面支持 PHP 7.4

PhpStorm 2019.3 发布了,这个版本主要集中在性能和质量上,旨在提供一个更稳定、更快的 IDE。PhpStorm 2019.3 全面支持 PHP 7.4,还带来 PSR-12 代码样式,用于远程解释器的 WSL,MongoDB 支持,HTTP 客户端更新…

ftp 客户端 使用http代理 源码_代理服务器连接HTTPS过程

说到HTTPS代理很多人瞬间就会联想到HTTPS的各种证书和各种加密,觉得很高端很复杂的样子。其实不然,代理服务器不需要配置证书、也不需要处理任何加密。因为HTTPS代理是通过Web隧道(Web tunnel)工作的。Web隧道允许用户通过HTTP连接发送非HTTP流量(例如FT…

python解zuobiaoxi方程_Python还能解决数学相关问题?大学生:以后就靠他了,事半功倍...

问题背景高等数学应用非常广,基本上涉及到函数的地方都要用到微积分,还有在几何方面也是如此,计算机的应用让我们能简单快速处理各种高等数学中的计算,比如极限、导数、积分、微分方程等的计算。实验目的使用 Python 通过计算与作…

基础正则表达式介绍与练习

基础正则表达式介绍与练习 一、什么是正则表达式 在做文字处理或编写程序时,用到查找、替换等功能,使用正则表达式能够简单快捷的完成目标。简单而言,正则表达式通过一些特殊符号的帮助,使用户可以轻松快捷的完成查找、删除、替换…

android canvas 网络图,【巨坑:toDataURL】canvas合成网络图片

不知有没有小伙伴用过canvas合成图片,然后爆炸报错截图尼玛,然后各种搜索,不外乎以下几种坑爹处理方案:后端处理,比如Access-Control-Allow-Origin "*"(要是请求到其他网站的图片就不适用了,比如…

水晶报表如何查看sql_有了这个报表工具,一键生成自定义的各种报表,还可以导出Excel...

EasyReport是一个简单易用的Web报表工具,它的主要功能是把SQL语句查询出的数据转换成报表页面, 同时支持表格的跨行(RowSpan)与跨列(ColSpan)配置。 同时它还支持报表Excel导出、图表显示及固定表头与左边列的功能。功能介绍本工具从数据库(MySQL,Oracle,SQLServer,…

Sitemesh3的使用及配置

1 . Sitemesh 3 简介 Sitemesh 是一个网页布局和修饰的框架,基于 Servlet 中的 Filter,类似于 ASP.NET 中的‘母版页’技术。参考:百度百科,相关类似技术:Apache Tiles。 官网:http://wiki.sitemesh.org/wi…

鸿蒙系统r如何升级,高歌猛进,鸿蒙系统升级机型再次确认,花粉:终等到!...

虽然华为手机现在的压力非常大,但是在前进的道路上,真的充满了乐观精神,而且现在也算是一路高歌猛进了,发展路线开始加快了许多,无论是新机还是系统,都有着非常多的新消息。因为华为手机的实力很强&#xf…

android studio背景模糊_[Android翻译]CameraX:过去、现在和未来的一瞥

CameraX是一个未捆绑的Android Jetpack库,它可以帮助你在Android应用中轻松添加摄像头功能。传统上,由于Android设备种类繁多,编程模型复杂,在Android上构建具有相机功能的应用程序非常困难。现在成千上万的开发者都在使用CameraX…

export function函数传参_04 js高阶函数(惰性函数、柯里化函数、compose函数)和单例设计模式...

高阶函数的定义在《javascript设计模式和开发实践》中是这样定义的。函数可以作为参数被传递;函数可以作为返回值输出。结合这两个特点,首先想到的肯定是回调函数,回调函数也是高阶函数的一种,除了回调函数,还有很多的…

mysql相关命令操作

2019独角兽企业重金招聘Python工程师标准>>> 远程连接容器中的mysql:mysql -h 192.168.5.116 -P 3306 -u root -p123456 启动mysql容器: $ sudo docker pull mysql:5.6.35 $ sudo docker run --name mysql -p 12345:3306 -e MYSQL_ROOT_PASSW…

html实体注册商标,html 注册商标,html 注册商标代码

html中注册的页面用什么标签写好对于html中的注册页面,策朋专业办理商标注册、专利申请、版权登记保护,需要一个表格。使用标签,输入和按钮标签来组合成就。使用html作为注册页面。实际上,只要您能达到期望的效果,它的…

java已知一个二叉树_#二叉树复习#

#二叉树复习#目录满二叉树完全二叉树平衡二叉树二叉树的主要性质--二叉树的度--二叉树的深度计算二叉树的遍历其他符号变量结点总数深度度为0的结点数/叶子结点数度为1的结点数度为2的结点数什么是满二叉树?二叉树每层的结点数为。满二叉树总结点数:。图…

java 反射机制_基础篇:深入解析JAVA反射机制

反射的概念java 的放射机制:在程序运行时,程序有能力获取一个类的所有方法和属性;并且对于任意一个对象,可以调用它的任意方法或者获取其属性通俗解析:java 文件需要编译成. class 文件才能被 jvm 加载使用, 对象的. c…

html div float center,跨浏览器实现float:center

跨浏览器实现float:center互联网 发布时间:2008-10-17 19:26:11 作者:佚名 我要评论原文:http://www.macji.com/blog/article/to-achieve-cross-browser-css-float-center/to-achieve-cross-browser-css-float-center/我们都知道float…

oracle左连接没用_一周零基础学完Oracle数据库第三天02

四、 多表查询1 什么是多表查询多表查询:当查询的数据并不是来源一个表时,需要使用多表链接操作完成查询。根据 不同表中的数据之间的关系查询相关联的数据。多表链接方式: 内连接:连接两个表,通过相等或不等判断链接列…