そのSlackアプリ Web APIで満足ですか?

こんにちは、CTO Officeチームの香取です。
主な業務は、情報システム部としての開発業務です。最近はコミュニケーション改善などのためにSlackアプリの開発を行っているので、今回はそれに関して紹介します。

どのようなSlackアプリを作成するときでも、まず利用するAPIを選択する必要があります。その際に目的に応じて適切なAPIを選択することで、よりリッチでユーザーフレンドリーなアプリの作成が可能になります。しかし、日本語記事が少ないためAPI選定に悩む人は少なくないと思います。そこで、ユーザーフレンドリーな皆さんが適切にAPIを選定できるよう、この記事を書きました。
最善なAPIを決める際には、よく使用される3つのAPIを含めた以下のチートシートを参考にすると良いと思います。以降では、これの説明として各APIの利用方法と利用例を紹介します。
(この記事はWhich API is right for your Slack app? – Slack Platform Blog – Mediumを参考に書きました。)

APIオブジェクト

先に、APIオブジェクトを説明します。
どのSlack APIを利用する場合も、7つのコアオブジェクトのどれかを利用します。

  • channel
  • file
  • group
  • im
  • mpim
  • user
  • usergroup

これらのオブジェクトはSlack teamのリソースに応じた情報を含みます。リソースに対して読み込み、書き込み、またはアクセスするためには、Slack appにオブジェクトのOAuthスコープが登録されている必要があります。

あなたのappに対してこれらのスコープが与えられると、必要なリソースにアクセスするためのAPIを使用できるようになります。これらのオブジェクトやそれに対応するリソースに関しては、オブジェクトタイプのドキュメントを参照して下さい。

Web API

Web APIはSlack上でリッチなインタラクティブメッセージを送るために最も重要な手段です。各メソッドは同様の呼び出し規約に基くHTTPリクエストによりSlackへデータを送り、レスポンスデータを受け取ることができます。メソッドはchannel、file、emoji reactionのすべてを操作するために設計されています。テスターがあるので、簡単に動作を試せます。

利用例

  • channelやDMからmessageなどのeventを送る
  • channelやuser groupを作成・編集する
  • file、message attachment、reactionをアップロード・編集する

Events API

Events APIは登録されたイベント発生時にあなたのサーバーへJSONペイロードを送ります。あなたのサーバーはペイロードを受け付ける必要があります。その際、独自API、Slack API、またはその他のAPIを呼び出すなど、応答の方法を決めて下さい。Slack appの設定ページからteamとbot userのイベントに対して登録することができます。

利用例

  • ユーザーがmessageを送信したり、channelを作成・編集したり、fileを追加・変更したときにイベントを受け取る
  • ユーザーがchannelに対してpin、star、reactionを追加したときにイベントを受け取る
  • ほぼリアルタイムにコミュニケーションするとき

RTM API

RTM APIは、イベントを受け取りSlackへmessageを送ることができるWebSocketを使います。RTM APIは、あなたがWeb APIへリクエスト(rtm.connectかrtm.startを使用して)を送った後に、すべての接続済みクライアントに対してイベントデータを送ります。もしあなたのappが複数もしくは大きなSlack teamへインストールされていると、リソースが圧迫されるので注意です。

Goでの実装例は弊社CTO金子のgolang で始める Slack bot 開発を参照してください。

利用例

  • Slackクライアントの立ち上げ
  • ほぼリアルタイムにコミュニケーションするとき

最後に

メッセージ送信やその他の情報を送るためにWeb APIを使った経験はあっても、イベントペイロードを取得するためにRTMやEvents APIを使ったことは無かったり、使い方を理解していない方は多いのではないでしょうか?そんな方は、是非以上のことを参考に適切なAPIを選択してイケてるSlack appを作ってみてください。

  • このエントリーをはてなブックマークに追加

エウレカでは、一緒に働いていただける方を絶賛募集中です。募集中の職種はこちらからご確認ください!皆様のエントリーをお待ちしております!

Recommend

Go言語製WAF GinでWebアプリを作ってみる【準備編】

Goで作ったAPIのドキュメントを自動で生成する