微信公众平台开发之相同关键词不同回复-php语言(五)

1.微信公众平台开发必备的一个基础功能是关键词回复。但有时候我们的微信公众号的需要关键词回复的模块比较多时,例如“默认情况下的关键词回复,查询天气时的关键词回复,或者成语接龙等文字游戏的关键词回复”,模块多时不可避免的会出现关键词冲突的问题。
2.在每天搜集公众号案例的时候发现以下几个公众号的情况:
案例一:
默认输入“1”:

默认输入1

点击底部菜单“孕妈菜单”的后再输入1:

点击菜单输入1
案例二:
聊天机器人中的各种文字游戏:

聊天机器人

在这两个案例中,仔细分析都是通过“点击菜单”进入不同的响应事件的。

在“1号店”中,默认连接“查询商品数据库A”,在点击了菜单后进入孕妈数据库B/孕妈响应事件;

在“Autism”中,也是通过点击菜单进入不同数据库/响应事件。
前者以“10分钟无应答”断开菜单事件,后者以“退出关键词”断开菜单事件。
流程图
//=============背景交代完毕,擂主登台============
这里采用连接数据库记录操作的方法解决:

首先在数据库中创建表:
id,openid(用户的身份标识),dianji(用户当前操作),time(时间)
caozuo表

在我的微信公众号中以相同关键词“济源”为例。默认输入“济源”返回“山水之城…”的消息,点击“查天气”菜单后,输入“济源”返回济源当前天气消息。

代码实现
流程图

用户是否点击,输入文本前的判断代码:

include './conn/conn.php';
        mysql_set_charset('utf8');
        $rs_caozuo=mysql_query("SELECT dianji,time FROM caozuo WHERE openid =  '{$object->FromUserName}' ORDER BY id DESC LIMIT 0 ,1",$link);//只查询最近一条记录
        $info_caozuo=mysql_fetch_array($rs_caozuo);
        $biaoji = $info_caozuo['dianji'];

如果没有查询到,

if($biaoji==false or $biaoji=='0')

如果查询到dianji=tianqi,执行天气查询事件

else if($biaoji=="tianqi")

点击“天气”菜单事件的代码:

 case "tianqi":
                        include './conn/conn.php';
                        mysql_set_charset('utf8');
                        $time=date("Y-m-d H:i:s");
                        $rs=mysql_query("INSERT INTO `caozuo`(`openid`, `dianji`, `time`) VALUES ('{$object->FromUserName}','tianqi','{$time}')",$link);
                        $content = "请输入您需要查询的城市,可以语音输入哦~\n\nTips:输入“退出”才可以使用其它功能。";

用户第一次点击,执行插入语句。
在天气查询响应消息事件中放入“退出”关键词操作,更新dianji=’0 ‘

case "退出":
                            $time=date("Y-m-d H:i:s");
                            $rs_tuichu=mysql_query("update `caozuo` set `dianji`='0', `time`='{$time}' where openid='{$object->FromUserName}'",$link);
                            $content ="已经退出,请查询其它内容。";
                            break;

大功告成!
还有一些使用缓存的方法,加入session对话的方法,全局变量的方法但操作麻烦,有的在网页中可用,到了微信类中就不行。所以采用数据库的方式,靠谱。

最终的效果如图:
输入“济源”,点击“查天气”菜单

效果
输入“退出”

效果2

2016-11-10 16:31:08更新:
公众号由于后期使用,以上代码已失效。
附数据表资源:http://download.csdn.net/detail/afanxingzhou/9679126

代码资源:http://download.csdn.net/detail/afanxingzhou/8796933

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值