zoukankan      html  css  js  c++  java
  • 再谈Weiphp公众平台开发——1、成语接龙插件

    易错点,注意插件的命名

    1、创建插件。在weiphp管理后台创建成语接龙插件,勾选安装后立即启用,不需要配置项和管理列表。点“确定”完成插件的创建。

    2、安装插件。

    3、检测插件是否成功安装。返回到weiphp插件管理后台,可以看到成语接龙插件已经成功安装,因为创建该插件的时候没有勾选需要配置项,所以此处没有显示插件配置页面。

    4、编写微信响应代码。首先,我们来调试一下成语接龙的接口。

            由调试结果我们可以发现,要使用户正常完成成语接龙,必须重复多次获得用户的输入关键词,当用户输入“成语接龙”时开始触发本插件,提示用户输入一个成语,然后获取用户的下一次输入,把用户的下一次输入提交到成语接龙接口地址,用file_get_contents()函数获得接口返回的内容,如果接口返回内容是一个成语的话,则继续获取用户的下一次输入,并把用户输入的关键词提交到接口,按此规律循环,多次获取用户的输入关键词;若接口返回的内容是不是一个成语,比如是“成语必须为4个汉字”之类的提示语时,则回复给用户的消息中提示用户重新输入一个成语或者输入“退出”退出成语接龙;当用户输入的关键词为“退出”时,则退出成语接龙插件,用户的下一次输入将不会提交到成语接龙接口。

           整个微信交互模型开发的思路我们弄清楚了,接下来就开始写代码,其中最关键的是用到weiphp封装的一个函数set_user_status(),这个函数的位置及用法:

            这个函数的大概意思就是把用户的输入作为缓存存储起来,与用户的下一次输入进行关联,从而完成一次连贯输入操作。用法比较简单,传递的第一个参数为插件的标识名,传递的第二个参数为自定义的一个关键词。

    5:下面我们就用这个函数来写一下连贯输入操作:

    <?php
                
    namespace AddonsIdiomsModel;
    use HomeModelWeixinModel;
                
    /**
     * 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."
    ".'重新输入一个成语开始接龙,输入【退出】退出成语接龙');
                } else {
                    $keywordArr['step'] = 'input';
                    set_user_status('Idioms', $keywordArr);
                    $this->replyText($reply);
                }
            }
        }
    }
                

    5、微信测试。

  • 相关阅读:
    matplotlib数据可视化之柱形图
    xpath排坑记
    Leetcode 100. 相同的树
    Leetcode 173. 二叉搜索树迭代器
    Leetcode 199. 二叉树的右视图
    Leetcode 102. 二叉树的层次遍历
    Leetcode 96. 不同的二叉搜索树
    Leetcode 700. 二叉搜索树中的搜索
    Leetcode 2. Add Two Numbers
    Leetcode 235. Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/zeze/p/5987682.html
Copyright © 2011-2022 走看看