详解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 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
nodejs下打包模块archiver详解
Dec 03 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 NodeJs
使用koa-log4管理nodeJs日志笔记的使用方法
Nov 30 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 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模板技术原理【一】
2008/01/10 PHP
php 面试碰到过的问题 在此做下记录
2011/06/09 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
Node.js实现简单聊天服务器
2014/06/20 Javascript
js中的getAttribute方法使用示例
2014/08/01 Javascript
JavaScript数组和循环详解
2015/04/27 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
jquery中object对象循环遍历的方法
2015/12/18 Javascript
jQuery Easyui 下拉树组件combotree
2016/12/16 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
详解webpack babel的配置
2018/01/09 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
基于vue2.0实现仿百度前端分页效果附实现代码
2018/10/30 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
python使用reportlab实现图片转换成pdf的方法
2015/05/22 Python
python开发之list操作实例分析
2016/02/22 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
《真想变成大大的荷叶》教学反思
2014/04/14 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
信息技术课后反思
2014/04/27 职场文书
消防标语大全
2014/06/07 职场文书
计算机应用应届生求职信
2014/07/12 职场文书
大学军训的体会
2014/11/08 职场文书
继承公证书格式
2015/01/26 职场文书
交通事故起诉书
2015/05/19 职场文书
高三毕业感言
2015/07/30 职场文书