Slackへ通知/Laravel

Contents

Slack準備

Slackの通知先の場所(チャネル)を#myappとします。

原理

Slack側にWebhookというURLを発行してもらい、そこに対してメッセージを送るイメージです。

WebhookURL取得

以下のアドレスにアクセスします。

https://slack.com/services/new/incoming-webhook

すると、「チャンネルへの投稿」にて#myappを選択します。

「インテグレーションを追加する」ボタンを押下すると、WebhookURLと簡単?な説明がでてきます。このWebhookURLコピーしておき、プログラムから使用します。

PHPのHTTPクライアントライブラリ

Guzzleをインストール

プロジェクトの直下デパッケージを追加します。

composer require guzzlehttp/guzzle

上記の処理はLaravel5.7まで必要でした。

ドライバーのエラーが出て5.8よりComposerでSlackの通知チャンネルをインストールする必要がる事を知ったので、上記のインストールが必要なのか不明です。すみません。

Laravel5.8から

composer require laravel/slack-notification-channel

プログラム

メッセージが#myappへ送れる事を確認します。

通知クラス

php artisan make:notification SlackPosted

このコマンドで通知クラスが作成されます。

C:\var\www\ecblue\sqlsrv\app\Notifications\SlackPosted.php

これを書き換えます。

通知先クラス

C:\var\www\ecblue\sqlsrv\appに

Hoge.phpを作成します。

通知先を返すメソッドを追加します。

routeNotificationForXXXのXXXの部分に書かれた情報を元にドライバ情報を読み込んでくるとの事なので、このrouteNotificationForSlackとします。

つまり、routeNotificationForSlackがWebHookURLを返す関数となります。

通知先を記述します。

ルーティング

解説

通知は2つの方法で送信されます。これは、Notifiableトレイトのnotifyメソッドによる方法です。

通知クラスにtoSlackメソッドを定義する必要があります。

このメソッドは$notifiableエンティティを受け取り、Illuminate\Notifications\Messages\SlackMessageインスタンスを返す必要があります。っと公式解説にあります。

プログラムを見ると、いまいち理解できません。

このように書けばメッセージが飛ぶと思いましょう。

送信

結果

さいごに

掲示板(っぽい)のと組み合わせて、投稿があったら、通知する仕組みを今度作ってみたいと思います。メールやLineへも送れるみたいなので、機会があればやってみます。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする