首页 > 代码库 > 【玩转微信公众平台之九】 第一个功能:消息自己主动回复
【玩转微信公众平台之九】 第一个功能:消息自己主动回复
这篇就来实现我们微信公众平台的第一个功能:消息自己主动回复。
-------------
尽管之前已经通过了前面的开发人员验证,可是我们的微信公众平台仍然不会自己主动回复消息。为什么呢?原因就在于自己主动回复消息的功能并没有“打开”。还记得上篇我说过,在wechatCallbackapiTest这个类中有三个函数valid,responseMsg,checkSignature,valid和checkSignature主要是用来验证用的,而responseMsg则是用来回复消息的。
以下看下wx_sample.php 文档里的第8、9行
好了,既然手机已经拿到了,那肯定就能够使用手机里的功能了,眼下手机有两大功能,一个是验证接口,一个是回复消息。第9行这行代码就是调用valid()这个函数来实现接口验证,可是我们之前已经验证接口成功了(要不然你以为自己是怎么成为开发人员的?),所以以后都不须要验证接口,那么就将这行代码删掉或者凝视掉,例如以下:
1、这时候向你的公众平台发送随意文字,就能够返回信息,例如以下:
这里的"Welcome to wechat world!"几个字是怎么来的呢?看代码48行是不是又这么一句:
2、关键词自己主动回复。在之前我们实用编辑模式实现过关键词自己主动回复,这次我们用开发模式来试试。
在上一篇的代码分析力我们知道第35行的 $keyword保存着client用户发来的文本信息,因此我们假设跟处理用户发来的关键词,那就要先处理$keyword。代码例如以下:
上面代码实现的功能是:当用户发“1”过来时,微信平台回复他“博主ID:star特530”;当用户发来“2”时,微信平台回复“博主爱好:唱歌、跳舞、看书”;当用户发来的消息不是"1"也不是"2"时,微信平台就回复”能说人话吗?“。
保存,上传到SAE,效果例如以下:
以下我又一次关注下公众号,測试例如以下:
尊重原创,转载请注明来源:http://blog.csdn.net/star530/article/details/25916211
-------------
尽管之前已经通过了前面的开发人员验证,可是我们的微信公众平台仍然不会自己主动回复消息。为什么呢?原因就在于自己主动回复消息的功能并没有“打开”。还记得上篇我说过,在wechatCallbackapiTest这个类中有三个函数valid,responseMsg,checkSignature,valid和checkSignature主要是用来验证用的,而responseMsg则是用来回复消息的。
以下看下wx_sample.php 文档里的第8、9行
$wechatObj = new wechatCallbackapiTest(); $wechatObj->valid();第8行的意思是将wechatCallbackapiTest这个类由抽象转成实体化,什么意思呢?假设wechatCallbackapiTest是一个手机,尽管你想要用这个手机做非常多事,但前提是这个手机要是你的啊!无论这个手机再好,但它终究是抽象的,和你没关系的。那要怎么变成你的呢?非常easy,用new 来购买下,将这个手机买下来。等快递送手机上门时,你手里拿着手机才会有那种实实在在的感觉。
好了,既然手机已经拿到了,那肯定就能够使用手机里的功能了,眼下手机有两大功能,一个是验证接口,一个是回复消息。第9行这行代码就是调用valid()这个函数来实现接口验证,可是我们之前已经验证接口成功了(要不然你以为自己是怎么成为开发人员的?),所以以后都不须要验证接口,那么就将这行代码删掉或者凝视掉,例如以下:
$wechatObj = new wechatCallbackapiTest(); //$wechatObj->valid();以下就要调用消息回复的函数,相似调用接口验证的写法,我们这样写:
$wechatObj->responseMsg();//调用回复消息的函数既然回复消息的“开关”打开了,想必如今我们的公众平台应该能够自己主动回复消息了吧?在測试之前要先将上面改动的代码打包成zip文件,然后依照之前的方法上传到SAEserver上(假设忘了猛戳这里)。
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保存着client用户发来的文本信息,因此我们假设跟处理用户发来的关键词,那就要先处理$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; }
以下我又一次关注下公众号,測试例如以下:
最后补充一下,就是微信回复的消息,除了英文部分外,其它都是乱码,这是怎么回事呢?由于微信传输信息採用的是XML格式,而XML格式採用的是UTF-8编码,因此我们要将中文转码为UTF-8编码。方法例如以下:
在Dreamweaver中“改动”菜单 中选择 “页面属性”,然后选择“标题/编码”,在编码的下拉列表中选择最上端的Unicode(UTF-8),保存更新后就可以正常显示。
any question?
no!
OK!,that is all.
恩,本篇到此结束。
尊重原创,转载请注明来源:http://blog.csdn.net/star530/article/details/25916211
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。