易错点,注意插件的命名
1、创建插件。在weiphp管理后台创建成语接龙插件,勾选安装后立即启用,不需要配置项和管理列表。点“确定”完成插件的创建。
2、安装插件。
3、检测插件是否成功安装。返回到weiphp插件管理后台,可以看到成语接龙插件已经成功安装,因为创建该插件的时候没有勾选需要配置项,所以此处没有显示插件配置页面。
4、编写微信响应代码。首先,我们来调试一下成语接龙的接口。
由调试结果我们可以发现,要使用户正常完成成语接龙,必须重复多次获得用户的输入关键词,当用户输入“成语接龙”时开始触发本插件,提示用户输入一个成语,然后获取用户的下一次输入,把用户的下一次输入提交到成语接龙接口地址,用file_get_contents()函数获得接口返回的内容,如果接口返回内容是一个成语的话,则继续获取用户的下一次输入,并把用户输入的关键词提交到接口,按此规律循环,多次获取用户的输入关键词;若接口返回的内容是不是一个成语,比如是“成语必须为4个汉字”之类的提示语时,则回复给用户的消息中提示用户重新输入一个成语或者输入“退出”退出成语接龙;当用户输入的关键词为“退出”时,则退出成语接龙插件,用户的下一次输入将不会提交到成语接龙接口。
整个微信交互模型开发的思路我们弄清楚了,接下来就开始写代码,其中最关键的是用到weiphp封装的一个函数set_user_status(),这个函数的位置及用法:
这个函数的大概意思就是把用户的输入作为缓存存储起来,与用户的下一次输入进行关联,从而完成一次连贯输入操作。用法比较简单,传递的第一个参数为插件的标识名,传递的第二个参数为自定义的一个关键词。
5:下面我们就用这个函数来写一下连贯输入操作:
<?php namespace Addons\Idioms\Model; use Home\Model\WeixinModel; /** * Idioms的微信模型 */ class WeixinAddonModel extends WeixinModel{ function reply($dataArr, $keywordArr = array()) { $config = getAddonConfig ( 'Idioms' ); // 获取后台插件的配置参数 $api = 'http://i.itpk.cn/api.php?question=@cy'; if ($dataArr['Content'] == '成语接龙' || $dataArr['Content'] == 'Idioms' || $dataArr['Content'] == '3') { $keywordArr['step'] = 'input'; set_user_status('Idioms', $keywordArr); //缓存自定义关键词 $this->replyText('请输入一个成语,比如:一马当先'); } if ($keywordArr['step'] == 'input') { if ($dataArr['Content'] == '退出') { $this->replyText('您已经退出成语接龙,再次回复【成语接龙】即可进入~'); return false; } $reply = file_get_contents($api.$dataArr['Content']); if ($reply == '别来骗人家,不是随便打4个字就是成语哒!' || $reply == '成语必须为4个汉字') { $keywordArr['step'] = 'input'; set_user_status('Idioms', $keywordArr); $this-> replyText($reply."\n".'重新输入一个成语开始接龙,输入【退出】退出成语接龙'); } else { $keywordArr['step'] = 'input'; set_user_status('Idioms', $keywordArr); $this->replyText($reply); } } } }
5、微信测试。