SlackのSlash Commandsを使って、Slack上で使えるコマンドを作成してみます。
設定方法
Slackワークスペースにログイン後、Slackアプリの作成ページからアプリを作成します。
アプリ作成後、ダッシュボードの左メニューにあるFeatures > Slash Commandsを選択します。
Create New Commandをクリックします。
コマンド名やリクエストURLを設定します。
Commandには今回作成するコマンド名を「/」から始まる形で入力、Request URLにはコマンド実行時にリクエストを送信するURLを指定します。
このRequest URLに設置するファイルの実装は後ほど行いますので、ファイルを設置するURLを指定してください。
「Escape channels, users, and links sent to your app」のチェックは、コマンド実行時に送信される内容に含まれるチャンネル名やユーザー名、URLをエスケープするかどうかになります。
今回は使用予定がないのでチェックを入れませんが、ユーザーやチャンネルのメンションを含んだコマンドを実行する場合はチェックを入れておいた方がよさそうです。
これでコマンドが作成できました。
次にアプリをワークスペースに追加します。
左メニューのFeatures > OAuth & Permissionsを選択します。
OAuth Tokens & Redirect URLsのInstall to Workspaceをクリックします。
ワークスペースにアクセスするための許可を求められるので、Allowをクリックします。
ワークスペースへのアプリの追加が完了しました。
実装
先ほどの設定でコマンド実行時に「Request URL」のURLにリクエストを送信するように設定しましたが、次はそのURLに設置するファイルの実装を行います。
今回は簡単に、コマンドを実行したチャンネル、ユーザー名とコマンドの内容を返すようにPHPで記述してみます。
$channel_name = $_POST["channel_name"]; $user_name = $_POST["user_name"]; $message = $_POST["text"]; echo "${channel_name}で${user_name}さんが${message}と送信しました。";
Slack上で作成したコマンドを試してみます。
/コマンド名 コマンド内容
コマンドを実行したチャンネル、ユーザー名、内容でメッセージが返ってくればOKです。
コメントが承認されるまで時間がかかります。