laravelでslack通知を実装する

f:id:utr066:20180303102155j:plainlaravelにはメールやslack通知の機能が備わっている。

通知はmail、database、broadcast、nexmo、slackへ送れる。 通知するためのメソッドとして、以下のようなものが用意されている。

toMail()
toSlack()

複数指定して送ることもできる。 結構前にやったことだから忘れてるけど、メモを発見したので、とりあえず残しておく。

slack通知

laravelにはslackで通知するためのものが備わっている。

Notificationsを作成する

$ php artisan make:notification 好きな名前

作成されたクラスのvia関数を編集する。

public function via($notifiable)
{
    return ['slack'];
    // ['mail', 'slack']等複数指定も可能。
}

メッセージを作成する

use Illuminate\Notifications\Messages\SlackMessage;

public function toSlack($notifiable)
{
    return (new SlackMessage)
        ->success()
        ->content('問題が発生しました')
        ->attachment(function ($attachment) {
            $attachment->title('エラーです。')
                ->content('エラーログ。。');
        });
}

slack通知ならtoSlack()、メール通知ならtoMail()等の関数が存在する。

通知 5.3 Laravel

slack通知の文言の色やレイアウトは、少しカスタマイズできる。色々編集してみてslackに通知してみるといい。

WebHook URLを追加する

モデルに以下のようにメソッドを記述し、WebHook URLを追加する。

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

設定したslackのメソッドはnotifyで発火させることができる。