详解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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
nodejs实现黑名单中间件设计
Jun 17 NodeJs
nodejs的HTML分析利器node-jquery用法浅析
Nov 08 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
手把手教你如何使用nodejs编写cli命令行
Nov 05 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
nodejs中实现用户注册路由功能
May 20 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
typescript nodejs 依赖注入实现方法代码详解
Jul 21 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 NodeJs
nodejs中使用worker_threads来创建新的线程的方法
Jan 22 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 批量生成html,txt文件的实现代码
2013/06/26 PHP
msn上的tab功能Firefox对childNodes处理的一个BUG
2008/01/21 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
AngularJS基础 ng-open 指令简单实例
2016/08/02 Javascript
Three.js学习之Lamber材质和Phong材质
2016/08/04 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
js仿淘宝评价评分功能
2017/02/28 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
[05:04]DOTA2上海特级锦标赛主赛事第二日TOP10
2016/03/04 DOTA
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
python使用turtle库绘制树
2018/06/25 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
Python实战之制作天气查询软件
2019/05/14 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
2019/07/18 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Pytorch对Himmelblau函数的优化详解
2020/02/29 Python
jupyter 添加不同内核的操作
2021/02/06 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
电气工程师岗位职责
2014/01/01 职场文书
给交警的表扬信
2014/01/12 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
学校2014重阳节活动策划方案
2014/09/16 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
学习党的群众路线对照检查材料
2014/09/29 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
施工员岗位职责范本
2015/04/11 职场文书
Python字典的基础操作
2021/11/01 Python
nginx.conf配置文件结构小结
2022/04/08 Servers