quansitech/send-msg

qscmf send msg

v2.2.0 2023-01-30 10:43 UTC

This package is auto-updated.

Last update: 2024-05-29 04:41:29 UTC


README

统一发送消息队列

队列发送用法

1.安装及配置

1.1安装依赖及执行迁移

composer require quansitech/send-msg
php artisan migrate

1.2配置发送的API设置

微信公众号发模板消息
# 微信公众号
WX_APPID=
WX_APPSECRET=
手机短信api
方案1,采用启瑞云/中国短信网
# 启瑞云短信
QIRUI_API_KEY=
QIRUI_API_SECRET=
# 签名(即短信开头)
QIRUI_SIGN=
方案2,采用其它api,详细配置请查看 easysms配置

在/app/Common/Conf/config.php中加入以下代码

'SEND_MSG_SMS_GATEWAY'=> [
    //云片
    'yunpian'=>[
        'api_key'=>'27f03185cb9b6e1a4f274b*******',
        'sign_text'=>'【云片签名】'
    ],
],

1.3配置及启动队列

在后台中新增消息模板,地址 http://[host]:[port]/admin/MsgTpl/add 或写迁移文件进行添加,建议写迁移文件
启动队列wx(微信)和sms(短信)

php resque start --queue=wx #微信消息
php resque start --queue=sms #短信消息

2.在项目中新建一个消息内容转换器,需继承[BaseMsgTemplateParse],然后加上要转换的所有方法

class MsgTemplateParse extends BaseMsgTemplateParse {
    
    static protected $_var_func = array(
        '项目名称' => 'parseProjectName',
    );
    
    static public function parseProjectName($args){
        $project_id = $args['project_id'];
        return D('Project')->where(['id'=>$project_id])->getField('title');
    }
}

3.构造实例

//MsgTemplateParse为上一步所定义的类
$builder=\QsSendMsg\SendMsgJobBuilder::getInstance()->setTemplateParser(MsgTemplateParse::class);

4.添加发送的消息内容及对象(可加多条)

/** @var $builder \QsSendMsg\SendMsgJobBuilder */
$builder->setMsgTpl('test_msg',['project_id'=>1])
    ->addSmsMsgJob('13100000000','发送短信')
    ->addWxMsgJob('[openid]','[消息模板id]','[消息内容对象]','[跳转的url]','发送微信消息','[内容填充字段(默认为"first")]');

ps."test_msg"为数据库中'qs_msg_tpl'的数据
ps."消息内容对象"示例

$msgData = [
    'first' => ['value' => 'test', 'color' => '#173177'],
    'keyword1' => ['value' => 'keyword1', 'color' => '#173177'],
    'keyword2' => ['value' => 'keyword2', 'color' => '#173177'],
    'remark' => ['value' => 'remark', 'color' => '#173177'],
];

5.分派消息队列

5.1全部发送

/** @var $builder \QsSendMsg\SendMsgJobBuilder 第4步的$builder*/
$builder->dispatchAll();

5.2智能发送,(顺序发送,当一个发送成功时就不会发送后面的消息)

/** @var $builder \QsSendMsg\SendMsgJobBuilder 第4步的$builder*/
$builder->dispatch();

即时发送用法

根据队列用法1.1步骤,1.2步骤配置后即可使用

微信公众号模板消息发送

$job = new \QsSendMsg\Job\SendWxMsgJob();
$r=$job->send([
    'open_id'=>'微信openid',
    'template_id'=>'微信模板消息ID',
    'url'=>'跳转地址',
    'data'=>'消息内容'
]);

手机短信发送

$job = new \QsSendMsg\Job\SendSmsMsgJob();
$r=$job->send([
    'mobile'=>'手机号',
    'content'=>'短信内容',
    //...其它参数
]);

发送失败时$r为false,可查看$job->error错误信息

升级

1.0升级至2.0

在.env文件下增加配置项

# 启瑞云短信
QIRUI_API_KEY=
QIRUI_API_SECRET=
# 签名(即短信开头)
QIRUI_SIGN=

2.1版本后支持自定义短信发送渠道(默认还是采用启瑞云/中国短信网发送)

需要在config文件中加入以下内容

'SEND_MSG_SMS_GATEWAY'=> [
    //云片
    'yunpian'=>[
        'api_key'=>'27f03185cb9b6e1a4f274b*******',
        'sign_text'=>'【云片签名】'
    ],
],