详解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 整合kindEditor实现图片上传
Feb 03 NodeJs
Nodejs的express使用教程
Nov 23 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
nodejs集成sqlite使用示例
Jun 05 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
nodejs脚本centos开机启动实操方法
Mar 04 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
SMARTY学习手记
2007/01/04 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
javascript跨域刷新实现代码
2011/01/01 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
推荐JavaScript实现继承的最佳方式
2014/11/11 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
webpack中如何加载静态文件的方法步骤
2019/05/18 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
Python装饰器原理与简单用法实例分析
2018/04/29 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
Python图像处理库PIL的ImageDraw模块介绍详解
2020/02/26 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
全网最全python库selenium自动化使用详细教程
2021/01/12 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
int和Integer有什么区别
2013/05/25 面试题
咨询公司各岗位职责
2013/12/02 职场文书
后进生转化工作制度
2014/01/17 职场文书
教师自我反思材料
2014/02/14 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
学校节能减排方案
2014/06/13 职场文书
2015年党风建设工作总结
2015/04/29 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers
Windows Server 版本 20H2 于 8 月 9 日停止支持,Win10 版本 21H1 将于 12 月结束支
2022/07/23 数码科技