メインコンテンツへスキップ
アプリケーションのスキャフォールドを設定したら、次に、User Eventの処理機能と、Slackから送信されるスラッシュコマンドの処理機能を構築します。最終的に、これらの機能はそれぞれBox APIエンドポイントに渡されて、グループおよびコンテンツのコラボレーションタスクを実行します。 この手順では、直前の手順で作成した空の関数を拡張します。これらの関数では、以下のタスクを実行します。
  • Slackからの新しいイベントとスラッシュコマンドをリッスンする
  • これらのイベントとコマンドを処理して適切な関数に送る
  • ボットが初めてチャンネルに追加されたときにBoxグループに追加されるようにチャンネル内のすべてのSlackユーザーを処理する
  • Slackユーザーのプロフィール情報を取得してそのメールアドレスを取得する

Slackイベントのリッスン

Slackアプリケーションを構成したときに、3つのイベントのアプリケーションコードにイベントを送信するようSlackアプリケーションに指示しました。
  • ユーザーがチャンネルに参加したとき。
  • ユーザーがチャンネルから退出したとき。
  • ユーザーが/boxaddスラッシュコマンドを入力したとき。
このアプリケーションには、Slackからのこれらのメッセージをリッスンする公開ルートが必要です。このメッセージのペイロードは、次のようになります。
{
  "token": "cF1PwB1eIMcRHZWwFHJR1tgs",
  "team_id": "T932DQSV12P",
  "team_domain": "slacktest",
  "channel_id": "C078N43MFHU",
  "channel_name": "bottest",
  "user_id": "U016JCDPN56",
  "user_name": "testuser",
  "command": "/boxadd",
  "text": "file 123456",
  "response_url": "https://hooks.slack.com/commands/T541DQSV12P/3977594927231/ankvsRb42WKnKPRp002FeyTx",
  "trigger_id": "1189442196855.1183332180295.cca20c3ca1ea193dab432ad8e9e95431"
}

Slackイベントの処理

次に、受信したイベントを判定し、アプリケーションの適切な機能にそのイベントを渡します。

Slackユーザーの処理

次に、User Eventの処理方法を定義する必要があります。ここで説明すべきイベントは以下の3つです。
  • ボットがチャンネルに追加された。
  • 通常のユーザーがチャンネルに参加した。
  • 通常のユーザーがチャンネルから退出した。
このコードでは、最初に、この次の手順で定義するチャンネルのBoxグループIDを取得します。取得後、以下のようにユーザーが処理されます。
  • ユーザーがボットの場合は、Boxグループを初期化し、チャンネルの現在のユーザーをすべてBoxユーザーとしてグループに追加する必要があります。これは、既存のチャンネルに追加されるボットを構成するためです。この処理は、以前ユーザーが存在していたチャンネルにボットが再度追加される場合には無視されます。
  • ユーザーがチャンネルに参加した場合は、グループにユーザーを追加する必要があります。
  • ユーザーがチャンネルから退出した場合は、グループからユーザーを削除する必要があります。

Slackチャンネルユーザーの処理

ボットは、初めてチャンネルに追加されたときに、現在チャンネルに含まれている全ユーザーのリストを取得し、そのユーザーを含むBoxグループを作成してチャンネルの基礎を作成する必要があります。 このコードは、複数の処理を順番に実行します。
  • 最初に、Slack APIを呼び出し、チャンネルのすべてのメンバーを取得します。
  • limitを調整して、チャネルのユーザーをさらに収集できます。
  • 見つかったユーザーごとに、getSlackUserを呼び出してそのユーザーのプロフィールを取得し、メールアドレスをBoxユーザーのメールアドレスにマップできます。
  • 各ユーザーはaddGroupUserに送信され、グループに追加されます。

Slackユーザープロフィールの取得

Slackに関連した最後の関数は、他の関数によって使用されるユーティリティメカニズムです。この関数は、Slack APIを呼び出して、Slackイベント/コマンドが提供するユーザーIDまたはチャンネルユーザーのリストを取得したときに提供されるユーザーIDが指定されたユーザープロフィールを取得します。メールアドレスを使用してSlackユーザーをBoxユーザーと照合しているため、ユーザープロフィールの検索では、メールアドレスのフィールドに注意します。
Boxのメールアドレスは一意であり、複数のアカウントに使用することはできません。つまり、ユーザーアカウントの検索に使用すると効果的です。

まとめ

  • 受信イベントを確認し、処理するために転送しました。
  • イベントを処理し、適切な関数に転送しました。
  • チャンネル内のすべてのユーザーを処理する関数と1人のユーザーのSlackプロフィールを取得する関数を実装しました。