当前位置: 首页 > 后端技术 > Node.js

nodejs微信公众号开发-4.自动回复各种消息

时间:2023-04-03 11:03:54 Node.js

上一篇:nodejs微信公众号开发-3.封装消息响应模块,实现消息接口的模块化处理,方便后期stage本文将介绍微信公众号回复各种消息功能的实现,包括文字、图片、语音、视频、音乐、图文等(项目github地址:https://github.com/Panfen/wem...)注:最近感觉localtunnel很不稳定,测试起来很麻烦。如果可能的话,自己搭建一个云服务器。我比较懒,暂时继续使用localtunnel。1.被动回复用户消息当用户向公众号发送消息时(或者由于某些特定的用户操作而推送事件时),会产生一个POST请求,开发者可以在响应包(Get),响应消息(目前支持文字、图片、图文、语音、视频、音乐)。发送被动回复消息是对微信服务器发送的消息进行回复。开发过程中,如果公众号暂时无法提供服务,请稍后再试,一般有两种原因:开发者5秒内没有回复任何内容,开发者返回的数据异常,以及xml格式,比如json数据,具体的消息规则可以参考微信平台开发者文档:被动回复用户消息2.回复消息的实现我们之前的attention自动回复是在weixin.js中实现的,其他消息回复也写在这个文件里面:if(message.MsgType==='event'){if(message.Event==='subscribe'){if(message.EventKey){console.log('扫描二维码代码遵循:'+message.EventKey+''+message.ticket);}this.body='终于等到了你,还好我没有放弃';}elseif(message.Event==='unsubscribe'){this.body='';console.log(message.FromUserName+'Gonequietly...');}elseif(message.Event==='LOCATION'){this.body='您报告的地理位置是:'+message.Latitude+','+message.Longitude;}elseif(message.Event==='CLICK'){this.body='你点击了菜单:'+message.EventKey;}elseif(message.Event==='SCAN'){this.body='关注后扫描二维码:'+message.Ticket;}}elseif(message.MsgType==='text'){varcontent=message.Content;varreply='你说的:“'+内容+'”,我没听懂';如果(内容==='1'){reply='金刚:骷髅岛';}elseif(content==='2'){reply={type:'image',mediaId:'http://tu.23juqing.com/d/file/html/gndy/dyzz/2017-04-09/da9c7a64ab7df196d08b4b327ef248f2.jpg'}}elseif(content==='3'){reply=[{title:'金刚.骷髅岛》,简介:南太平洋神秘岛屿——骷髅岛史上最大金刚与邪恶骷髅蜥蜴的战斗。',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;}测试效果如图:3.描述:找到输入数字2,没有对应图片的回复是不是很奇怪?我们看一下文档:文档上说MediaId属性是通过素材管理界面上传一个多媒体文件得到的id,不是我们直接给的在线图片的url链接。在短信中,可以直接使用url链接。所以我们下一步就是实现素材管理接口。