【微信公众平台】 之 消息自动回复

这篇就来实现我们微信公众平台的第一个功能:消息自动回复。

虽然之前已经通过了前面的开发者验证,但是我们的微信公众平台仍然不会自动回复消息。

为什么呢?原因就在于自动回复消息的功能并没有“打开”

在wechatCallbackapiTest这个类中有三个函数valid,responseMsg,checkSignature,valid和checkSignature主要是用来验证用的,而responseMsg则是用来回复消息的。

下面看下wx_sample.php文档里的第8、9行

$wechatObj = new wechatCallbackapiTest();$wechatObj->valid();

第8行的意思是将wechatCallbackapiTest这个类由抽象转成实体化,什么意思呢?假设wechatCallbackapiTest是一个手机,虽然你想要用这个手机做很多事,但前提是这个手机要是你的啊!不管这个手机再好,但它终究是抽象的,和你没关系的。那要怎么变成你的呢?很简单,用new 来购买下,将这个手机买下来。等快递送手机上门时,你手里拿着手机才会有那种实实在在的感觉。 好了,既然手机已经拿到了,那肯定就可以使用手机里的功能了,目前手机有两大功能,一个是验证接口,一个是回复消息。第9行这行代码就是调用valid()这个函数来实现接口验证,但是我们之前已经验证接口成功了(要不然你以为自己是怎么成为开发者的?),所以以后都不需要验证接口,那么就将这行代码删掉或者注释掉,如下:

$wechatObj = new wechatCallbackapiTest();//$wechatObj->valid();

下面就要调用消息回复的函数,类似调用接口验证的写法,我们这样写:

$wechatObj->responseMsg();//调用回复消息的函数

既然回复消息的“开关”打开了,想必现在我们的公众平台应该可以自动回复消息了吧?在测试之前要先将上面修改的代码文件,然后上传到服务器上。

1、这时候向你的公众平台发送任意文字,就可以返回信息,如下:

这里的"Welcome to wechat world!"几个字是怎么来的呢?看代码48行是不是又这么一句:

$contentStr = "Welcome to wechat world!";

没错,只要将我们要回复的文字放到$contentStr这个变量中,那么微信就会自动回复我们想要的文字。下面我将这句话换成“风一般的男纸”,代码如下:

$msgType = "text";$contentStr = "风一般的男纸!";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;

上传到SAE上试试,如下图:

2、关键词自动回复。在之前我们有用编辑模式实现过关键词自动回复,这次我们用开发模式来试试。 在上一篇的代码分析力我们知道第35行的 $keyword保存着客户端用户发来的文本信息,因此我们如果跟处理用户发来的关键词,那就要先处理$keyword。代码如下:

$msgType = "text";if($keyword == "1"){	  $contentStr = "博主ID:star特530";}else if($contentStr == "2"){	  $contentStr = "博主爱好:唱歌、跳舞、看书";}else{	  $contentStr = "能说人话吗?";}
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;

上面代码实现的功能是:当用户发“1”过来时,微信平台回复他“博主ID:star特530”;当用户发来“2”时,微信平台回复“博主爱好:唱歌跳舞、看书”;当用户发来的消息不是"1"也不是"2"时,微信平台就回复”能说人话吗?“。 保存,上传到SAE,效果如下:

3、关注回复。所谓关注回复,就是当别人关注你时需要回复他的内容,这个我之前在编辑者模式的使用时有提到过。 在代码45行之前添加下面这么一段代码:

$type = $postObj->MsgType;//获取用户发来的消息类型(可能是文字,也可能是事件推送)$customevent = $postObj->Event;//获取用户是关注还是取消关注//当消息类型为事件推送,并且customevent 为 subscribe(关注)的情况时if($type == "event" and $customevent == "subscribe"){	  $msgType = "text";  $contentStr = "感谢您的关注,回复“1”查看博主ID;回复“2”查看博主爱好";  $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);  echo $resultStr;}

下面我重新关注下公众号,测试如下:

时间: 2024-08-06 15:59:29

【微信公众平台】 之 消息自动回复的相关文章

微信公众平台开发者模式自动回复功能与自定义菜单

微信开发者模式自动回复功能 1.提取POST来的数据中的信息 2.判断微信客户端发来的信息内容(以文本信息为例) 3.根据信息内容进行处理 4.把处理结果以XML的形式返回给微信服务器 5.微信服务器反馈内容给微信客户端 1.获取用户发来的文本信息的内容 private void ExtractPostData() /*** 提取POST来的数据中的信息 ***/ { Stream s = HttpContext.Current.Request.InputStream; //读取post来的数据

微信公众号教程(3)微信公众平台群发消息

微信公众平台最常用到的就是群发消息,这种一对多.几乎百分百到达的传播方式,取代了短信群发,并且具有多媒体形态,还可以直接引导转化.因此编辑一条好的内容,挑选恰当的时候发送,既可以给用户带来有价值的信息,又有机会给公众账号带来新的关注和收益.本期将重点为大家讲解素材管理该怎么玩,群发消息需要注意些什么. 第三章 微信公众平台群发消息 一.微信公众平台后台素材管理   点击公众平台后台导航的"素材管理",或者在群发消息或者与用户聊天页面时,选择发送多媒体内容时快捷进入.这个页面主要是用来管

另类保存微信公众平台历史消息的方法 - 星标消息

前面怎样把微信聊天记录导出备份到电脑[微信公众平台技巧]介绍的通过复制源代码来保存微信公众平台历史消息的方法,有网友反映说不会用批量替换.不会批量换行保存,一头雾水.这里我们就说个简单的方法,直接用星标消息保存,打开微信公众号消息管理,鼠标移动到你要保存的消息,右侧会显示几个菜单,其中有个星星形状的,默认是灰色的,如下图红框所示,点击后变成黄色的小星星,这样微信公众号星标信息就完成了,so easy!哪里要存点哪里! 腾讯客服提供的回答"微信公众号星标信息有什么用?" 他们的解释是:

微信公众平台群发消息的方法及注意事项

群发消息的方法 操作方法:登录微信公众平台(https://mp.weixin.qq.com)=>群发消息=>根据需要填写文字/语音/图片/视频/录音等内容后,选择对群发对象.性别.群发地区发送即可. 群发消息内容 目前支持群发的内容:文字.语音.图片.视频.图文消息. 1.群发内容中需添加文字+图片+视频,可先在“素材管理”中设置图文消息,然后群发时选择“图文消息”类型即可. 2.上传至素材管理中的图片.语音可多次群发,没有有效期. 3.群发图文消息的标题上限为64个字节: 4.群发内容字数

微信公众平台-接收消息与发送被动消息

接收消息代码如下(包含回复消息调用): /// <summary> /// 接收用户消息 /// iftrue /// 2014-07-08 /// </summary> public class Receive { public delegate Models.Send_Msg delegate_SendMsg(string msgType); public delegate void delegate_RececiveHandler(Models.Receive_Msg mod

微信公众平台图文消息条数限制在1条以内

从2018年10月12日起,微信公众平台图文消息被限制为1条. 受影响的有 客服接口发送的图文消息,如 { "touser":"OPENID", "msgtype":"news", "news":{ "articles": [ { "title":"Happy Day", "description":"Is Reall

微信公众平台新增获取自动回复和自定义菜单配置接口

微信公众平台自动回复功能可以为运营者减少了重复回复消息的次数,但如果自动回复的数量多的话管理就比较麻烦:自定义菜单相当于你这个公众号的导航,但有些公众号会限制不能添加外部链接.现在好了,公众平台开发者接口更新,新增获取自动回复和自定义菜单配置接口,对所有公众号开放. 新增的接口具体是: 1. 获取自动回复规则接口 该接口可以获取公众号设置的自动回复规则,包括关注后自动回复.消息自动回复和关键词自动回复. 开发者可以通过该接口,获取公众号当前使用的自动回复规则,包括关注后自动回复.消息自动回复(6

[号外]微信公众平台开发---消息体签名及加解密

离刚开始做微信开发到现在已经两个月了,因为被分配了另外一个任务,所以微信的开发就先放到了一遍. 在小公司便是如此,只有自己一个人做开发,所以哪里需要就要先转到哪一块.其实想想自己也没什么太好的理由说留在这个公司,想想也就是工作比较放松点,老板人还可以,项目上也催的不紧,孩子还小家里有点事了可以随时请假回家,这次也是家里父亲和小孩都住院了请了半个月假刚过来. 闲话不多说,先说下微信开发的博客,微信开发也算完成了一部分,因为没有完成,所以之前的『微信公众平台开发(一)---接口介绍及配置』起了个头便

微信公众平台开发学习系列(二):微信公众平台接收消息与发送消息

本篇主要介绍如何使用senparc来处理微信公众平台的接收消息与发送消息. 首先微信端会将用户的发送的信息以post请求发送到填写的url上,服务端代码如下: 1 [HttpPost] 2 public ActionResult Get(PostModel postModel) 3 { 4 var messageHandler = new CustomMessageHandler(Request.InputStream, postModel); 5 6 messageHandler.Execut

微信公众平台的消息类型与事件类型

消息类型(MsgType):event textvoicevideolocationlink 而消息类型(Event)下的事件类型:subscribeSCANLOCATIONCLICKVIEW 具体内容参考微信公众平台网址: 消息类型: http://mp.weixin.qq.com/wiki/10/79502792eef98d6e0c6e1739da387346.html 事件类型: http://mp.weixin.qq.com/wiki/2/5baf56ce4947d35003b86a98