微信订阅后台自动回复功能的实现
2016-11-29 00:00
756 查看
3.1. 订阅号后台自动回复功能的实现
3.1.1. 官网文档地址
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1472017492_58YV5&token=&lang=zh_CN3.1.2. 订阅号管理平台的配置
因为微信只支持80端口,所以通过ittun.com搭建模拟80端口的服务器ittun官网网址:http://www.ittun.com/
下载客户端文件并解压缩
修改startup.bat文件的内容如下
双击启动startup.bat文件
来到订阅号后台并进入开发-基本配置页面进行配置
3.1.3. node后端接入
3.1.3.1. 原生代码实现
// 使用原生模块的写法 const express = require("express"); const {parseString} = require("xml2js"); const app = express(); // 接收微信服务器发过来的消息 app.post("/wx", (req, res, next) => { // 微信订阅号传过来的数据都是xml格式 req.on("data", (buffer)=> { let msg = buffer.toString(); //console.log(buffer.toString()); //<xml><ToUserName><![CDATA[gh_fdfc0bf0bb5a]]></ToUserName> //<FromUserName><![CDATA[oryIWwNJ0Sgn8LyyxHsD6OLGxR9g]]></FromUserName> //<CreateTime>1479613848</CreateTime> //<MsgType><![CDATA[text]]></MsgType> //<Content><![CDATA[大好河山]]></Content> //<MsgId>6354893088312947331</MsgId> //</xml> //解析xml parseString(msg, (err, result) => { //console.log(result); //console.log(result.xml.Content[0]); //{ xml: //{ ToUserName: [ 'gh_fdfc0bf0bb5a' ], // FromUserName: [ 'oryIWwAKciQIskVv3TCcI6LsY8kY' ], // CreateTime: [ '1479613991' ], // MsgType: [ 'text' ], // Content: [ '你那了' ], // MsgId: [ '6354893702493270691' ] } } let touser = result.xml.FromUserName[0]; let fromuser = result.xml.ToUserName[0]; //如果收到的是文本消息 if (result.xml.MsgType[0] === "text") { if (result.xml.Content[0] === "你好") { let txt = "你也好"; let sendmsg = ` <xml> <ToUserName><![CDATA[${touser}]]></ToUserName> <FromUserName><![CDATA[${fromuser}]]></FromUserName> <CreateTime>${Date.now()}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[${txt}]]></Content> </xml> `; res.send(sendmsg); } else if (result.xml.Content[0] === "吃了么") { let txt = "没吃呢,走一起食堂"; let sendmsg = ` <xml> <ToUserName><![CDATA[${touser}]]></ToUserName> <FromUserName><![CDATA[${fromuser}]]></FromUserName> <CreateTime>${Date.now()}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[${txt}]]></Content> </xml> `; res.send(sendmsg); } else if (result.xml.Content[0] === "看牙") { //发送图文消息 let sendmsg = ` <xml> <ToUserName><![CDATA[${touser}]]></ToUserName> <FromUserName><![CDATA[${fromuser}]]></FromUserName> <CreateTime>${Date.now()}</CreateTime> <MsgType><![CDATA[news]]></MsgType> <ArticleCount>1</ArticleCount> <Articles> <item> <Title><![CDATA[预约看牙]]></Title> <Description><![CDATA[我们一起看牙去吧]]></Description> <PicUrl><![CDATA[http://wx001.ittun.com/img/logo.png]]></PicUrl> <Url><![CDATA[http://wx001.ittun.com/order.html]]></Url> </item> </Articles> </xml> `; res.send(sendmsg); } else { // 不符合条件的回复 let txt = "滚蛋"; let sendmsg = ` <xml> <ToUserName><![CDATA[${touser}]]></ToUserName> <FromUserName><![CDATA[${fromuser}]]></FromUserName> <CreateTime>${Date.now()}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[${txt}]]></Content> </xml> `; res.send(sendmsg); } } else if (result.xml.MsgType[0] === "event") { //是点击事件click if (result.xml.Event[0] === "CLICK") { if (result.xml.EventKey[0] === "V1001_TODAY_MUSIC") { let txt = "收到今日歌曲"; let sendmsg = ` <xml> <ToUserName><![CDATA[${touser}]]></ToUserName> <FromUserName><![CDATA[${fromuser}]]></FromUserName> <CreateTime>${Date.now()}</CreateTime> <MsgType><![CDATA[text]]></MsgType> <Content><![CDATA[${txt}]]></Content> </xml> ` res.send(sendmsg); } } } }); }); }) // 启动server const server = app.listen(3002, function () { const host = server.address().address; const port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); });
3.1.3.2. wechat模块的实现
wechat模块:https://github.com/node-webot/wechat代码
// 使用wechat模块的写法 const wechat = require('wechat'); const express = require("express"); const app = express(); const config = { token: 'dingyuehaohoutai', appid: 'wx263a41ae72347', encodingAESKey: 'T5766o1ql3lXrPIN0C4Tv1Udf3CkHhzFG' }; app.use('/wx', wechat(config, function (req, res, next) { // 微信输入信息都在req.weixin上 const message = req.weixin; console.log(message.Content); // { // ToUserName: 'gh_dbd933de052c', // FromUserName: 'oB3MDvytZho2Xs6ed-U5-QEeDJ3o', // CreateTime: '1479632080', // MsgType: 'text', // Content: 'hehe', // MsgId: '6354971394159447836' // } if (message.Content === 'diaosi') { // 回复屌丝(普通回复) res.reply('hehe'); } else if (message.Content === 'text') { //你也可以这样回复text类型的信息 res.reply({ content: 'text object', type: 'text' }); } else if (message.Content === 'hehe') { // 回复一段音乐 res.reply({ type: "music", content: { title: "来段音乐吧", description: "一无所有", musicUrl: "http://m5.file.xiami.com/884/884/1706253944/1773374767_15591128_l.mp3?auth_key=d26a837c4b087ee74ec512b8206d9dc1-1479870000-0-null", hqMusicUrl: "http://m5.file.xiami.com/884/884/1706253944/1773374767_15591128_l.mp3?auth_key=d26a837c4b087ee74ec512b8206d9dc1-1479870000-0-null" } }); } else { // 回复高富帅(图文回复) res.reply([ { title: '你来我家接我吧', description: '这是女神与高富帅之间的对话', picurl: 'http://nodeapi.cloudfoundry.com/qrcode.jpg', url: 'http://nodeapi.cloudfoundry.com/' } ]); } })); // 启动server const server = app.listen(3002, function () { const host = server.address().address; const port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); });
3.1.3.3. 其他第三方模块的实现
https://cnodejs.org/topic/537974fccbcc3963492b50ff免责说明
本博客中的文章摘自网上的众多博客,仅作为自己知识的补充和整理,并分享给其他需要的coder,不会用于商用。因为很多博客的地址看完没有及时做保存,所以很多不会在这里标明出处,非常感谢各位大牛的分享,也希望大家理解。
相关文章推荐
- python实现微信自动回复及接入聊天机器人等功能
- springMVC调微信接口实现关注时消息回复和自动回复功能
- python实现微信自动回复功能
- 利用python微信库itchat实现微信自动回复功能
- 微信关键字自动回复功能实现
- Android利用AccessibilityService实现抢红包,微信自动回复等功能思路
- 微信公众服务号接口接入,实现开发回复功能,而非后台设置
- 微信开发(PHP实现订阅号的公众号配置和自动回复)
- 微信自动回复功能实现
- Android通过AccessibilityService实现微信自动回复功能
- JAVA实现 SpringMVC方式的微信接入、实现简单的自动回复功能
- 微信小程序实现客服默认自动回复功能
- Android通过AccessibilityService实现微信自动回复功能
- java实现后台自动发邮件功能
- 微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈,后台实现
- 微信自动回复功能开发总结
- 纯代码实现WordPress评论回复自动添加@评论者的功能
- Android微信自动回复功能
- 微信公众号后台java开发实现自动回复机器人