详解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 相关文章推荐
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
nodejs发送http请求时遇到404长时间未响应的解决方法
Dec 10 NodeJs
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
Jan 05 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
May 15 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
php explode函数实例代码
2012/02/27 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
php截取中文字符串不乱码的方法
2013/12/25 PHP
thinkphp实现多语言功能(语言包)
2014/03/04 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
2016/10/29 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
node.js中的events.EventEmitter.listenerCount方法使用说明
2014/12/08 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
JavaScript判断DIV内容是否为空的方法
2016/01/29 Javascript
Node.js开发教程之基于OnceIO框架实现文件上传和验证功能
2016/11/30 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
解决Vue watch里调用方法的坑
2020/11/07 Javascript
wxpython中利用线程防止假死的实现方法
2014/08/11 Python
Python元字符的用法实例解析
2018/01/17 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
利用Python实现微信找房机器人实例教程
2019/03/10 Python
python urllib和urllib3知识点总结
2021/02/08 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
韩国流行时尚女装网站:Dintchina(中文)
2018/07/19 全球购物
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
remote接口和home接口主要作用
2013/05/15 面试题
水果超市创业计划书
2014/01/27 职场文书
食品安全承诺书
2014/05/22 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
食堂卫生管理制度
2015/08/04 职场文书
ORACLE查看当前账号的相关信息
2021/06/18 Oracle
MySql数据库触发器使用教程
2022/06/01 MySQL
MySQL 语句执行顺序举例解析
2022/06/05 MySQL