详解nodejs微信公众号开发——4.自动回复各种消息


Posted in NodeJs onApril 11, 2017

上一篇文章:nodejs微信公众号开发——3.封装消息响应模块,实现了对消息接口的模块化处理,方便后期的使用,本篇文章将介绍微信公众号回复各种消息的功能实现,包括文本、图片、语音、视频、音乐、图文等。

:感觉最近localtunnel很不稳定,测试起来比较麻烦,有条件的自己搞个云服务器吧,我比较偷懒,几继续使用localtunnel了。

1. 被动回复用户消息

当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构,来对该消息进行响应(现支持回复文本、图片、图文、语音、视频、音乐)。发送被动响应消息是对微信服务器发过来消息的一次回复。

开发过程中如果遇到该公众号暂时无法提供服务,请稍后再试的情况,一般是由两个原因造成的:

  1. 开发者在5秒内未回复任何内容
  2. 开发者回复的数据异常,非xml格式,比如JSON数据

具体的消息规则可参看微信平台开发者文档:被动回复用户消息

2. 回复消息的实现

我们之前的关注自动回复是在weixin.js里面实现的,其他的消息回复也写在这个文件里面:

if(message.MsgType === 'event'){
  if(message.Event === 'subscribe'){
    if(message.EventKey) {
      console.log('扫描二维码关注:'+ message.EventKey +' '+ message.ticket);
    }
    this.body = '终于等到你,还好我没放弃';
  }else if(message.Event === 'unsubscribe'){
    this.body = '';
    console.log(message.FromUserName + ' 悄悄地走了...');
  }else if(message.Event === 'LOCATION'){
    this.body = '您上报的地理位置是:'+ message.Latitude + ',' + message.Longitude;
  }else if(message.Event === 'CLICK'){
    this.body = '您点击了菜单:'+ message.EventKey;
  }else if(message.Event === 'SCAN'){
    this.body = '关注后扫描二维码:'+ message.Ticket;
  }
}
else if(message.MsgType === 'text'){
  var content = message.Content;
  var reply = '你说的话:“' + content + '”,我听不懂呀';
  if(content === '1'){
    reply = '金刚:骷髅岛';
  }
  else if(content === '2'){
    reply = {
      type:'image',
      mediaId:'http://tu.23juqing.com/d/file/html/gndy/dyzz/2017-04-09/da9c7a64ab7df196d08b4b327ef248f2.jpg'
    }
  }
  else if(content === '3'){
    reply = [{
      title:'金刚.骷髅岛',
      description:'南太平洋上的神秘岛屿——骷髅岛。史上最大金刚与邪恶骷髅蜥蜴的较量。',
      picUrl:'http://tu.23juqing.com/d/file/html/gndy/dyzz/2017-04-09/da9c7a64ab7df196d08b4b327ef248f2.jpg',
      url:'http://www.piaohua.com/html/dongzuo/2017/0409/31921.html' //可下载观看喔
    }];
  }

  // ... 其他回复类型

  this.body = reply;
}

测试效果如图:

详解nodejs微信公众号开发——4.自动回复各种消息

3.说明:

发现输入数字2并没有回复相应的图片,是不是很奇怪?我们查看一下文档:

详解nodejs微信公众号开发——4.自动回复各种消息

文档中说明了MediaId属性是通过素材管理接口上传多媒体文件,得到的id,而不是我们直接给的网上图片的url链接。在图文消息中,是可以直接使用url链接的。所以我们下一步的工作就是实现素材管理的接口。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
nodejs实用示例 缩址还原
Dec 28 NodeJs
NodeJS Express框架中处理404页面一个方式
May 28 NodeJs
Ubuntu中搭建Nodejs开发环境过程分享
Jun 01 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
使用 NodeJS+Express 开发服务端的简单介绍
Apr 07 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 #NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 #NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 #NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 #NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 #NodeJs
使用 NodeJS+Express 开发服务端的简单介绍
Apr 07 #NodeJs
初识NodeJS服务端开发入门(Express+MySQL)
Apr 07 #NodeJs
You might like
PHILIPS L4X25T电路分析和打理
2021/03/02 无线电
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
浅析SVN常见问题及解决方法
2013/06/21 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
浅谈php中fopen不能创建中文文件名文件的问题
2017/02/06 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
JavaScript知识点总结之如何提高性能
2016/01/15 Javascript
通用无限极下拉菜单的实现代码
2016/05/31 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
2016/08/03 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
2017/05/22 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
详解Python网络爬虫功能的基本写法
2016/01/28 Python
Python+OpenCV图片局部区域像素值处理详解
2019/01/23 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
2020/03/06 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
夏威夷航空官网:Hawaiian Airlines
2016/09/11 全球购物
马来西亚时装购物网站:ZALORA马来西亚
2017/03/14 全球购物
莫斯科高科技在线商店:KremlinStore
2019/03/13 全球购物
个人评价范文分享
2014/01/11 职场文书
企业元宵节主持词
2014/03/25 职场文书
村班子对照检查材料
2014/08/18 职场文书
2014年最新学校运动会广播稿
2014/09/17 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
2015关于重阳节的演讲稿
2015/03/20 职场文书
2016年离婚协议书范文
2016/03/18 职场文书