You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需传递实体/模型,如何发送Laravel Slack通知?

答案:完全可以实现!

Laravel的通知系统设计得相当灵活,不需要绑定任何实体/模型(比如User::first()),也能轻松发送携带自定义数组详情的Slack通知。核心思路是使用Notification::route()方法直接指定通知渠道和对应的路由信息,跳过模型关联步骤。

具体实现步骤:

  1. 创建自定义Slack通知类
    先定义一个通知类,接收你需要的自定义数组(比如示例中的$task),然后在toSlack()方法里构造你想要的消息格式:

    namespace App\Notifications;
    
    use Illuminate\Notifications\Notification;
    use Illuminate\Notifications\Messages\SlackMessage;
    
    class TodoCompleted extends Notification
    {
        protected $taskDetails;
    
        // 接收自定义数组参数
        public function __construct(array $taskDetails)
        {
            $this->taskDetails = $taskDetails;
        }
    
        // 指定通知渠道为Slack
        public function via($notifiable)
        {
            return ['slack'];
        }
    
        // 构造Slack消息内容
        public function toSlack($notifiable)
        {
            return (new SlackMessage)
                ->success()
                ->content("任务「{$this->taskDetails['title']}」已完成!")
                ->attachment(function ($attachment) {
                    $attachment->fields([
                        '任务ID' => $this->taskDetails['id'],
                        '完成时间' => $this->taskDetails['completed_at'],
                        '任务描述' => $this->taskDetails['description'] ?? '无描述'
                    ]);
                });
        }
    }
    
  2. 直接发送通知(无需绑定模型)
    使用Notification::route()方法,指定Slack渠道的webhook地址(或者频道标识),然后调用notify()方法发送通知:

    // 你的自定义任务数组
    $task = [
        'id' => 123,
        'title' => '完成Laravel通知测试',
        'completed_at' => now()->toDateTimeString(),
        'description' => '测试无模型关联的Slack通知功能'
    ];
    
    // 发送通知
    Notification::route('slack', env('SLACK_WEBHOOK_URL'))
                ->notify(new TodoCompleted($task));
    

关键说明:

  • 这里的$notifiable参数其实是Laravel自动生成的一个匿名可通知对象,你完全不需要关心它的具体内容,因为我们的自定义数据已经通过构造函数传入了通知类。
  • 这种方式非常适合系统级通知、定时任务触发的通知等不需要关联用户/模型的场景,灵活度拉满。

内容的提问来源于stack exchange,提问作者eskimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:32:14