Skip to content

notice 消息发送开发

消息发送概述

消息发送包括:SMS短信、微信模板消息、微信小程序提醒消息

  • 短信(SMS):通过第三方短信服务商发送短信通知

  • 微信公众号(Wechat):发送公众号模板消息

  • 微信小程序(Weapp):发送小程序订阅消息

文件位置

如果开发者直接是修改niucloud-admin框架,文件路径为:niucloud\app\dict\notice 如果开发者开发一个插件,文件路径为:niucloud/addon/插件名称/app/dict/notice

首先定义一个模版消息提醒类型

notice.php 消息模板配置

关键代码参考:

php
<?php
return [
    'shop_order_pay' => [// 消息模板key
        'addon' => 'shop',// 插件key
        'key' => 'shop_order_pay',// 消息模板key
        'receiver_type' => 1,// 消息接收者,1表示会员接收,0表示平台用户接收 
        'name' => '商城订单支付成功通知',// 模板名称,消息类型的名称
        'title' => '订单支付成功后发送',// 使用场景
        'async' => true,// true:同步,false:异步,根据具体的业务场景定义。比如短信验证码,需要返回值,就是同步。比如订单完成消息,这种就是异步

        // 消息提醒会用到的所有的变量,开发者定义好变量,使用者可以在模版消息中组合变量和普通文本定义消息内容。这个定义好后,在具体的业务调用的代码中,需要传递实际的数据
        'variable' => [
            'order_money' => '订单总额',
            'pay_time' => '支付时间',
            'create_time' => '支付时间',
            'body' => '订单内容',
            'order_no' => '订单编号',
            'url' => '订单链接'
        ],
    ]

];

定义消息类型后,会在系统中自动加载:

对定义的模版消息提醒类型,定义不同类型的实现(短信、微信公众号模板消息、微信小程序订阅消息)

开发者在第一个步骤中先定义好一个消息提醒类型。在实际的应用中,这种消息提醒可能只发送短信,也可能会同时发送短信,微信模版消息,小程序消息。开发者需要在不同的文件中定义不同类型的实现。

sms.php 定义短信消息提醒

关键代码参考:

php
<?php

use app\dict\sys\SmsDict;

return [
    'shop_order_pay' => [
        'is_need_closure_content' => 1,//是否需要闭包处理content
        'content' => function ($data) {// 短信内容
            $site_id = $data['site_id'];
            $sms_type = $data['sms_type'];
            if ($sms_type == SmsDict::NIUSMS) {
                return "您的订单{order_no}已支付成功";
            }
            return "您购买的“{body}”已支付成功。查看详情{url}";
        }
    ]

];

wechat.php 定义微信公众号模版消息提醒

关键代码参考:

php
<?php
return [
    'shop_order_pay' => [// 消息模板key
        'temp_key' => '43216',// 模板消息ID
        'content' => [// 模板内容
            ['下单时间', '{create_time}', 'time4'],
            ['订单编号', '{order_no}', 'character_string2'],
            ['商品信息', '{body}', 'thing3'],
            ['订单金额', '{order_money}', 'amount5']
        ],
        'keyword_name_list' => ["下单时间", "订单号", "商品名称", "支付金额"],// 选用的类目模板的关键词,按顺序传入,如果为空,或者关键词不在模板库中,会返回40246错误码
        'tips' => '使用该消息请将微信公众号服务类目选择为:生活服务——>百货/超市/便利店'
    ]// 提示信息
];

weapp.php 定义微信小程序订阅消息提醒

关键代码参考:

php
<?php
return [
    'shop_order_pay' => [ // 消息模板key
        'tid' => '30808', // 模板编号
        'content' => [ // 模板内容
            [ '订单编号', '{order_no}', 'character_string1' ],
            [ '下单时间', '{create_time}', 'time2' ],
            [ '商品名称', '{body}', 'thing4' ],
            [ '订单金额', '{order_money}', 'amount3' ],
        ],
        'kid_list' => [ 1, 2, 4, 3 ], // 开发者自行组合好的模板关键词列表,关键词顺序可以自由搭配(例如 [3,5,4] 或 [4,5,3]),最多支持5个,最少2个关键词组合
        'scene_desc' => '订单支付之后通知', // 服务场景描述,15个字以内
        'tips' => '使用该消息请在小程序的服务类目中添加类目:一级类目:商业服务 二级类目:软件/建站/技术开发' // 提示信息
    ]
];

调用消息发送

上面定义配置好后,就可以通过下面的方法发送消息了

use app\service\core\notice\NoticeService;

( new NoticeService() )->send('member_verify_code', [
    'code' => $code,
    'mobile' => $mobile
]);

send方法$key参数表示消息的key, $data参数是数组

niucloud-admin框架会根据您配置的某个消息类型的定义,循环发送实现的消息端口

基于 MIT 协议发布