メインコンテンツへスキップ
ここでは、Slack から送信されるイベントを処理し、Box のユーザーやグループとの接続に必要なすべての情報を取得します。その機能を Box の関数に関連付ける必要があります。 この手順では、直前の手順で説明した関数をいくつか拡張し、新しい Box 機能を組み込みます。
  • Box クライアントをインスタンス化する
  • Box グループに Box ユーザーを追加する
  • Box グループから Box ユーザーを削除する
  • グループ名から Box グループ ID を取得する
  • グループと共有するコンテンツを追加する

Box クライアントのインスタンス化

Box API を呼び出すには、最初に Box クライアントを設定する必要があります。

グループへの Box ユーザーの追加

グループに Box ユーザーを追加する関数を追加します。ボットがチャンネルに追加され、チャンネルのすべてのユーザーを含む Box グループの作成が必要になった場合、またはその操作の後に 1 人のユーザーがチャンネルに参加した場合に、この関数によってそのタスクが実行されます。 メールアドレスを使用して Slack ユーザーを Box ユーザーと照合しているため、最初に、Slack のプロフィールのメールアドレスを使用して一致する Box ユーザーを検索します。見つかると、そのユーザーをチャンネルのグループに追加するための呼び出しが行われます。このグループは、ボットが最初に追加されたときに作成されています。
Box のユーザーを取得エンドポイントでは、ユーザー ID によるユーザー検索のみ許可されています。メールアドレスでユーザーを検索するには、会社ユーザーのリストを取得エンドポイントを使用し、filter_termオプションを検索対象のメールアドレスに設定します。

グループからの Box ユーザーの削除

Slack チャンネルから退出したユーザーや削除されたユーザーは、共有グループコンテンツにアクセスできなくなるように Box グループから削除することもできます。 このコードでは、Slack のチャンネル ID となるグループ ID を取得し、グループの全メンバーを取得します。メールアドレスに基づいて、Slack チャンネルを退出したユーザーに一致するメンバーが見つかると、そのユーザーはそのメンバーシップ ID を使用してグループから削除されます。
データストアによるパフォーマンスの向上グループメンバーシップを検索してメンバーシップ ID を取得すると、ローカルのデータストア (データベースなど) にメンバーシップ ID を保存する必要はなくなりますが、ユーザーレコードとともに Box メンバーシップ ID を保存するデータストアがあれば、このコードがより効率的なものになります。ローカルのデータストアを使用すると、メンバーシップ ID は、そのデータストアから取得できます。Box API を繰り返し呼び出してメンバーシップ ID を検索する必要はありません。

グループ名に対応した Box グループ ID の取得

次に必要な Box 関数には、主に 2 つの目的があります。
  • 既存グループの Box グループ ID を返します。
  • グループが存在しない場合、Box グループを作成してその ID を返します。
このコードでは、社内のすべてのグループを取得し、Slack チャンネル ID とグループ名の照合を試みます。いずれかのグループが一致すると、そのグループ ID が返されます。 一致するものがない場合は、新しい Box グループが作成され、そのグループの ID が返されます。グループの名前は Slack チャンネル ID に基づいて付けられます。これはスラッシュコマンドと User Event の両方で返される定数であり、追加の関数がなくても簡単に検索できるようにするためです。

グループへの共有コンテンツの追加

最終的に、このアプリケーション全体の主な目的は、ユーザーが自分の Box アカウントにあるファイルやフォルダをグループ内の他のユーザー全員と共有できるようにすることです。 ここまでのすべての機能を基に、次の関数でそのタスクを実行します。 このコードでは、最初に、コンテンツの共有先となる Slack チャンネル用に Box グループ ID を取得します。 スラッシュコマンドを送信したユーザーの Box アカウントからファイルやフォルダを共有するため、次に、そのユーザーの Box ユーザープロフィールをメールアドレスに基づいて取得します。 最後に、グループ ID を使用して、コンテンツでグループとコラボレーションするための呼び出しを行います。

まとめ

  • Box クライアントをインスタンス化しました。
  • Box グループユーザーを追加および削除するための関数を作成しました。
  • コンテンツをグループと共有するための関数を作成しました。