[扩展推荐] Laravel snooze 发送定时消息提醒(两天后,一小时后等)
Laravel Snooze 是由 Thomas Kane 所写的扩展包, 它简化了 Laravel 中的自动定时消息通知和提醒。
这个扩展包的自述文件有一些典型用例:
- 提醒系统(应用前1周,应用前1天,应用前1小时等)
- 跟踪调查(购买后2天)
- 登机电子邮件 Drips (注册后欢迎电子邮件,3天后额外提示,7天后向上销售报价)
- 短期定期报告(在接下来的4周内每周发送)
Snooze 为模型提供了一个名为snoozentifiable
的 Trait,它包含了一个 notifyAt()
方法:
use Thomasjohnkane\Snooze\Traits\SnoozeNotifiable;
class User extends Model {
use SnoozeNotifiable;
// …
}
// 制定一个生日通知
$user->notifyAt(new BirthdayNotification, Carbon::parse($user->birthday));
// 制定从现在开始一周后通知
$user->notifyAt(new NextWeekNotification, Carbon::now()->addDays(7));
// 制定一年最后一天通知
$user->notifyAt(new NewYearNotification, Carbon::parse('last day of this year'));
你甚至可以使用ScheduledNotification::create()
方法发送匿名通知:
$target = (new AnonymousNotifiable)
->route('mail', 'hello@example.com')
->route('sms', '56546456566');
ScheduledNotification::create(
$target, // 目标
new ScheduledNotificationExample($order), // 通知消息
Carbon::now()->addDay() // 发送时间
);
如果你有一些需要阻止消息通知发送的逻辑, 可以把逻辑定义在消息通知类:
public function shouldinterrupt($notifiable) {
return $this->invoice->is_paid;
}
想了解更多详细信息,请查看 Thomas Kane 的详细文章使用 Snooze 定制 Laravel 消息通知。
这个扩展包的选项和代码 API 为定时发送通知提供了愉快的体验,所以一定要通读所有的文档。
你可以在GitHub上的thomasjohnkane/snooze了解更多这个扩展包的信息, 获取全面的安装说明, 以及查看源代码。
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。