Как использовать несколько слабых webhook для уведомлений Laravel

Я пытаюсь отправить слабые сообщения через уведомление Laravel.

когда такие события, как signed up, leave и т. д., используя разные каналы.

Но здесь есть проблема, потому что Laravel поддерживает только один URI Hook или я просто не знаю, как установить различные URI Hook канала.

Как я смогу отправлять различные виды слабых сообщений на разные каналы?

Заранее спасибо.

Ниже приведены мои коды уведомлений о регистрации:

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\SlackMessage;

/**
 * Class SignedUp
 * @package App\Notifications
 */
class SignedUp 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($notifiable)
    {
        return [
            'slack',
        ];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed $notifiable
     * @return SlackMessage
     */
    public function toSlack($notifiable)
    {
        return (new SlackMessage)
            ->success()
            ->content("Welcome");
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
}

А вот мой код модели пользователя:

<?php

namespace Illuminate\Foundation\Auth;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
use Illuminate\Notifications\Notifiable;

class User extends Model implements
    AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract
{
    use Authenticatable, Authorizable, CanResetPassword, Notifiable;

    /**
     * Route notifications for the Nexmo channel.
     *
     * @return string
     */
    public function routeNotificationForSlack() : string
    {
        return 'slack webhook uri';
    }
}

0 ответов

Добавить в Users.php

protected $webhook;

public function routeNotificationForSlack(  ) {
  if($this->webhook){
    return config('slack.channels.'.$this->webhook);
  }
}

public function slackChannel($channel){
    $this->webhook = $channel;
    return $this;
}

config / slack.php (создайте файл slack.php внутри config)

return [
    'channels' => [
        'name-of-channel' => 'webhook-url-of-channel',
        'name-of-next-channel' => 'webhook-url-of-next-channel'
    ]
];

Чтобы отправить уведомление на свободный канал

$user->slackChannel('name-of-channel')->notify(new Notification());
Другие вопросы по тегам