Slackのリアクションを通知
- 2020/06/19
- aikawa







SlackのAPIを使って、リアクションが有ったら通知してみます。
今回は、通知をテキストで保存するだけ。
まずはAPIのURLへアクセス。
https://api.slack.com/apps
Create New Appを選択して、
App Nameに適当にReactionとか入れて、
Development Slack Workspace は、対象のワークスペースを選択し、Create Appを押します。
作成されたAppのページが表示されるので、Add features and functionality を表示させ、Event Subscriptionsを選びます。
Enable EventsをOnにして、Request URLを記載します。
Request URLはSlack側からアクセス可能である必要があるので、適当にサーバを用意します。
このURLにchallenge値を返すプログラムを設置して、成功するとVerifiedになります。
PHPだとこんな感じです。<?php次にSubscribe to bot eventsの下にあるSubscribe to events on behalf of usersをクリックして、
$str = file_get_contents('php://input');
$json = json_decode($str, true);
if(isset($json["challenge"])){
echo <<<DATA
HTTP 200 OK
Content-type: text/plain
{$json[challenge]}
DATA;
}
Add Workspace Eventをクリック、
reaction_addedを追加します。
bot eventの方だとリアクションしても通知が来ません。
右下のSave Changesをクリックして保存します。
左側のアプリ一覧から操作中のAppを選ぶ等でAppの画面へ戻って、
Install your app to your workspaceをクリックで表示させ、
Install App to Workspaceをクリックします。
Appがアクセスする権限をリクエストしていますと出るので、許可するをクリック。
戻るとInstall your app to your workspaceにチェックマークがついています。
これでリアクションをしたらRequest URLで記載したところに通知が行くようになるので、とりあえず先ほどのPHPでlogs/以下にテキストで保存するように追加してみます。
<?php
$str = file_get_contents('php://input');
$json = json_decode($str, true);
// save
if($json){
$dir = __DIR__."/logs";
if(!is_dir($dir)){mkdir($dir);}
$path = $dir."/".date("Ymd-His").".log";
$save = json_encode($json, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
file_put_contents($path, $save);
}
// check
if(isset($json["challenge"])){
// output
echo <<<DATA
HTTP 200 OK
Content-type: text/plain
{$json[challenge]}
DATA;
}Workspaceでリアクションをしてみて、ファイルが出来ていれば成功です。