易错点,注意插件的命名

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、微信测试。