こんにちは、エンジニアの鞠谷です。
Slackのスラッシュコマンドはご存知でしょうか?
たとえばSlackの入力スペースで
open [チャンネル名]
と打つとそのチャンネルを開いてくれたりする機能です。
他にも様々なものがデフォルトで用意されています。
このスラッシュコマンドは自作して追加できるので、その方法を解説します。
目次
どんなものをつくろう
まずは仕様を書き出してみます。
- コマンド名は
/kuzibiki
- 引数は
A,B,C...
のようにスペースなしカンマ区切りで要素を並べる - 出力はランダムに選ばれた要素(のみ)
(入力) /kuzibiki A,B,C
(出力) A
- 引数を指定せずに投稿すると使い方が帰ってくる
(入力) /kuzibiki
(出力) (例)/kuzibiki A,B,C
こちらをつくっていきます。
Slackアプリをつくる
まずはSlackワークスペースにログインしてSlackアプリ作成ページを開きます
From scratchを選択します
アプリケーションの名前を入力してワークスペースを選択します
アプリケーションが作成されます
Verification Tokenをしらべる
Basic InformationのVerification Tokenをどこかにコピーしておきましょう
Google Apps Scriptをつくる
GoogleドライブからGoogle Apps Scriptをつくります
function doPost(e) {
// トークンで認証
var verificationToken = e.parameter.token;
if (verificationToken != 'xxxxxxxxxxxxxxxx') {
throw new Error('Invalid token');
}
const text = e.parameter.text;
// パラメータに何も入っていなかったら使い方を返す
if (!text) {
var res = {response_type: "in_channel", text: "(例)/kuzibiki A,B,C"};
return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
}
// パラメータに値が入っていたらランダムに1つ返す
const textArray = text.split(',');
const selectedVelue = textArray[ Math.floor( Math.random() * textArray.length ) ] ;
var res = {response_type: "in_channel", text: selectedVelue};
return ContentService.createTextOutput(JSON.stringify(res)).setMimeType(ContentService.MimeType.JSON);
}
verificationTokenに先程コピーした値を入力してください
ここで1つ解説しておきます。
response_type: "in_channel"
とすることで打ったコマンドおよび結果が自分だけでなく全体に表示されます。
Google Apps Scriptをデプロイする
作成したScriptをデプロイします
デプロイから新しいデプロイを選択します
必要な情報を入力してデプロイを選択します
デプロイが完了しました。ウェブアプリのURLを控えておいてください。
スラッシュコマンドをつくる
ここまで来たらあと少しです
ダッシュボードの左メニューにあるFeatures > Slash Commandsを選択します。
Create New Commandsを選択します。
以下のような感じで入力します
Request URLには先程コピーしたウェブアプリのURLを入力してください
Saveをクリックします
ワークスペースにインストールする
Basic InformationからInstall to Workspaceを選択します
許可するをクリックします
つかってみる
こんな感じで使用できます
おわりに
このように簡単に自作スラッシュコマンドをつくることができます。
ajikeエンジニアチームでは全員が入っている社内プロジェクトのレビュアー決めにくじ引きコマンドを使っています。
みなさんも何か自作してみてはいかがでしょうか?