找到了上次写的,居然起了这么奇怪一个名字…: 微信开发思路扩展 – 会话消息程序处理模式
之前应该是已经写过一次与这个有关的东西了,今晚改版了一下微韵的第三方接口模块,使用了上次定位方法,因为这次配合使用了数据库,所以,代码非常少就解决问题!
思路如下:
首先: 比如我需要做一个留言板系统:
当用户发送 留言 两个字给微信公众号,
我需要做的事情如下:
第一,去匹配这个词是不是触发了后台定义的数据接口,如果不是,交给图灵机器人去回复, 如果是
我需要查出这个关键词的唯一标识符,这里为了扩招其他接口,所以让用户自定义,可以两个接口相互交互,当然我们也可以自定义,只要不和其他业务相冲突就行!
查到标识符以后,写入缓存数据,我这里为了统计次数,所以缓存里面写入了次数,
如果用户开启了二次回复,
那么收到用户消息后先判断缓存是否有唯一标识符的数据,如果有, 直接把数据转给用户自定义的接口,顺便把调用次数也一起发给用户接口,给用户自己扩展,
如果时间到期了.或者后台定义的次数用光了,那么直接清除缓存, 此次交互结束,
用户下次如果又命中关键词,重复执行上面的操作,如果没有,交给小黄鸡啦~~~
次数演示…
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
$api = M('Api')->where($apiwhere)->find(); /*数据多次推送标识系统*/ $cacheName = md5($api['reply_bt']); if ($api['reply_two']) { if (S($cacheName) >= 1) { S($cacheName,S($cacheName)+1);//缓存标示 }else{ S($cacheName,1);//缓存标示 S($cacheName.'_time',time()+$api['reply_time']); } } if (time() > S($cacheName.'_time') || S($cacheName) >= $api['reply_num']) { $stype = 0; S($cacheName,NULL); S($cacheName.'_time',NULL); }else{ $stype = 1; } if ($api != false && $api != null && $stype == 1) { $vo['fromUsername'] = $this->data['FromUserName']; $vo['Content'] = $this->data['Content']; if (intval($api['is_colation'])) { $vo['Content'] = trim(str_replace($api['keyword'], '', $this->data['Content'])); } $vo['toUsername'] = $this->token; $vo['num'] = S($cacheName);//第几次推送数据... ......... |
附加一个图灵机器人卖萌图
碎觉碎觉~~今天很开心~~⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄