普通微信用户向公众号发送消息时,微信服务器将受到POST消息并发送到开发者服务器上,开发者编写代码接受微信服务器转发的消息,然后再做出响应即可。

weixin-api是nodejs插件,我们知道微信的消息是有格式的,这个插件可以帮助我们从格式中提取有用的消息。将我们从格式解析的工作中解放出来。

环境:

一台安装了nodejs的服务器

一台已经关注了开发者账号的测试号的手机

1)插件介绍

插件github地址:https://github.com/JeremyWei/weixin_api

weixin-api插件可以做什么:

  • token校验
  • 消息推送:文本消息、图片消息、地理位置消息、链接消息、事件推送、语音消息
  • 消息回复:文本消息、音乐消息、图文消息

2)安装插件weixin-api

在服务器总安装插件

 npm install weixin-api

安装express

npm install express -g
npm install express-generator -g

进入你的项目保存目录,创建项目:express + 项目名

express myweixin

进入项目目录,修改package.json添加对weixin-api和body-parser的依赖

{"name": "application-name","version": "0.0.1","private": true,"scripts": {"start": "node app.js"},"dependencies": {"body-parser": "~1.13.2","express": "~4.13.1","jade": "*","xml2js" : "0.2.6","weixin-api" : ">=0.1.6"}
}

执行

npm install

3)插件的简单使用

进入项目目录

cd myweixin

编辑nodejs文件,我有一个名为app.js的文件,内容如下:

var express = require('express'),weixin = require('weixin-api'),app = express(),bodyParser = require('body-parser');app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
//app.use(xmlBodyParser);// 接入验证
app.get('/', function(req, res) {// 签名成功if (weixin.checkSignature(req)) {res.send(200, req.query.echostr);} else {res.send(200, 'fail');}
});// config
weixin.token = 'xchen';// 监听文本消息
weixin.textMsg(function(msg) {console.log("textMsg received");console.log(JSON.stringify(msg));var resMsg = {};switch (msg.content) {case "你好" :// 返回文本消息resMsg = {fromUserName : msg.toUserName,toUserName : msg.fromUserName,msgType : "text",content : "你好,剧荒了吗?让我来给您推荐一些好看的剧集吧!请输入【美剧推荐】、【日剧推荐】、【韩剧推荐】、【动漫推荐】",funcFlag : 0};break;case "美剧推荐" :// 返回文本消息resMsg = {fromUserName : msg.toUserName,toUserName : msg.fromUserName,msgType : "text",content : "老友记、NCIS、CSI都很好看哦O(∩_∩)O~~",funcFlag : 0};break;  case "日剧推荐" :// 返回文本消息resMsg = {fromUserName : msg.toUserName,toUserName : msg.fromUserName,msgType : "text",content : "那必须是 逃避可耻但有用 新垣结衣倾情出演~此外,还有最新出的东京女子图鉴",funcFlag : 0};break;  case "韩剧推荐" :// 返回文本消息resMsg = {fromUserName : msg.toUserName,toUserName : msg.fromUserName,msgType : "text",content : "太阳的后裔,那年冬天风在吹,浪漫满屋",funcFlag : 0};break; case "动漫推荐" :// 返回文本消息resMsg = {fromUserName : msg.toUserName,toUserName : msg.fromUserName,msgType : "text",content : "男子高中生日常",funcFlag : 0};break; case "音乐" :// 返回音乐消息resMsg = {fromUserName : msg.toUserName,toUserName : msg.fromUserName,msgType : "music",title : "音乐标题",description : "音乐描述",musicUrl : "音乐url",HQMusicUrl : "高质量音乐url",funcFlag : 0};break;case "图文" :var articles = [];articles[0] = {title : "PHP依赖管理工具Composer入门",description : "PHP依赖管理工具Composer入门",picUrl : "http://weizhifeng.net/images/tech/composer.png",url : "http://weizhifeng.net/manage-php-dependency-with-composer.html"};articles[1] = {title : "八月西湖",description : "八月西湖",picUrl : "http://weizhifeng.net/images/poem/bayuexihu.jpg",url : "http://weizhifeng.net/bayuexihu.html"};articles[2] = {title : "「翻译」Redis协议",description : "「翻译」Redis协议",picUrl : "http://weizhifeng.net/images/tech/redis.png",url : "http://weizhifeng.net/redis-protocol.html"};// 返回图文消息resMsg = {fromUserName : msg.toUserName,toUserName : msg.fromUserName,msgType : "news",articles : articles,funcFlag : 0}break;default:// 返回文本消息resMsg = {fromUserName : msg.toUserName,toUserName : msg.fromUserName,msgType : "text",content : "非法输入,请输入【美剧推荐】、【日剧推荐】、【韩剧推荐】、【动漫推荐】",funcFlag : 0};break;}weixin.sendMsg(resMsg);
});// 监听图片消息
weixin.imageMsg(function(msg) {console.log("imageMsg received");console.log(JSON.stringify(msg));
});// 监听语音消息
// weixin.voiceMsg(function(msg) {// console.log("voiceMsg received");// console.log(JSON.stringify(msg));
// });// 监听位置消息
weixin.locationMsg(function(msg) {console.log("locationMsg received");console.log(JSON.stringify(msg));
});// 监听链接消息
weixin.urlMsg(function(msg) {console.log("urlMsg received");console.log(JSON.stringify(msg));
});// 监听事件消息
weixin.eventMsg(function(msg) {console.log("eventMsg received");console.log(JSON.stringify(msg));
});// Start
app.post('/', function(req, res) {// loopweixin.loop(req, res);});app.listen(80);

启动

node app.js

这时候,我们可以在手机的测试号上进行测试了

微信订阅号开发(基于weixin-api自动回复消息)相关推荐

  1. 笔记-微信订阅号开发

    目录 笔记-微信订阅号开发流程 创建菜单 网页授权: js-sdk 笔记-微信订阅号开发流程 创建菜单 先进入:https://mp.weixin.qq.com/ 创建一个小程序订阅号: 订阅号和服务 ...

  2. 微信公众号开发C#系列-7、消息管理-接收事件推送

    1.概述 在微信用户和公众号产生交互的过程中,用户的某些操作会使得微信服务器通过事件推送的形式通知到开发者在开发者中心处设置的服务器地址,从而开发者可以获取到该信息.其中,某些事件推送在发生后,是允许 ...

  3. 微信公众号开发--开通测试号及验证消息来自服务器

    微信公众号开发--开通测试号及验证消息来自服务器 一.服务器配置 1.开通测试号 2.域名申请(ngrok) 2.1.注册 2.2.下载客户端 二.验证消息来自服务器 一.服务器配置 1.开通测试号 ...

  4. 使用Python进行微信公众号开发(三)回复消息

    写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...

  5. 微信订阅号服务器配置url如何配置,微信订阅号开发模式基本配置

    今天学习君尝试了微信订阅号的简单开发  在验证开发者基本配置的时候 遇到了问题 ,不了解微信的规则 ! 查阅开发者文档 也没找到完整,详细 直观的介绍,百度以后终于成功了  在这里总结下 php 开发 ...

  6. 微信订阅号开发模式基本配置

    今天学习君尝试了微信订阅号的简单开发  在验证开发者基本配置的时候 遇到了问题 ,不了解微信的规则 ! 查阅开发者文档 也没找到完整,详细 直观的介绍,百度之后终于成功了  在这里总结下 开发微信订阅 ...

  7. php公众号客服消息图文,微信公众号开发系列-发送客服消息(示例代码)

    下面是做微信公众号开发用到最多的两个客服消息发送类型,文本信息和图文信息. 1.发送文本消息{ "touser":"OPENID", "msgtype ...

  8. 使用Python进行微信公众号开发(二)接收消息

    写在前面 <使用Python进行微信公众号开发>系列文章将与大家分享如何使用Python一步步搭建微信公众号后台服务器. 效果体验 扫码"是雯子吖"公众号进行体验 配置 ...

  9. 微信公众号开发(2)——文本消息、图文消息发送

    接上一讲,微信公众号开发(1)--服务器配置 新建几个信息类: package com.imooc.po;/*** 信息基类* @author lyj**/ public class BaseMess ...

  10. 微信公共号开发教程java版——请求消息,响应消息及事件消息类的封装(三)

    一:封装请求信息 当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上. 各消息类型的推送XML数据包结构如下: 查看官网详细介绍 文本消息<xml&g ...

最新文章

  1. 记一次 javax.xml.soap.SOAPException:
  2. Python 3.2 beta 2 发布
  3. CRM端 equipment hierarchy change成功的标志
  4. PHP 使用 OSS上传文件
  5. UOJ207 共价大爷游长沙
  6. Linux下的xml文件的创建
  7. 程序员日记我们需要有条理的生活
  8. 速修复!NSA 报告四个严重和高危 Exchange Server RCE 漏洞
  9. workbench求解闭合状态尼龙槽环
  10. 微信小程序-区分版本:开发版、体验版和正式版
  11. (译)Xposed Helpers
  12. 正则表达式在工作中的应用
  13. C语言 将一个字符串转换为字符,每两个字符间用空格隔开
  14. java给word增加页码_Java 添加页码到Word文档
  15. Mac 上设置显示器相关参数介绍
  16. 通过jmeter进行用户并发(vu/s)测试
  17. 组装台式计算机的流程,如何组装电脑?组装电脑的操作流程!
  18. 判断一个坐标点是否在不规则多边形内部的算法
  19. 关于资产和负债的理解
  20. 使用python输出1~100之间的质数

热门文章

  1. spring自动装配的3种注解
  2. 我的谷歌音乐播放器简介
  3. turn off x-window
  4. Android系统定制的导航侧边栏
  5. 全面掌握python基础知识,技巧答案这里都有
  6. Weka项目中的ARFF文件结构解析
  7. Maven添加modbus4j的jar包
  8. 2022/08/27 吉软 Vue
  9. Arduino工程源码分析
  10. 橡皮擦的英语_多省停考全国英语等级考试!新的考试要来了!