之前的文章可以进入专栏进行查看和学习,后面的文章就不再一一的去粘贴上一篇文章链接了,新的小伙伴直接去专栏就行,如果感兴趣的可以尝试订阅一下专栏,当然也欢迎大神加入专栏。
https://cloud.tencent.com/developer/column/102120
1.做这个首先考虑下,是在什么情况下去回复,比如文字类型,然后是否是包含还是一致等情况下去回复。
2.我们先做一下后台,做一个关键字回复库。
2.1 生成一个表,用于存储关键字回复内容,通过查看微擎的开发文档,了解一下微擎的数据库规范。
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新建一个后台的方法,用来显示和创建关键字回复内容。
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文件
{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方法创建一个关键字回复了,根据获取到的消息内容进行判断,如果是文本消息的话就查询数据库里是否有相应的关键字,如果有的话就回复,没有的话就回复默认内容。
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 删除。