微信回复消息编辑器
本文旨在介绍wxmsg,一个laravel-admin的扩展工具。
起源于近期重构公众号自动回复配置功能,本想网上找个现成的工具却并未如愿,遂只能用我粗糙有限的html和js能力写了一个。
目前功能正常但缺乏美观,希望遇到各位前端能人壮士,能不吝赐教修改一二,让此工具能发光发亮,更好地为有需之众提供服务。
简介
这是一个基于laravel-admin
后台框架开发的扩展,可用在form表单中进行编辑使用,他的作用是可视化地编辑待回复的微信消息,最终消息格式是json,具体格式可参见微信公众号-发送客服消息的官方文档。
截图
安装
使用如下指令即可将此扩展加到项目中:
composer require yisonli/wxmsg
用法
普通用法:
$form->wxmsg('content');
高级用法 :
relateTo
函数 :- 参数一,自定义消息类型字段(使用框架原定义方式)时,可用此函数进行关联,当消息类型变更时会自动切换消息内容编辑.
- 参数二,配合
selectMedia
函数使用,如果多个公众号,可以指定关联公众号ID字段,查询时可以传递公众号ID字段的值。
selectMedia
函数 :- mediaID使用select控件选择的方式,选项通过ajax接口查询得到,注意需要自行实现查询的api接口.
$form->select('app_id', '公众号')->options($app_list)->rules('required');
$form->select('msgtype', '回复消息类型')->options([
'text' => '文本',
'image' => '图片',
'news' => '图文',
'link' => '图文(小程序)',
'miniprogrampage' => '小程序卡片',
])->rules('required');
$form->wxmsg('content', '')->relateTo('msgtype', 'app_id')->selectMedia('/wechat/reply/medias');
查询api的实现:
1) 在控制器内添加api方法:
public function medias(Request $request)
{
$app_id = $request->get('a');
$name = $request->get('q');
$type = $request->get('t');
$result = WechatMedia::where('app_id', '=', $app_id)
->where('type', '=', $type)
->where('name', 'like', "%$name%")
->paginate(null, ['media_id', 'name', 'url']);
foreach ($result as $key => $value) {
$temp = [
'id' => $value['media_id'],
'text' => '<img style="max-width:40px;max-height:40px;" src="'.$value['url'].'" /> ' . $value['name'],
];
$result[$key] = $temp;
}
return $result;
}
2) 增加一条路由:
$router->get('/wechat/reply/medias', 'Wechat\ReplyController@medias');
目前支持的消息类型
- text
- image
- news
- link
- miniprogrampage
待开发的功能
- 支持更多的消息类型. (如: video, music, msgmenu…)
- 美化操作界面,并提供实时效果展示.
关于我
name: yison.li
blog: http://yyeer.com
github: https://github.com/yisonli