本文旨在介绍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