当 Notification 类实现 ShouldQueue 时,我正在努力发送 Slack 通知。
这就是我发送通知的方式
/**
* Handles the sendout of booking request confirmation to the customer
*
* @return void
*/
public function sendCustomerNotifications()
{
$this->booking->customer->notify((new CustomerBookingRequested($this->booking)));
}
这就是我的 CustomerBookingRequested 通知类的样子
class CustomerBookingRequested extends Notification implements ShouldQueue
{
use Queueable;
private $booking;
/**
* Create a new notification instance.
*
* @return void
*/
public function __construct(Booking $booking)
{
//
$this->booking = $booking;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail','slack'];
}
...
//code for toMail
...
/**
* Get the Slack representation of the notification.
*
* @param mixed $notifiable
* @return \Illuminate\Notifications\Message\SlackMessage
*/
public function toSlack($notifiable)
{
return (new SlackMessage)
->success()
->content('New booking requested!');
}
我的客户模型使用通知
class Customer extends Model implements HasLocalePreference
{
use HasFactory;
use Billable;
use SoftDeletes;
use Notifiable;
...
我还在我的客户模型中添加了路由方法
/**
* Route notifications for the Slack channel.
*
* @param \Illuminate\Notifications\Notification $notification
* @return string
*/
public function routeNotificationForSlack($notification)
{
return env('SLACK_WEBHOOK');
}
当我从 Notification 类中删除implements ShouldQueue时,会发送 Slack 和 Mail Message。当我保持实现 ShouldQueue 时,发送 Mail 消息,不发送 Slack 消息。
我基本上想向客户发送带有预订确认的邮件通知。同时我想向团队的 Slack 工作区发送一条 Slack 消息。这就是为什么我刚刚在客户模型中添加了一个静态 webhook URL,它链接到公司的 slack 工作区。
我有点卡在这里。可能这是显而易见的,但我找不到我做错了什么。
谢谢你的支持!
Using Laravel 8.0 with "laravel/slack-notification-channel": "^2.3"