博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【微信公众平台】 之 消息自动回复
阅读量:5308 次
发布时间:2019-06-14

本文共 2273 字,大约阅读时间需要 7 分钟。

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

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

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

在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:特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; }

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

 

 

转载于:https://www.cnblogs.com/xj0418/p/4327590.html

你可能感兴趣的文章
2018icpc徐州OnlineA Hard to prepare
查看>>
Spark的启动进程详解
查看>>
使用命令创建数据库和表
查看>>
机器视觉:SSD Single Shot MultiBox Detector
查看>>
201521123044 《Java程序设计》第1周学习总结
查看>>
MIT Scheme 的基本使用
查看>>
程序员的“机械同感”
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
c++回调函数
查看>>
linux下Rtree的安装
查看>>
【Java】 剑指offer(53-2) 0到n-1中缺失的数字
查看>>
Delphi中ListView类的用法
查看>>
多米诺骨牌
查看>>
Linq 学习(1) Group & Join--网摘
查看>>
asp.net 调用前台JS调用后台,后台掉前台JS
查看>>
Attribute(特性)与AOP
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
Competing Consumers Pattern (竞争消费者模式)
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>