メインコンテンツへスキップ
ここでは、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グループユーザーを追加および削除するための関数を作成しました。
  • コンテンツをグループと共有するための関数を作成しました。