はじめに
Laravelではslack-notification-channel
というslackへ通知する仕組みが存在しています。
https://laravel.com/docs/5.8/notifications#slack-notifications
しかし、Incoming Webhook
を使用しているためfile upload等をすることができません。
今回自分はアプリケーションログをfile形式でslackへ通知したかったので、laravel-slack-apiライブラリを使用してみました。
今回は使い方の紹介となります。
※最終コミットが2016年でしたが、問題なく動きました。
アプリケーションログをfile形式でslackへ通知した際のイメージです。
設定
laravel-slack-apiのreadme.mdに沿って進めています。
また、slack botの設定はこの記事の最後に手順を書いております。
インストール
composer require vluzrmos/slack-api
providers、config等の追加
'providers' => [
Vluzrmos\SlackApi\SlackApiServiceProvider::class,
]
//...
'aliases' => [
'SlackApi' => Vluzrmos\SlackApi\Facades\SlackApi::class,
'SlackChannel' => Vluzrmos\SlackApi\Facades\SlackChannel::class,
'SlackChat' => Vluzrmos\SlackApi\Facades\SlackChat::class,
'SlackGroup' => Vluzrmos\SlackApi\Facades\SlackGroup::class,
'SlackFile' => Vluzrmos\SlackApi\Facades\SlackFile::class,
'SlackSearch' => Vluzrmos\SlackApi\Facades\SlackSearch::class,
'SlackInstantMessage' => Vluzrmos\SlackApi\Facades\SlackInstantMessage::class,
'SlackUser' => Vluzrmos\SlackApi\Facades\SlackUser::class,
'SlackStar' => Vluzrmos\SlackApi\Facades\SlackStar::class,
'SlackUserAdmin' => Vluzrmos\SlackApi\Facades\SlackUserAdmin::class,
'SlackRealTimeMessage' => Vluzrmos\SlackApi\Facades\SlackRealTimeMessage::class,
'SlackTeam' => Vluzrmos\SlackApi\Facades\SlackTeam::class,
]
'slack' => [
'token' => env('SLACK_TOKEN'),
]
slackで発行されたトークンを記載する
SLACK_TOKEN='xoxb-xxxxx'
使い方
$php artisan tinker
から簡単に動作確認できます。
シンプルなメッセージを送る
SlackChat::message('#test', 'ピピッカチュウ');
テキストをfileとして送る
SlackFile::upload([
'filename' => 'ピーカ.txt',
'initial_comment' => 'ピカピカーチュ',
'content' => "ピーカ、チューウ!ピーカ、チューウ!ピーカ、チューウ!ピーカ、チューウ!\n",
'channels' => '#test'
]);
slackボットの設定
下記はslackボットの設定方法です。
slack Appの作成
slack apiから設定を行う。
Bot Userの作成
scopeの設定
botから投稿する場合はchat:write:bot
を付与する。
連携許可
Bot User OAuth Access Token
Bot User OAuth Access Tokenをlaravel側のslack tokenに設定してください。