LaravelでSlackを使ってみましょう
Laravelを用いて開発していたWEBシステムからSlackへメッセージを送りたいという依頼がありました。
Slackは有名なグループチャット、1対1のメッセージング、音声通話のアプリです。
テックなサードパーティーサービスを追加することができるのでIT業界では非常に使われています。
この記事でステップバイステップにPHPのアプリケーションにSlackを使うことを説明したいと思います。
Slack API
Slackは豊富な各種サードパーティーサービスと連携することができ、非常に便利で分かりやすいAPIを持っています。
使っているSlackワークスペースの権利があればAppというものを作ることで当ワークスペースで様々なSlack機能を制限しコントロールすることができます。
Appの権利を設定したら安全でAPIを使うことができます。
例えば以下の画像の権利(chat:write)ではチャンネル作成や削除する等はできません。
チャットメッセージ書込権利しかもっていないので、これしかできないAppになります。
このように使う機能の権利のみを与えるのは、ベストプラクティスです。
Slack APIの多数の機能はhttps://api.slack.com/でよく説明されています。
携わっていたプロジェクトの目標はSlack APIのメソッドをLaravelで操ることです。これをするには二つの方法を使いました。
その一つはLaravelコマンドです。
Laravelコマンド
Laravelコマンドバスは、シンプルで分かりやすい「コマンド」として、実行する必要のあるアプリケーションのタスクをカプセル化する便利なメソッドです。
Slack Apiをテストしたいのならこれから始めたらいい思いました。
新しいコマンドクラスは、make:command の Artisan CLIで生成できます。
例えば:
php artisan make:command SendSlackMessage
生成されたクラスは、app/Commandsディレクトリーへ作成されます。
コマンドを起動したらhandleの部分が読み込み実行されます。
Slack Apiでメッセージを送信するコマンドを作りたかったので、まずはコマンドに引数を追加する必要がありました。
次はAPIに基づいた処理を書くことです。handle関数の中でSlack APIが求める内容をHTTPリクエストに書いて送ったら、レスポンスをリターンに返すことです。
コマンド作成し終わったらテストして成功です。
次はコマンドではなくLaravelのコントローラーでAPIを使いましょう。
コントローラーでAPIを使ってみよう
APIをコントローラーで上手く利用するためにLaravel Slack ApiのComposerパッケージを使いましょう。
https://github.com/vluzrmos/laravel-slack-api
composer require vluzrmos/slack-api
これをインストールするとコントローラーの中で簡単にSlack Apiを使うことができます。
こうすると便利なメソッドでSlack Apiを使うことができます。
これで便利にSlackの機能を使えます。
例えばメッセージをコントローラーからslackへメッセージ送信させたいのなら下記のコードを使います。
$chat[] = SlackChat::message($channel, $msg);
SlackChat::message
関数で引数に記入されたメッセージを入力したチャンネルに書きます。
Apiは実行するとレスポンスが返されるので$chat[]の変数に保存します。
レスポンスでこのApiコールが成功したかどうかを確かめます。
あるApiコールはどんなレスポンスを発生するのかはhttps://api.slack.com/ に詳しく書いています。
私たちの場合だったらchat.postMessageのメソッドです。
このメソッドのページのExample responsesのところを見ると成功しているレスポンスとエラーのレスポンスの例が書いてあります。
レスポンスで返されたokのところを確認することで、Apiコールがちゃんと成功したを確かめることができ、コントローラーのリターンまでにも使えます。
レスポンスの中にあるts変数も非常に大事です。各メッセージのIDになるのでメッセージを削除したり編集したりしたいのなら不可欠です。
if($chat[0]->ok) {
$ts = $chat[0]->ts;
...
そうすると削除したい場合はdeleteのSlack Apiコールで簡単にできます。
$chat[] = SlackChat::delete($channel ,$ts);
まとめ
Slack Apiの使い方を少しだけ紹介していましたがチャットメッセージだけでなく色んな機能も使うことができます。
是非見てください、役に立っている機能あるかもしれません。
リモートワークが段々発展するIT業界ではコミュニケーションが更に大事になっているので、どこでも使えるSlackをもっと利用すればいいと思います。
おしまい。
ジェイオンラインではスタッフを随時募集しております。
採用情報ページよりお気軽にお問い合わせください。