详解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异步回调的优雅处理方法
Sep 25 NodeJs
NodeJs中的VM模块详解
May 06 NodeJs
NodeJs读取JSON文件格式化时的注意事项
Sep 25 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
NodeJs的fs读写删除移动监听
Apr 28 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 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 5.4 你必须要知道的
2013/08/07 PHP
PHP的简单跳转提示的实现详解
2019/03/14 PHP
js parentElement和offsetParent之间的区别
2010/03/23 Javascript
javascript 折半查找字符在数组中的位置(有序列表)
2010/12/09 Javascript
js的一些常用方法小结
2011/06/29 Javascript
JavaScript获取网页中第一个链接ID的方法
2015/04/03 Javascript
js基于myFocus实现轮播图效果
2017/02/14 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
详解swiper在vue中的应用(以3.0为例)
2018/09/20 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
Python while 循环使用的简单实例
2016/06/08 Python
python中常用的九种预处理方法分享
2016/09/11 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
python实现本地批量ping多个IP的方法示例
2019/08/07 Python
基于Python实现剪切板实时监控方法解析
2019/09/11 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
2020/01/10 Python
如何创建一个Flask项目并进行简单配置
2020/11/18 Python
暑期研修感言
2014/02/17 职场文书
学习十八届三中全会精神实施方案
2014/02/17 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
人民调解员先进事迹材料
2014/05/08 职场文书
我为党旗添光彩演讲稿
2014/09/10 职场文书
2014年高中生自我评价范文
2014/09/26 职场文书
简易离婚协议书(范本)
2014/10/25 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
小学信息技术教学反思
2016/02/16 职场文书
python实现会员信息管理系统(List)
2022/03/18 Python
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB