详解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 后缀名判断限制代码
Mar 31 NodeJs
nodejs npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
轻松创建nodejs服务器(6):作出响应
Dec 18 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
nodeJs爬虫获取数据简单实现代码
Mar 29 NodeJs
NodeJS和BootStrap分页效果的实现代码
Nov 07 NodeJs
详解Nodejs基于mongoose模块的增删改查的操作
Dec 21 NodeJs
async/await与promise(nodejs中的异步操作问题)
Mar 03 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 NodeJs
Nodejs把接收图片base64格式保存为文件存储到服务器上
Sep 26 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 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无限级分类实现方法分析
2016/10/19 PHP
PHP redis实现超迷你全文检索
2017/03/04 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
Javascript之旅 对象的原型链之由来
2010/08/25 Javascript
FF火狐下获取一个元素同类型的相邻元素实现代码
2012/12/15 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
DIV+CSS+jQ实现省市联动可扩展
2016/06/22 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
[00:30]明星选手化身超级英雄!2018DOTA2亚洲邀请赛全明星赛来临!
2018/04/06 DOTA
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
什么是python的列表推导式
2020/05/26 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
python 元组和列表的区别
2020/12/30 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
python绘制雷达图实例讲解
2021/01/03 Python
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
美国著名手表网站:Timepiece
2017/11/15 全球购物
HSRP的含义以及如何工作
2014/09/10 面试题
如何利用find命令查找文件
2015/02/07 面试题
幼儿运动会邀请函
2014/01/17 职场文书
园林设计专业毕业生求职信
2014/03/23 职场文书
小露珠教学反思
2014/04/30 职场文书
端午节活动总结
2014/08/26 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
同学聚会致辞集锦
2015/07/28 职场文书
mysql创建存储过程及函数详解
2021/12/04 MySQL