前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >微擎框架模块开发3-第三步关键字回复

微擎框架模块开发3-第三步关键字回复

原创
作者头像
快乐的小白
修改2025-01-03 15:10:39
修改2025-01-03 15:10:39
740
举报
文章被收录于专栏:微擎微擎

之前的文章可以进入专栏进行查看和学习,后面的文章就不再一一的去粘贴上一篇文章链接了,新的小伙伴直接去专栏就行,如果感兴趣的可以尝试订阅一下专栏,当然也欢迎大神加入专栏。

https://cloud.tencent.com/developer/column/102120

一,关键字回复开发

1.做这个首先考虑下,是在什么情况下去回复,比如文字类型,然后是否是包含还是一致等情况下去回复。

2.我们先做一下后台,做一个关键字回复库。

2.1 生成一个表,用于存储关键字回复内容,通过查看微擎的开发文档,了解一下微擎的数据库规范。

代码语言:txt
复制
CREATE TABLE `ims_test_qywx_keyword` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `weid` int(11) NOT NULL,
  `keyword` varchar(255) DEFAULT NULL,
  `content` varchar(255) DEFAULT NULL,
  `status` int(11) DEFAULT '1',
  `time` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3672 DEFAULT CHARSET=utf8;

2.2 将上方的sql放到数据库进行执行下,就可以创建一个存储关键字的回复表了。

2.3 修改一下manifest.xml文件,新建一个后台菜单,然后去应用里升级1.0.3

然后将

2.4 然后在site.php新建一个后台的方法,用来显示和创建关键字回复内容。

代码语言:txt
复制
    public function doWebKeyword() {
        global $_W, $_GPC;
        $weid = $_W['uniacid'];
        $operation = !empty($_GPC['op']) ? $_GPC['op'] : 'display';
        if ($operation == 'display') {
            $pageindex = max(1, intval($_GPC['page']));
            $pagesize = 15;
            $list = pdo_getslice('test_qywx_keyword', array(), array($pageindex, $pagesize), $total, array(), 'id', 'id desc');
            $pager = pagination($total, $pageindex, $pagesize);
            } elseif ($operation == 'add') {
                if (checksubmit('submit')) {
                    $time = time();
                    $data = array('weid' => $_W['uniacid'], 'content' => $_GPC['content'], 'keyword' => $_GPC['keyword'], 'time' => $time,);
                    if (pdo_insert('test_qywx_keyword', $data)) {
                        message('添加成功!', $this->createWebUrl('keyword', array('op' => 'display')), 'success');
                    } else {
                        message('添加失败!', $this->createWebUrl('keyword', array('op' => 'display')), 'error');
                    }
                }
            }
        include $this->template('list');
    }

2.5 然后在addons/test_qywx/template下创建一个list.html文件

代码语言:txt
复制
{template 'common/header'}
<ul class="nav nav-tabs">
    <li {if $operation=='display' } class="active" {/if}> <a
        href="{php echo $this->createWebUrl('keyword', array('op' => 'display'))}">关键字列表</a>
    </li>
    <li {if $operation=='add' } class="active" {/if}> <a
        href="{php echo $this->createWebUrl('keyword', array('op' => 'add'))}">添加关键字</a>
    </li>
</ul>

{if $operation == 'display'}
<div class="main">
    <form action="" method="post" class="form-horizontal form" id="form">
        <div class="panel panel-default">
            <div class="panel-heading">关键字列表</div>
            <div class="panel-body">
                <div class="table-responsive panel-body">
                    <table class="table table-hover" style="min-width: 300px;">
                        <tbody>
                        {loop $list $key $item}
                        <tr>
                            <td class="text-left">
                                {$item['keyword']}
                            </td>
                            <td class="text-left">
                                {$item['content']}
                            </td>
<!--                            <td>-->
<!--                                <a href="{php echo $this->createWebUrl('keyword', array('op'=>'delete', 'id'=>$item['id']));}" class="btn btn-default btn-sm" onclick="return confirm('确认删除?')">删除</a>-->
<!--                            </td>-->
                        </tr>
                        {/loop}
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </form>
</div>
{elseif $operation == 'add'}
<div class="main">
    <form action="" method="post" class="form-horizontal form" enctype="multipart/form-data" id="form1">
        <div class="panel panel-default">
            <div class="panel-heading">添加关键字</div>
            <div class="panel-body">
                <div class="form-group">
                    <label class="col-sm-2 control-label">关键字</label>
                    <div class="col-sm-10">
                        <input type="text" name="keyword" class="form-control" value="">
                    </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-2 control-label">内容</label>
                    <div class="col-sm-10">
                        <input type="text" name="content" class="form-control" value="">
                    </div>
                </div>
            </div>
        </div>
        <div class="form-group col-sm-12">
            <input type="submit" name="submit" value="提交" class="btn btn-primary col-lg-1" />
            <input type="hidden" name="token" value="{$_W['token']}" />
        </div>
    </form>
</div>
{/if}
{template 'common/footer'}

2.6 以上的方法和html文件创建后,就可以进入到后台,进行关键字的创建了

2.7 再就是需要到Api方法创建一个关键字回复了,根据获取到的消息内容进行判断,如果是文本消息的话就查询数据库里是否有相应的关键字,如果有的话就回复,没有的话就回复默认内容。

代码语言:txt
复制
    public function doMobileApi() {
        $config = [
            'corp_id' => '1',
            'agent_id' => 1,
            'secret'   => '1',
            'token' => 'VWOm',
            'aes_key' => 'eVDcV3TkHfw6QyGYpxNOLporfZkEsyOaV8nzhhL3C4Y',
        ];
        $app = Factory::work($config);
        $app->server->push(function($message){
//          $message['MsgType'] 消息类型
            if($message['MsgType'] == 'text'){
                $content = pdo_get('test_qywx_keyword', array('keyword' => $message['Content']));
                if($content){
                    return $content['content'];
                }else{
                    return '暂时没有找到相关内容,请联系管理员';
                }
            }else{
                return '暂时只支持文本消息';
            }
        });
        $response = $app->server->serve();
        $response->send();
    }

二,结语

1.不仅对企业微信的关键字回复,还有对后台的优化。

2.此文可以学习到微擎框架数据库的查询方法和写入方法,当然这些都是在微擎的文档里可以查询到的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一,关键字回复开发
  • 二,结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档