if1024/laravel-wechat-notification

Wechat template message for Laravel Notification

0.0.1 2023-01-10 02:25 UTC

This package is auto-updated.

Last update: 2024-04-10 05:23:34 UTC


README

Laravel框架下基于 laravel-wechat 使用微信公众号模板消息作为notification通道的composer包。

Latest Stable Version Latest Unstable Version Total Downloads License

安装

$ composer require if1024/laravel-wechat-notification -vvv

使用

例子

<?php

namespace App\Notifications;

use If1024\LaravelWechatNotification\Messages\OfficialAccountTemplateMessage;
use If1024\LaravelWechatNotification\WechatMessage;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Notification;

class TestNotify extends Notification
{
    use Queueable;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }
    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via(mixed $notifiable): array
    {
        return ['official_account'];
    }

    public function toOfficialAccount(): OfficialAccountTemplateMessage
    {
        $data = [
            'first'    => 'first',
            'keyword1' => 'keyword1',
            'keyword2' => 'keyword2',
            'keyword3' => 'keyword3',
            'remark'   => 'remark',
        ];

        return WechatMessage::officialAccount()->template('template_id')
                            ->url('https://github.com/')
                            ->data($data);
    }
}

支持的 WechatMessage 方法

  • to(string $openid): 设置模板消息接收人的 openid
  • data(array $data): 设置模板消息数据
  • template(string $templateID): 设置模板消息的模板 ID
  • miniprogram(string $appid, string $pagepath): 设置点击模板消息后跳转的小程序,选填
  • url(string $url): 设置点击模板消息后跳转 url,选填

在模型里使用Notifiable triat 来快捷发送消息:

public function routeNotificationForOfficialAccount($notification)
{
    return $this->openid;//返回当前model内的公众号openid字段
}

然后这样发送模板消息。可参考官方文档:消息通知->发送通知

use App\Notifications\TestNotify;

$user->notify(new TestNotify());

批量发送消息

use Illuminate\Support\Facades\Notification;
use App\Notifications\TestNotify;

$users = \App\Models\User::all();
Notification::send($users, new TestNotify());

说明

  1. 如果 miniprogramurl 同时存在,则优先使用小程序跳转,详情请参考官方文档
  2. data()方法接收一个数组,其 key 为模板消息中的关键字,value 可以为字符串或数组。如果为字符串,则默认颜色为 #173177 ;如果为数组,则第一个参数为显示的数据,第二个参数为字体颜色 可参考颜色设置

感谢

感谢 github 上的各位大哥给的参考!感谢超哥的easywechat

License

MIT