はじめに
Slack API で遊んでみたところ、案外簡単に使えそうだったので
Slack API を使って何か作ってみよう!
というのがコトの始まりでした。
作ったもの
入力フォームに文字を入れてボタンを押すだけで特定のワークスペースのチャンネルに匿名で投稿ができるページ
を作りました。
このwebページにアクセス可能な人ならば、だれでもSlackに匿名でメッセージを投稿できます。
↓に動作時のgifを貼り付けておきました。左側がSlackで右側がchromeで開いているwebページです。
主なエッセンスは2つ
- Slack API の
chat.postMessage
をラップした URL ベースでアクセスできる API - Slack API を使うための
token
は見せないようにしたかった - 投稿先の
channel
やicon_emoji
やusername
は API 利用者が指定できないようにしたかった - 上記の API を呼び出すフォーム画面
作り方
とっても簡単です。参考記事等を載せておきますのでご活用ください。
①. Slack API Token の発行
Slack API Token にはレガシーで非推奨Token と推奨Token があるので、そこを認識した上で使いましょう
非推奨Token と推奨Token のお話と、Token の発行方法含めて、下記のページが参考になります。
②. Slack API の メソッドを確認
メソッドのリファレンスを確認して、Slack API でできることを確認してやりたいことの夢を膨らませましょう。
③. Slack API を呼んでみる
② で「これだ!」ってなったメソッドをお近くの HTTP クライアントなどを使って呼んでみましょう。
URL ベースで、引数も丁寧に説明が記載されているので理解しやすいと思います。
④. Slack API をラップする API を作る
ゼロから始める AWS SAM 入門で、サーバレスな API を簡単に作ることができるので、今回は API Gateway + Lambda の構成で API を自作しました。
Lambdaの実装は超シンプルで、受け取ったクエリパラメータの値を使ってSlackのAPIを叩くだけです。
⑤. フォーム画面を作る
④で作成した API を呼び出すフォームを作ります。
HTMLを書いて、簡単な入力フォームとapiを叩くajaxを実装してあげればおしまいです。
↑これぐらいで十分ですね。
使い所
今回作ったものの特徴はこんな感じです
- API を叩くだけなので使う人は Slack アカウントを持っていなくても投稿できる
- 投稿するとき投稿者の情報はないので、必然的に匿名の投稿になる
- 投稿先の
channel
やicon_emoji
やusername
は API 作成者の方で制限できる
なので、役割を持たせるとするならば、
- 特定のチャンネルにチームメンバーの意見や要望や質問を集めるご意見箱的な役割をもたせる
- 自作の API を呼び出すアプリケーションを実装して、オリジナルの bot を作る
このあたりでしょうかね。
今回は
特定のチャンネルにチームメンバーの意見や要望や質問を集めるご意見箱的な役割をもたせる
こちらを作成してみたという感じです。
おわりに
作ってみましたが、まだ実際に運用してはいないので役に立つかどうかはこれから検証しようと思います。
実装自体は非常に簡単なのですが、トークンの取り扱いには一応気を付けたほうがよさそうですね。
簡単だったのでみなさんも何か考えてみてはいかがでしょう?