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

-------------
虽然之前已经通过了前面的开发者验证,但是我们的微信公众平台仍然不会自动回复消息。为什么呢? 原因就在于自动回复消息的功能并没有“打开”。还记得上篇我说过, 在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();//调用回复消息的函数

既然回复消息的“开关”打开了,想必现在我们的公众平台应该可以自动回复消息了吧? 在测试之前要先将上面修改的代码打包成zip文件,然后按照之前的方法上传到SAE服务器上(如果忘了猛戳这里)。
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;
}

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

最后补充一下,就是微信回复的消息,除了英文部分外,其他都是乱码,这是怎么回事呢?因为微信传输信息采用的是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

【玩转微信公众平台之九】 第一个功能:消息自动回复相关推荐

  1. ASP玩转微信公众平台自定义接口(1)—接口申请

    微信最近开放第三方API接口,申请地址:http://mp.weixin.qq.com/cgi-bin/callbackprofile?t=wxm-callbackapi&type=info& ...

  2. 【玩转微信公众平台之二】 账号注册

    好了,从这篇开始正式教大家怎么玩转微信公众平台. ----------------- 首先肯定要注册个账号是吧,猛戳这里去注册: https://mp.weixin.qq.com/ 如下图所示,点击注 ...

  3. 微信公众平台模拟登录自动群发图文消息工具包

    无需微信认证即可实现微信公众号自动群发图文消息. 使用 npm i wechat-mp-hack --save const Wechat = require('wechat-mp-hack'); co ...

  4. 微信公众平台开发教程Java版(三) 消息接收和发送

    前面两章已经介绍了如何接入微信公众平台,这一章说说消息的接收和发送 可以先了解公众平台的消息api接口(接收消息,发送消息) http://mp.weixin.qq.com/wiki/index.ph ...

  5. 微信公众平台开发之在线翻译功能

    微信公众平台开发之在线翻译功能是会员日常生活中的实用小工具,也是留住会员.提高会员对我们官方微信依赖度的一个重要手段.在线翻译使得会员用微信聊着天也能翻译,甚至还可以一边聊天一边学习,可谓一举两得.下 ...

  6. java 微信 接收消息_微信公众平台开发教程Java版(三) 消息接收和发送

    https://www.iteye.com/blog/tuposky-2017429 前面两章已经介绍了如何接入微信公众平台,这一章说说消息的接收和发送 可以先了解公众平台的消息api接口(接收消息, ...

  7. 微信公众平台原创声明和留言功能面向微信认证帐号公测

    昨天夜间微信公众平台原创声明和留言功能正式面向微信认证帐号公测了,网友直呼"那我有继续写的动力了,我要继续曾经中断的码字工作了""支持原创,为自己代言"&quo ...

  8. 【玩转微信公众平台之一】序章(纯粹扯淡)

    昨天是我的生日,为了庆祝这一伟大的节日,我决定写个微信公众平台开发的系列教程. 看到这里有些人肯定迫不及待的要在下面的评论里写上"祝博主生日快乐"之类的祝福,其实我觉得大可不必,历 ...

  9. 微信公众平台开发,第一章

    今天自己试着写微信公众好接口,在网上搜索了找了一个讲解比较全的,自己就跟着一步一步做. 一.创建新浪云计算应用 申请账号 我们使用SAE新浪云计算平台作为服务器资源,并且申请PHP环境+MySQL数据 ...

最新文章

  1. 函数assert()详解
  2. 简单介绍MySQL开启事务的两种方式
  3. 函数调用规范__cdecl和__stdcall的区别
  4. SlidingMenu的简单使用
  5. C语言写的程序如何控制计算机硬件
  6. java a 2_Java A* 算法(2)
  7. 【Java】获取并打印当前堆栈的方法
  8. jeecg 3.7.1 新版功能,集群定时任务动态发布模块 使用规则
  9. 村庄规划用途管制的相关内容
  10. qq批量登录软件_把微信PC版越甩越远!QQ电脑版这些新功能太良心
  11. 进程间通信-----管道
  12. PHP实现用户浏览记录接口
  13. 高等数学张宇18讲 第九讲 积分等式与积分不等式
  14. android连iphone热点超时,苹果手机开热点安卓手机连不了为什么
  15. Allegro PCB多层板中负片热风焊盘的制作以及flash的添加
  16. 贪心算法---Huffman编码---神秘电报密码
  17. python自动化测试实战-无涯(学习与研究)[一]
  18. IDEA使用教程(一) 基础配置
  19. 【Python 笔记】Linux 下源码编译安装 python
  20. Java 安全-JNDI注入学习

热门文章

  1. 解决win10资源管理器突然占用cpu过高问题
  2. 直角三角形面积Java_用java编写输出直角三角型、倒直角三角形
  3. win7访问XP或者2003共享,提示密码错误的解决办法
  4. 辽宁省计算机设计大赛三等奖英语,我校在2018年辽宁省大学生计算机设计大赛中取得佳绩...
  5. NLP推理与语义相似度数据集
  6. 三分频电路Verilog设计
  7. 点赋网络:网店详情页设计中应包含哪些设计元素
  8. 新Macbook电池续航能力表现欠佳,用户表示用不到5小时
  9. HDU 4125 Moles 二叉排序树 树状数组 kmp
  10. adb 判断imei_adb 获取imei