微信公众平台关键词自动回复解决方案PPT课件(28张)
- 格式:ppt
- 大小:189.50 KB
- 文档页数:28
微信公众号自动回复图解
很多人在关注他人微信的时候,会自动弹出信息,这些信息有的是带有选项的,输入对应数字可以看到一些图文消息或者视频等,这样不仅可以使企业在没有菜单的情况下能展示自己想要的信息,还可以更好的宣传自己。
具体的设置方法很多人还不知道,下面我简单为大家截图解释一下其设置方法:
1.登录公众平台后,选择“自动回复”,启用自动回复功能,可以看到以下界面:
2.在“被添加自动回复”处,写好自己想发布的关注时文字消息,然后在文字消息下面把
想好的分类菜单写上,前面都带上对应的数字,比如:1.公司简介,2.联系我们…等。
3.新建好菜单后,我们再来添加对应的内容,如上图所示:
填写规则要求:
1.规则名称:填写前面所说关注时消息下面分类的名称,要对应好
2.关键字:直接填写对应分类名称前面的数字即可
3.回复:此处可选择使用文字、视频、图文等方式去发布,一般弹出页面为图文较好
注意:在新建自动回复之前,最好是在素材管理里面把具体分类内容全部加好,然后到了最后直接去选中对应的信息即可。
以上方式可使得关注的人回复数字就可以看到具体内容。
关键词自动回复功能的介绍在微信公众平台设置关键词自动回复,可以通过添加规则(规则名最多为60字数),订阅用户发送的消息内如果有您设置的关键字(关键字不超过30字数,可选择是否全匹配如设置了全匹配则必须关键字全部匹配才生效),即可把您设置在此规则名中回复的内容自动发送给订阅用户。
关键字自动回复设置方法登录微信公众平台=》功能=》高级功能=》编辑模式=》设置=》关键词自动回复=》添加规则,即可添加相应的关键词自动回复信息。
温馨提示:1、文字中可以输入网页链接地址,但不支持设置超链接。
2、关注用户发送消息命中设置关键字回复规则后会有5秒钟的响应时间。
3、规则名称自己设定(作为区分作用);4、关键字配置(作为粉丝发来命中的关键字);5、回复信息(命中关键字后自动回复的信息内容);6、勾选了“回复全部”,只要粉丝命中关键就会自动回复该规则内的所有回复;若未勾选,会随机回复;7、建议在一个规则里设置一个关键字,以便粉丝获得想要的答案。
关键字自动回复的规则1、字数限制:微信公众平台认证与非认证用户的关键字自动回复设置规则上限为200条规则(每条规则名,最多可设置60个汉字),每条规则内最多设置10条关键字(每条关键字,最多可设置30个汉字)、5条回复(每条回复,最多可设置300个汉字)。
2、规则设置:您可通过微信公众平台设置多个关键字,如订阅用户发送的信息中含有您设置的关键字,则系统会自己回复。
同一规则中可设置5条回复内容,如您设置了“回复全部”,粉丝发送信息中含有您设置的关键字,会将您设置的多条回复会全部发送,若未设置“回复全部”,则会随机回复。
3、关键字设置:1)每个规则里可设置10个关键字,若设置了相同的关键字,但回复内容不同,系统会随机回复。
2)每个规则里可设置5条回复内容,若设置了多个回复内容(没有设置“回复全部”),系统会随机回复。
3)多条回复设置方法:进入编辑者模式,点击关键词自动回复=》添加规则=》输入关键词匹配内容后,再添加内容,然后选择“回复全部”即可。
图文详解微信自动回复、文章关键词、目录制作首先登录微信公众平台:没有的去注册第一步:选择高级功能进入:开发者模式点击:设置选择关键词自动回复,点击添加规则添加规则:规则名框输入规则名称,类似分类后台可见便于管理!点击添加关键字,这步貌似没标在最地下那里,添加关键字我们先制作:总目录我把总目录关键字设置为0点击添加关键字之后,就出现这个对话框!输入0 点击确定!然后点击文字编辑,编辑分类目录,并且设置二级关键字我设置的是字母,A B C D E 然后每一个字母对应一个分类!填写完成,保存!手机测试,在对话框内输入0 发送系统就自动回复,前面编辑好的关键字内设置的内容:文章目录!这里需要注意的就是,编辑里勾选全匹配和发送全部回复设置分类文章目录:总目录设置完成,然后设置总目录内的单个分类目录,简称二级细分目录!首先设置后天比较容易辨认的标题设置好关键字:这里我挑选C 来演示!选择→添加关键字字:输入C选择文字→输入:三级分类编辑好之后选择保存!手机测试:输入 C系统会自动回复,编辑好文字内容!然后我们按照图片,设置三级分类:图文消息关键字按照细分文章目录分类C05 :@雅星-钟亚星《定位》先设置关键字:C05 保存选择全匹配,继续在有下角点击图文然后找到制作好的图文文件!选择确定,页面自动跳转到勾选右上角的,发送全部图文。
因为你可以选择多个图文消息!我是按照单个进行编辑的!因为我目录就是一个编号对应一篇文章!点击保存,手机测试!这里需要注意的是,如果你关键字设置的编号对应的是多图文消息。
那么你按照上面的方法制作好关键字然后在图文里,选择制作好的多图文消息。
然后,输入多图文的关键字:下面是添加自动回复,和消息自动回复!都比较简单,按照上面的总结下,就会操作了输入添加自动回复的欢迎语,或者你要说的话!点击保存!消息自动回复,不同的是。
粉丝发送任意消息都会自动回复你编辑好的内容!一般我选择发送文章总目录,这样粉丝看到目录就知道如何操作,一步步按照编号精确查找自己喜欢的文章!关于图文制作,前面两篇已经讲过了!微信公众号1:单图文消息→实践讲解!/825937363/infocenter#!app=2&via=QZ.HashRefresh&pos=13 67387442微信公众号2:多图文消息→实践讲解!/825937363/infocenter#!app=2&via=QZ.HashRefresh&pos=13 67394783欢迎我们会有更多内容分享!。
6实现微信公众号⾃动回复功能⼀实先⾃动回复功能的逻辑步骤 1 处理POST类型的控制逻辑,接收XML的数据包; 2 解析XML数据包(获得数据包的消息类型或者是事件类型); 3 拼装我们定义好的消息; 4 包装成XML格式; 5 在5秒内返回回去⼆代码实操--实现关注公众号⾃动回复功能 本节代码参照上节课继续修改和完善,⽬录结构跟之前相同,新引⼊的模块raw-body使⽤npm install安装⼀下即可,app.js启动⽂件和util.js不做变动,主要修改⼀下generator.js⽂件,以及在generator.js同级⽬录下新建wechat.js⽂件和tools.js⽂件。
wechat.js⽂件是将前⼀节generator.js⽂件中票据部分的代码抽离出来单独放在⼀个⽂件中,具体代码如下:'use strict';// 引⼊模块var Promise = require('bluebird');var request = Promise.promisify(require('request'));//增加url配置项var prefix = 'https:///cgi-bin/';var api = {accessToken: prefix + 'token?grant_type=client_credential'};//利⽤构造函数⽣成实例完成票据存储逻辑function weChat(opts) {var that = this;this.appID = opts.appID;this.appSecret = opts.appSecret;this.getAccessToken = opts.getAccessToken;this.saveAccessToken = opts.saveAccessToken;//获取票据的⽅法this.getAccessToken().then(function(data) {//从静态⽂件获取票据,JSON化数据,如果有异常,则尝试更新票据try {data = JSON.parse(data);} catch (e) {return that.updateAccessToken();}//判断票据是否在有效期内,如果合法,向下传递票据,如果不合法,更新票据if (that.isValidAccessToken(data)) {Promise.resolve(data);} else {return that.updateAccessToken();}})//将拿到的票据信息和有效期信息存储起来.then(function(data) {//console.log(data);that.access_token = data.access_token;that.expires_in = data.expires_in;that.saveAccessToken(data);})};//在weChat的原型链上增加验证有效期的⽅法weChat.prototype.isValidAccessToken = function(data) {//进⾏判断,如果票据不合法,返回falseif (!data || !data.access_token || !data.expires_in) {return false;}//拿到票据和过期时间的数据var access_token = data.access_token;var expires_in = data.expires_in;//获取当前时间var now = (new Date().getTime());//如果当前时间⼩于票据过期时间,返回true,否则返回falseif (now < expires_in) {return true;} else {return false;};};//在weChat的原型链上增加更新票据的⽅法weChat.prototype.updateAccessToken = function() {var appID = this.appID;var appSecret = this.appSecret;var url = api.accessToken + '&appid=' + appID + '&secret=' + appSecret;return new Promise(function(resolve, reject) {//使⽤request发起请求request({url: url,json: true}).then(function(response) {var data = response.body;var now = (new Date().getTime());var expires_in = now + (data.expires_in - 20) * 1000;//把新票据的有效时间赋值给datadata.expires_in = expires_in;resolve(data);})})};//向外暴露weChatmodule.exports = weChat; generator.js⽂件进⾏精简后,添加判断对xml数据的格式化⽅法以及判断事件,添加关注事件测试信息,具体代码如下:'use strict';// 引⼊模块var sha1 = require('sha1');var getRawBody = require('raw-body');var weChat = require('./wechat');var tools = require('./tools');// 建⽴中间件函数并暴露出去module.exports = function(opts, handler) {//实例化weChat()函数//var wechat = new weChat(opts);return function*(next) {//console.log(this.query);var that = this;var token = opts.token;var signature = this.query.signature;var nonce = this.query.nonce;var timestamp = this.query.timestamp;var echostr = this.query.echostr;// 进⾏字典排序var str = [token, timestamp, nonce].sort().join('');// 进⾏加密var sha = sha1(str);//使⽤this.method对请求⽅法进⾏判断if (this.method === 'GET') {// 如果是get请求判断加密后的值是否等于签名值if (sha === signature) {this.body = echostr + '';} else {this.body = 'wrong';};} else if (this.method === 'POST') {//如果是post请求也是先判断签名是否合法如果不合法直接返回wrongif (sha !== signature) {this.body = 'wrong';return false;};//通过raw-body模块可以把把this上的request对象也就是http模块中的request对象去拼装它的数据最终拿到⼀个buffer的xml数据//通过yield关键字获取到post过来的原始的XML数据var data = yield getRawBody(this.req, {length: this.length,limit: '1mb',encoding: this.charset});//console.log(data.toString());打印XML数据(当微信公众号有操作的时候终端可以看到返回的XML数据)//tools为处理XML数据的⼯具包使⽤tools⼯具包的parseXMLAsync⽅法把XML数据转化成数组对象var content = yield tools.parseXMLAsync(data);//console.log(content);打印转化后的数组对象//格式化content数据为json对象var message = tools.formatMessage(content.xml);console.log(message);//打印message//判断message的MsgType 如果是event 则是⼀个事件if (message.MsgType === 'event') {//如果是订阅事件if (message.Event === 'subscribe') {//获取当前时间戳var now = new Date().getTime();//设置回复状态是200that.status = 200;//设置回复的类型是xml格式that.type = 'application/xml';//设置回复的主体that.body = '<xml>' +'<ToUserName><![CDATA[' + message.FromUserName + ']]></ToUserName>' + '<FromUserName><![CDATA[' + message.ToUserName + ']]></FromUserName>' + '<CreateTime>' + now + '</CreateTime>' +'<MsgType><![CDATA[text]]></MsgType>' +'<Content><![CDATA[你好,同学!]]></Content>' +'</xml>';return;}}}}}; tools.js是处理XML数据的⼯具⽂件:'use strict';//引⼊模块var xml2js = require('xml2js');var Promise = require('bluebird');//导出解析XML的⽅法exports.parseXMLAsync = function(xml) {return new Promise(function(resolve, reject) {xml2js.parseString(xml, { trim: true }, function(err, content) {if (err) {reject(err);} else {resolve(content);};});});};//因为value值可能是嵌套多层的所以先对value值进⾏遍历function formatMessage(result) {//声明空对象messagevar message = {};//对result类型进⾏判断if (typeof result === 'object') {//如果是object类型通过Object.keys()⽅法拿到result所有的key 并存⼊keys变量中var keys = Object.keys(result);//对keys进⾏循环遍历for (var i = 0; i < keys.length; i++) {//拿到每个key对应的value值var item = result[keys[i]];//拿到keyvar key = keys[i];//判断item是否为数组或者长度是否为0if (!(item instanceof Array) || item.length === 0) {//如果item不是数组或者长度为0 则跳过继续向下解析continue;}//如果长度为1if (item.length === 1) {//拿到value值存⼊val变量var val = item[0];//判断val是否为对象if (typeof val === 'object') {//如果val为对象则进⼀步进⾏遍历message[key] = formatMessage(val);} else {//如果不是对象就把值赋给当前的key放⼊message⾥并去除收尾空格message[key] = (val || '').trim();}}//如果item的长度既不是0也不是1 则说明它是⼀个数组else {//把message的key设置为空数组message[key] = [];//对数组进⾏遍历for (var j = 0, k = item.length; j < k; j++) {message[key].push(formatMessage(item[j]));}}}}return message;}exports.formatMessage = function(xml) {return new Promise(function(resolve, reject) {xml2js.parseString(xml, { trim: true }, function(err, content) {if (err) {reject(err);} else {resolve(content);};});});};exports.formatMessage = formatMessage; 以上代码完成后,当关注微信测试公众号的时候,会⾃动回复『你好,同学!』的提⽰信息。