详解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分页类代码分享
Jun 17 NodeJs
NodeJS使用jQuery选择器操作DOM
Feb 13 NodeJs
nodejs中使用HTTP分块响应和定时器示例代码
Mar 19 NodeJs
angular2+nodejs实现图片上传功能
Mar 27 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
在NodeJs中使用node-schedule增加定时器任务的方法
Jun 08 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 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
php模拟socket一次连接,多次发送数据的实现代码
2011/07/26 PHP
PHP常用的文件操作函数经典收藏
2013/04/02 PHP
那些年我们错过的魔术方法(Magic Methods)
2014/01/14 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
2014/06/26 PHP
中高级PHP程序员应该掌握哪些技术?
2016/09/23 PHP
PHP使用GD库输出汉字的方法【测试可用】
2016/11/10 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
AngularJS上拉加载问题解决方法
2016/05/23 Javascript
Vuejs第七篇之Vuejs过渡动画案例全面解析
2016/09/05 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
js+html5生成自动排列对话框实例
2017/10/09 Javascript
js生成word中图片处理方法
2018/01/06 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
python3使用tkinter实现ui界面简单实例
2014/01/10 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
Python matplotlib绘制饼状图功能示例
2019/09/10 Python
Python如何绘制日历图和热力图
2020/08/07 Python
CSS3 选择器 基本选择器介绍
2012/01/21 HTML / CSS
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
物流管理应届生求职信
2013/11/07 职场文书
篮球比赛策划方案
2014/06/05 职场文书
节约用电标语
2014/06/17 职场文书
初二学生评语大全
2014/12/26 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
金秋助学感谢信
2015/01/21 职场文书
学生会任命书范本
2015/09/21 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS