详解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全栈框架StrongLoop推荐
Nov 09 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
NodeJS创建基础应用并应用模板引擎
Apr 12 NodeJs
NodeJS的Promise的用法解析
May 05 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 NodeJs
nodejs密码加密中生成随机数的实例代码
Jul 17 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
分享node.js实现简单登录注册的具体代码
Apr 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
mysql+php分页类(已测)
2008/03/31 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
js 创建书签小工具之理论
2011/02/25 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
小程序实现多列选择器
2019/02/15 Javascript
js 计算图片内点个数的示例代码
2019/04/04 Javascript
vue 父组件通过v-model接收子组件的值的代码
2019/10/27 Javascript
javascript实现留言板功能
2020/02/08 Javascript
linux下python抓屏实现方法
2015/05/22 Python
Python实现带百分比的进度条
2016/06/28 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
pytorch梯度剪裁方式
2020/02/04 Python
pycharm快捷键汇总
2020/02/14 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
如何清空python的变量
2020/07/05 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
网上卖盒饭创业计划书
2014/01/26 职场文书
群众路线教育实践活动对照检查材料思想汇报(副处级领导)
2014/10/04 职场文书
小学六一儿童节活动开幕词
2016/03/04 职场文书
情况说明书格式及范文
2019/06/24 职场文书
redis数据结构之压缩列表
2022/03/21 Redis
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA