Laravel Slack уведомление по требованию; где установить webhook? - PullRequest
0 голосов
/ 19 мая 2019

Согласно документации Laravel, я могу сделать уведомление по требованию в контроллере, как это:

use Notification;
use App\Notifications\TradeSuccessful;

$trada_data = array( 'title' => 'test', 'amount' => 123.45 )

Notification::route('slack', '#test')->notify(new TradeSuccessful($trade_data));

И в TradeSuccessful (пример кода):

public function toSlack($notifiable)
    {
        return (new SlackMessage)
            ->success()
            ->content('One of your invoices has been paid!')
            ->attachment(function ($attachment) use ($trade_data) {
                $attachment->title('Invoice 1322')
                    ->fields([
                    'Title' => $trade_data['title],
                    'Amount' => $trade_data['amount]
                ]);
            });
    }

Основной вопрос: когда я использую подобные уведомления (по требованию), где я могу установить Slack? Потому что в документации они используют:

public function routeNotificationForSlack($notification)
    {
        return 'https://hooks.slack.com/services/...';
    }

Но эта функция определена в модели, а при использовании уведомлений по запросу в модели ничего не определяется.

1 Ответ

0 голосов
/ 19 мая 2019

Из документации :

Уведомления по требованию

Иногда вам может потребоваться отправить уведомление кому-то, кто не является хранится как «пользователь» вашего приложения. С использованием Notification::route метод, вы можете указать специальное уведомление информация о маршрутизации перед отправкой уведомления:

Notification::route('mail', 'taylor@example.com')
            ->route('nexmo', '5555555555')
            ->notify(new InvoicePaid($invoice));

В случае Slack указанный вами маршрут должен быть веб-хуком:

use Notification;
use App\Notifications\TradeSuccessful;

$trada_data = array( 'title' => 'test', 'amount' => 123.45 );

$slack_webhook = 'my-slack-webhook-url'; // <---

Notification::route('slack', $slack_webhook)->notify(new TradeSuccessful($trade_data));
                             ^^^^^^^^^^^^^^

Конечно, вы должны хранить это как ключ env(), но вы поняли.

...