本開示のさまざまな実施形態は、添付の図面を参照して以下にさらに完全に説明される。ここでは本開示のいくつかの実施形態が示されるが、全ての実施形態が示されるわけではない。実際、本開示は、多くの異なる形態で実現され得て、ここで述べる実施形態に限定されるように解釈されるべきではない。むしろ、これら実施形態は、本開示が適用される法的要件を満足するように提供される。「又は」という語は、ここでは、そうではないと示される場合を除き、代替及び接続の意味の両方で用いられる。「実例の」及び「例示的な」という語は、品質のレベルを表すことなく、例示であるものとして用いられる。全体にわたって同様の番号は、同様の要素を参照する。
定義
ここで用いられるように「データ」、「コンテンツ」、「デジタルコンテンツ」、「デジタルコンテンツコンテンツオブジェクト」、「情報」という語、及び同様の語は、本発明の実施形態に従って送信、受信、及び/又は記憶されることが可能なデータを表すために相互交換的に用いられ得る。よって、任意のそのような語の使用は、本発明の実施形態の精神及び範囲を限定するように解釈されるべきではない。さらに、データを他の計算デバイスから受け取るための計算デバイスがここで記載されるが、このデータは、他の計算デバイスから直接に受け取られてもよく、又は、例えば、1つ以上のサーバ、リレー、ルータ、ネットワークアクセスポイント、基地局、ホスト、及び/又は同様のもののような、「ネットワーク」とここで呼ばれることもある、1つ以上の媒介する計算デバイスを介して間接的に受け取られてもよいことが理解されよう。同様に、計算デバイスは、他の計算デバイスにデータを送るようここでは記載されるが、このデータは、他の計算デバイスに直接に送られてもよく、又は1つ以上の中間計算デバイスを介して、例えば1つ以上のサーバ、リレー、ルータ、ネットワークアクセスポイント、基地局、ホスト及び/又はその他を介して、間接的に送られてもよいことが理解されるだろう。
「クライアントデバイス」という語は、サーバによって利用可能にされたサービスにアクセスするよう構成されたコンピュータハードウェア及び/又はソフトウェアを表す。サーバは、しばしば(いつもではないが)他のコンピュータシステム上にあり、その場合、クライアントデバイスは、ネットワークによってサービスにアクセスする。クライアントデバイスは、限定としてではなく、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、ウェラブル機器、パーソナルコンピュータ、エンタープライズコンピュータ等を含み得る。
「グループベース」は、規定されたグループのユーザ群にだけアクセス可能であるのに十分なセキュリティを有するシステム、チャンネル、メッセージ、又は仮想環境を表すためにここでは用いられている。このグループは、組織又は商業エンタープライズのもののようなコモンアクセス信任状によって定義され得る。アクセスは、参加するための認証された要求又はあるグループメンバユーザから他の非メンバユーザに送信された参加するための招待によってさらに促進され得る。グループ識別子(以下に定義される)は、データ、情報、メッセージ等を特定のグループと関連付けるために用いられる。
「グループベースコミュニケーションチャンネル」という語は、当該グループのメンバだけに閲覧可能である、チャンネルメンバ(例えばクライアントデバイスを用いて環境にアクセスする認証されたユーザ)によってポストされたメッセージングコミュニケーションを表示するよう構成された仮想的な通信環境つまりフィードを表す。グループベースコミュニケーションチャンネルのフォーマットは、グループベースコミュニケーションチャンネルの異なるメンバには異なるように見えるかもしれない。しかし、グループベースコミュニケーションのチャンネルのコンテンツ(すなわちメッセージングコミュニケーション)は、そのグループベースコミュニケーションチャンネルのそれぞれのメンバに表示される。例えば、グループベースのメッセージングコミュニケーションの共通セット(common set)は、それぞれのグループベースコミュニケーションチャンネルのそれぞれのメンバに表示されて、グループベースコミュニケーションチャンネルのコンテンツ(すなわちメッセージングコミュニケーション)がグループベースコミュニケーションチャンネルのメンバごとに変わらないようにする。
「ユーザ」という語は、個人、企業、組織等の個人、グループを表すと理解されるべきであり、ここで参照されるユーザ群は、クライアントデバイスを用いてグループベースコミュニケーション又はメッセージングシステムにアクセスしている。グループベースコミュニケーションシステムのそれぞれのユーザは、少なくとも1つのグループ識別子と関連付けられている。それぞれのグループ識別子は、ユニークな数である。例えば、ある実施形態では、グループ識別子は、64ビットの符号なし整数として記憶され、外部的には(メモリの外では)ベース34でエンコードされた文字列であり得る。
「ユーザプロフィール」、「ユーザアカウント」、及び「ユーザアカウント詳細」という語は、ユーザと関連付けられた情報を表し、これには、例えば、ユーザ識別子、そのユーザがアクセスを認められているグループベースコミュニケーションチャンネルと関連付けられた1つ以上のグループベースコミュニケーションチャンネル識別子、そのユーザが関連付けられているグループの1つ以上のグループ識別子、そのユーザがいずれかのグループベースコミュニケーションチャンネルのオーナーであるかについての表示、ユーザがいずれかのグループベースコミュニケーションチャンネルの制限を有するかについての表示、複数のメッセージ、複数の絵文字、複数の会話、複数の会話トピックス、アバター、電子メールアドレス、実名(例えばJohn Doe)、ユーザ名(例えばjdoe)、パスワード、実名、時間帯、ステータス等が含まれる。ユーザアカウント詳細は、例えば、そのユーザのユーザ名及びパスワードを含むそのユーザのログイン情報のようなユーザ資格情報(user credentials)のサブセット指定を含み得る。
「グループベースコミュニケーションチャンネル識別子」又は「チャンネル識別子」という語は、グループベースコミュニケーションチャンネルが特定され得るデータの1つ以上のアイテムを表す。例えば、グループベースコミュニケーションチャンネル識別子は、ASCII(American Standard Code for Information Interchange、情報交換用米国標準コード)テキスト、ポインタ、メモリアドレス等を含み得る。
「グループ識別子」又は「チーム識別子」は、グループベースコミュニケーションシステム内のグループが特定され得るデータの1つ以上のアイテムを表す。例えば、グループ識別子は、ASCIIテキスト、ポインタ、メモリアドレス等を含み得る。
ここで用いられるように、「メッセージングコミュニケーション」及び「メッセージ」という語は、クライアントデバイスを用いてユーザによって提供される、グループベースコミュニケーションチャンネル内で表示されるよう構成された任意の電子的に生成されたデジタルコンテンツオブジェクトを表す。メッセージ通信は、ユーザによって提供される(クライアントデバイスを用いて)任意のテキスト、画像、動画、オーディオ又はそれらの組み合わせを含み得る。例えば、ユーザは、メッセージコンテンツとしてメッセージングコミュニケーションの中で画像及び動画と共にテキストを含むメッセージングコミュニケーションを提供し得る。そのような場合、テキスト、画像、及び動画は、メッセージングコミュニケーション又はデジタルコンテンツオブジェクトを構成し得る。グループベースコミュニケーションシステムのグループベースコミュニケーションチャンネルに送信又はポストされたそれぞれのメッセージは、以下を含むメタデータを含み、すなわちこのメタデータは、送信するユーザの識別子、メッセージ識別子、メッセージコンテンツ、グループ識別子、及びグループベースコミュニケーションチャンネルの識別子を含む。上述の識別子のそれぞれは、ASCIIテキスト、ポインタ、メモリアドレス等を含み得る。
「送信ユーザ識別子」は、特定のユーザ(すなわち特定のユーザに関連付けられたクライアントデバイス)によって送られるメッセージのコレクションと関連付けられる。これらメッセージは、ユーザに関するコンテキストを決定するために分析され得る(例えばあるトピックにおけるユーザの専門知識又は興味は、そのようなメッセージの中のそのトピック又はそのトピックに関連付けられたキーワードの言及の頻度に基づいて決定され得る)。
グループベースコミュニケーションシステムユーザは、組織グループに組織化され(organized)(例えばそれぞれの会社の従業員は、別々の組織グループであり得る)、それぞれの組織グループは、ユーザが割当され得る又はユーザが参加し得る(例えばグループベースコミュニケーションチャンネルは、部署、オフィスのような地理的位置、製品ライン、ユーザの関心、トピック、問題、及び/又はその他を表し得る)1つ以上のグループベースコミュニケーションチャンネル(以下で説明される)を有し得る。グループ識別子は、メッセージのためのアクセス制御を促進するのに用いられ得る(例えばサーチクエリに応答してサーチ結果の一部としてメッセージリターンを持つようなメッセージへのアクセスは、それらのユーザプロフィールに関連付けられたグループ識別子を有するそれらユーザに制限され得る)。グループ識別子は、メッセージについてのコンテキストを決定するのに用いられ得る(例えば組織の名称及び/又は組織の簡単な説明のようなグループの記述がグループ識別子に関連付けられ得る)。
グループベースコミュニケーションシステムユーザは、グループベースコミュニケーションチャンネルに参加し得る。一部のグループベースコミュニケーションチャンネルは、それらのユーザプロフィールに関連付けられた特定の組織グループ識別子を有するそれらユーザにとってはグローバルにアクセス可能であり得る(すなわちその組織のメンバであるユーザ)。一部のグループベースコミュニケーションチャンネルへのアクセスは、特定のグループのメンバに制限され得て、それによってグループベースコミュニケーションチャンネルは、それらのユーザプロフィールに関連付けられた特定のグループ識別子を有するそれらユーザにアクセス可能である。グループベースコミュニケーションチャンネル識別子は、メッセージについてのアクセス制御を促進するために用いられ得る(例えば、サーチクエリに応答してサーチ結果の一部としてメッセージリターンを持つようなメッセージへのアクセスは、それらのユーザプロフィールに関連付けられたグループ識別子を有し、又はグループベースコミュニケーションチャンネルに参加する能力を有するそれらユーザに制限され得る)。グループベースコミュニケーションチャンネル識別子は、メッセージのコンテキストを決定するのに用いられ得る(例えば、グループベースコミュニケーションチャンネルで議論されるプロジェクトの説明のような、グループベースコミュニケーションチャンネルの説明は、グループベースコミュニケーションチャンネル識別子に関連付けられ得る)。
「プライベートグループベースコミュニケーションチャンネル」という語は、制限されたアクセスを持つことによって、グループベースコミュニケーションシステムの他のメンバによって一般にはアクセス可能ではなく及び/又はサーチ可能ではないグループベースコミュニケーションチャンネルを表す。例えば、プライベートグループベースコミュニケーションチャンネルへのアクセスについての知識及び許可を有する(例えば、ユーザが確認(validated)/認証された後に、プライベートグループベースコミュニケーションチャンネルについてのグループベースコミュニケーションチャンネル識別子がそれらのユーザプロフィールに関連付けられる)ユーザ又は管理者だけが、プライベートグループベースコミュニケーションチャンネルのコンテンツを見ることができる。
「グループベースコミュニケーションリポジトリ」という語は、グループベースコミュニケーションシステムによって、データが記憶され、アクセスされ、変更され、及びそれ以外のやり方で維持される場所を表す。記憶されたデータは、グループベースコミュニケーションシステムの操作を促進する情報を含む。グループベースコミュニケーションリポジトリは、データ記憶装置又は装置群として、別個のデータベースサーバ又はサーバ群として、又はデータ記憶装置及び別個のデータベースサーバ群の組み合わせとして実現され得る。さらに、ある実施形態では、グループベースコミュニケーションリポジトリは、分散されたリポジトリとして実現されることによって、記憶されたデータのうちの一部は、グループベースコミュニケーションシステム内のあるロケーションで集約的に記憶され、他のデータは、単一の遠隔地又は複数の遠隔地群において記憶され得る。代替として、ある実施形態では、グループベースコミュニケーションリポジトリは、複数の遠隔記憶ロケーション群だけにわたって分散され得る。
ここで用いられるように、「サードパーティアプリケーション」という語は、グループベースコミュニケーションシステム内で機能を実行するよう構成されているソフトウェアプログラム、プラットフォーム、又はサービスを表す。サードパーティアプリケーションは、アプリユーザを介してグループベースコミュニケーションシステム内のグループにおいて集積され得る。例えば、サードパーティアプリケーションは、サードパーティアプリケーションプロバイダによって提供され、サードパーティアプリケーションプロバイダによって記憶及び維持されるサービスとしてのソフトウェア(SaaS)製品又はアプリケーション(App)製品であり得る。そのような例では、グループベースコミュニケーションシステムにアクセスするクライアントデバイスは、クライアントデバイスのユーザが関連付けられているグループを介してSaaS又はApp製品にアクセスし得る。
ここで用いられるように、「サードパーティアプリケーションプロバイダ」という語は、サードパーティ個人、会社、又は組織によって維持された、サーバ又は処理デバイスのようなリモートネットワーク接続されたデバイスによるサードパーティアプリケーションのプロバイダを表す。グループベースコミュニケーションシステムにおけるクライアントデバイスは、サードパーティアプリケーションプロバイダによって提供されるサードパーティアプリケーションにアクセスして、機能、フロー、又はアクションを実行し得る。ある実施形態では、機能、フロー、又はアクションは、例えば、グループベースコミュニケーションシステム内でデータを操作すること、又はグループベースコミュニケーションシステム内でメッセージをポストすること、又はグループベースコミュニケーションインタフェースにおけるレンダリングのためにグループベースコミュニケーションシステムにコンテンツを提供することのような、なんらかの他のアクションを実行することによって、グループベースコミュニケーションシステム内で効果を作る。他の実施形態では、機能、フロー、又はアクションは、サードパーティアプリケーションプロバイダの中で効力を発して、サードパーティアプリケーションプロバイダの中で効果を作る。さらに他の実施形態では、機能、フロー、又はアクションは、グループベースコミュニケーションシステム、サードパーティアプリケーションプロバイダ、及び他のサーバ又はシステムのさまざまな組み合わせの中で効果を作る。
例えば、さらなる明瞭さ及び文脈を提供するために、サードパーティアプリケーションは、インストールプロセスの間にグループベースコミュニケーションシステムからアプリトークン(app token)をリクエストすることによって、グループベースコミュニケーションシステム内のその関連付けられたアプリユーザアカウントを介して、グループベースコミュニケーションシステムにおけるグループベースコミュニケーションオブジェクトへのアクセスを獲得する。一般に、前記アプリトークンを生成するためには、グループベースコミュニケーションシステムは、サードパーティアプリケーションプロバイダ及びグループベースコミュニケーションシステムのユーザとOAuth(オーオース)ワークフローを開始する。OAuthフロー内では、サードパーティアプリケーションプロバイダと関連付けられたリモートネットワーク接続されたデバイスは、サードパーティアプリケーションプロバイダによって提供されたサードパーティアプリケーションをインストールする権限(authorization)をグループベースコミュニケーションシステムのユーザから得る。グループベースコミュニケーションサーバは、サードパーティアプリケーションプロバイダによって送信されたユーザ権限を受信することに応答して、グループベースコミュニケーションシステム内にやはり記憶される、そのサードパーティアプリケーションプロバイダについてのアプリトークンをそれから生成する。サードパーティアプリケーションプロバイダは、アプリトークンを利用することによって、グループベースコミュニケーションシステム内のさまざまなグループベースコミュニケーションオブジェクトへのサードパーティアプリケーションアクセスを許可し得る。サードパーティアプリケーションプロバイダは、SaaS又はアプリ製品を提供する、サービスとしてのソフトウェア(SaaS)プロダクトプロバイダ又はアプリケーション(アプリ)プロダクトプロバイダであり得る。
ここで用いられるように、「サードパーティアプリケーションプロバイダ識別子」という語は、グループベースコミュニケーションシステム内でサードパーティアプリケーションを提供するサードパーティアプリケーションプロバイダが特定され得る手段である、データの1つ以上のアイテムを表す。例えば、サードパーティアプリケーションプロバイダ識別子は、ASCIIテキスト、ポインタ、メモリアドレス等を含み得る。
ここで用いられるように、「アプリユーザアカウント」及び「アプリユーザ」という語は、サードパーティアプリケーションを表現するよう構成され、サードパーティアプリケーションと関連付けられた、グループベースコミュニケーションシステム内のデータ構造を表す。さらに、アプリユーザアカウントは、それによってサードパーティアプリケーションがグループベースコミュニケーションオブジェクトにアクセスし、それらのグループベースコミュニケーションオブジェクトについてアクションを取り得る手段である。アプリユーザアカウントは、アプリケーション識別子を含み、これは、アプリユーザアカウントを、同じアプリケーション識別子をやはり含む単一のアプリトークンに関連付ける。
グループベースコミュニケーションシステムは、グループベースコミュニケーションシステム内のサードパーティアプリケーションのインストールごとに1つのアプリユーザアカウントを作成する。ある実施形態では、グループベースコミュニケーションシステムは、あるグループに属する全てのユーザの間で共有されるアプリユーザアカウントを1つだけ作る。その目的のために、アプリユーザアカウントは、グループ識別子も含み、これは、そのアプリユーザアカウントをそのグループ識別子と関連付けられた特定のグループと関連付ける。よって、サードパーティアプリケーションのグループへのインストールの間、そのグループベースコミュニケーションシステムは、アプリユーザアカウントをグループ識別子と関連付ける。
アプリユーザアカウント及びグループベースコミュニケーションシステムユーザが、両方とも同じグループ識別子を備えるとき、グループベースコミュニケーションサーバは、グループベースコミュニケーションシステムに、そのアプリユーザアカウントへのアクセスを与えることによって、グループベースコミュニケーションシステムユーザがアプリユーザアカウントを変更又は設定できるようにする。ある実施形態では、アプリユーザアカウントにアクセスし、変更する能力は、App DMを介してなされ、App DMは、以下の定義においてさらに説明される。ある実施形態では、グループベースコミュニケーションシステムは、サードパーティアプリケーションをグループに最初にインストールするグループベースコミュニケーションシステムユーザが、そのグループ内のどのグループベースコミュニケーションシステムユーザが、そのインストールされたサードパーティアプリケーションに関連付けられたアプリユーザアカウントを管理及び設定できるかを制限できるようにする。ある実施形態では、アプリユーザアカウントへのアクセス権を有するユーザの選択は、App DMを介してなされる。
ある実施形態では、アプリユーザアカウントは、例えば、「is_app_user」変数のような変数をさらに備える。このis_app_user変数は、ブール型変数、3値ロジックを利用する変数、又は状態又は論理ビットを記憶するのに適切な任意の他のデータ型として実現され得る。is_app_user変数がある値を記憶するとき、グループベースコミュニケーションシステムは、その値を利用することによって、他のユーザアカウントに一般に付与されるプロパティとは異なるプロパティをそのアプリユーザアカウントに付与し得る。例えば、ある実施形態では、グループベースコミュニケーションシステムは、そのアプリユーザアカウントが、他のグループベースコミュニケーションユーザができるようには、グループベースコミュニケーションチャンネルにアクセスを得ることを許さない。換言すれば、グループベースコミュニケーションシステムユーザができるようには、アプリユーザアカウントは、参加することを許されないか、又はグループベースコミュニケーションチャンネルのメンバになってそのグループベースコミュニケーションチャンネルについて許可を得ることを許されない。代わりに、本開示の詳細な説明において説明されるように、グループベースコミュニケーションシステムは、グループベースコミュニケーションチャンネル及び他のグループベースコミュニケーションオブジェクトについて、アプリユーザアカウントのアクセスを、グループベースコミュニケーションシステムユーザによって許可されたアクセスだけに制限する。
さらなる例として、ある実施形態では、is_app_user変数がある値を記憶するとき、グループベースコミュニケーションシステムは、どのユーザに対してもアプリユーザアカウントを介してグループベースコミュニケーションシステムにログインすることを許さない。すなわち、ログインURI(ユニフォームリソース識別子)において、グループベースコミュニケーションシステムは、アプリユーザアカウントの資格情報を、グループベースコミュニケーションユーザがグループベースコミュニケーションシステムにアクセスし得る資格情報としては、受け入れない。いかなるグループベースコミュニケーションユーザも、そのアプリユーザアカウントを用いてシステムにログインすることはできないが、それは、アプリユーザアカウントは、上で定義されたユーザアカウントではないからである。
最後に、それぞれのアプリユーザアカウントは、それに関連付けられたアプリトークンを有する。このアプリトークンは、サードパーティアプリケーションのインストールと同時に、グループベースコミュニケーションシステムによって生成される。アプリトークンは、以下で述べる定義においてさらに説明される。インストールの後に、アプリユーザアカウントは、そのアプリユーザアカウントに、1つ以上のグループベースオブジェクトにアクセスするためのさまざまな許可を付与することによって、グループベースコミュニケーションシステムのさまざまなグループベースオブジェクトに追加され得る。
ここで用いられるように、「アプリユーザ識別子」という語は、グループベースコミュニケーションシステム内のアプリユーザアカウントが識別され得るデータの1つ以上のアイテムを表す。例えば、アプリユーザ識別子は、ASCIIテキスト、ポインタ、メモリアドレス等を含み得る。
ここで用いられるように、「アプリトークン」という語は、グループベースコミュニケーションシステムがサードパーティアプリケーションのアイデンティティを認証し、そのサードパーティアプリケーションにグループベースコミュニケーションシステムにおける許可を付与するために利用し得る、アプリユーザアカウントに関連付けられた資格情報のセットを表す。アプリトークンは、サードパーティアプリケーションに関連付けられた許可を特定する情報を含む。
明瞭さ及び文脈を提供するために、ある例示的実施形態では、アプリトークンは、それぞれのサードパーティアプリケーションのためにユニークに生成された暗号列を含む。いったん、サードパーティアプリケーションがさまざまなグループベースコミュニケーションオブジェクトにアクセスすることをクライアントデバイスのユーザが承認付与したことを示す認証信号を認証モジュールが受信すると、グループベースコミュニケーションシステム内の認証モジュールは、アプリトークンをサードパーティアプリケーションプロバイダに発行する。アプリトークンの初期発行の後に、アプリユーザアカウントに付与された許可は、さらなる許可をユーザからリクエストし、アプリトークンに関連付けられた許可を変更することによってカスタマイズされ得る。許可のこれら後続の付与は、新しいアプリトークンがそのサードパーティアプリケーションプロバイダに発行されることを要求しない。
ここで用いられるように、「オブジェクト識別子」という語は、それによってグループベースコミュニケーションシステム内のグループベースコミュニケーションオブジェクトが特定され得る、データの1つ以上のアイテムを表す。例えば、オブジェクト識別子は、ASCIIテキスト、ポインタ、メモリアドレス等を含み得る。
ここで用いられるように、「オブジェクトタイプ」という語は、共通の特性を有するオブジェクトのカテゴリーを表す。例えば、グループベースコミュニケーションオブジェクトは、グループベースコミュニケーションチャンネル、プライベートグループベースコミュニケーションチャンネル、プライベートダイレクトメッセージ、プライベートマルチパーティダイレクトメッセージ、グループ又はチーム、チームについての情報、ユーザアカウント、グループベースコミュニケーションシステムユーザ、グループ識別子に関連付けられたグループベースコミュニケーションシステムユーザ、絵文字、メニュー、インタラクティブボタン、リンク、他のインタラクティブエレメント、ピクチャ、ファイル等としてカテゴライズされ得る。
ここで用いられるように、「グループベースコミュニケーションオブジェクト」は、グループベースコミュニケーションシステムにおけるオブジェクトを表す。ある実施形態では、サードパーティアプリケーションは、1つ以上のグループベースコミュニケーションオブジェクトに対してアクションを実行することが許可される。それぞれのグループベースコミュニケーションオブジェクトは、グループベースコミュニケーションシステムにおける特定のグループベースコミュニケーションオブジェクトをユニークに特定するオブジェクト識別子と、グループベースコミュニケーションオブジェクトが属するオブジェクトのカテゴリーを記述するオブジェクトタイプとを有する。
ここで用いられるように、「グループベースコミュニケーションアクション」という語は、サードパーティアプリケーションがグループベースコミュニケーションオブジェクトについてとり得るアクションを表す。グループベースコミュニケーションアクションは、例えば、メッセージをポストすること、メッセージを読むこと、メッセージを変更すること、メッセージについての情報にアクセスすること、メッセージ内のファイル、絵文字、インタラクティブエレメント等のようなコンテンツにアクセスすること、特定のチャンネルにメッセージをポストするためにワンウェイのウェブフックを作ること、メッセージ中のURLを閲覧すること、ユーザプロフィールを変更すること、ワークスペースにコマンドを追加すること、ファイル及び関連付けられた情報にアクセスすること、ユーザのアイデンティティを確認すること等を備え得る。
ここで用いられるように、「許可」という語は、(1)サードパーティアプリケーションがアクセス権を有するグループベースコミュニケーションシステム内のグループベースコミュニケーションオブジェクト、及び(2)そのようなグループベースコミュニケーションオブジェクトについてサードパーティアプリケーションがとり得るアクションを定義するグループベースコミュニケーションアクションを表す。ある実施形態では、サードパーティアプリケーションに付与された許可は、グループベースコミュニケーションリポジトリ107を介して記憶され、互いにマッピングされる。
ここで用いられるように、「候補グループベースコミュニケーションオブジェクトセット」という語は、共通のグループ識別子を共有するユーザのグループに属する全てのユーザに利用可能な全てのグループベースコミュニケーションオブジェクトを表す。仮にグループベースコミュニケーションオブジェクトのうちの一部が、そのグループのうちの一部のユーザに利用可能であって、他のユーザには利用可能ではないとしても、これらグループベースコミュニケーションオブジェクトは、候補グループベースコミュニケーションオブジェクトセットを備える。
ここで用いられるように、「候補グループベースコミュニケーションアクションセット」という語は、与えられたグループベースコミュニケーションオブジェクトについて潜在的に利用可能である全てのグループベースコミュニケーションアクションを表す。換言すれば、候補グループベースコミュニケーションアクションは、グループベースコミュニケーションシステムが、サードパーティアプリケーションに、グループベースオブジェクトに対して取ることを可能にし得るアクションである。例えば、ある実施形態では、サードパーティアプリケーションは、それに関連付けられたアプリユーザアカウントを介して、グループベースコミュニケーションチャンネルにおいて、メッセージにアクセスし、メッセージをポストし、及びファイル、絵文字等のような全てのコンテンツにアクセスする能力が潜在的に付与され得る。よって、グループベースコミュニケーションチャンネルにおいてメッセージを読むこと、メッセージを書くこと、及びコンテンツにアクセスすることは、候補グループベースコミュニケーションアクションセットを備える。追加の例として、ある実施形態では、サードパーティアプリケーションは、それに関連付けられたアプリユーザアカウントを介して、ユーザアカウントに関連付けられたグループについての基本情報にアクセスし、ユーザアカウントに関連付けられたグループを変更し、プロフィール及びユーザアカウントのプロフィール内の要素にアクセスし、ユーザアカウントに関連付けられたプロフィールを変更し、プロフィール内の情報にアクセスし、ユーザアカウントが関連付けられたグループに関連付けられた他のユーザの電子メールアドレスを閲覧し、及びユーザアカウントに関連付けられたプロフィールにおける情報を変更する能力を潜在的に付与され得る。ユーザアカウントに関するこれらの可能なアクションは、グループベースコミュニケーションオブジェクトである、そのユーザアカウントについての候補グループベースコミュニケーションアクションセットを備える。
ここで用いられるように、「許可されたグループベースコミュニケーションオブジェクトセット」という語は、アプリユーザアカウントがアクセス権を有するグループベースコミュニケーションオブジェクトのセットを表す。これら許可されたグループベースオブジェクトは、追加の許可をアプリユーザアカウントに(よってそのようなアプリユーザアカウントに関連付けられたサードパーティアプリケーションに)追加又は付与し得るユーザによってコンフィギュラブルである。ある実施形態では、アプリユーザアカウントの許可されたグループベースオブジェクトセットのレコードは、グループベースコミュニケーションリポジトリに記憶される。
ここで用いられるように、「許可されたグループベースコミュニケーションアクションセット」という語は、許可されたグループベースコミュニケーションオブジェクトについてアプリユーザが行うことを許される、グループベースコミュニケーションアクション群のセットを表す。許可されたグループベースコミュニケーションアクションのこのセットは、アプリユーザアカウントについて許可を追加し得るユーザによってコンフィギュラブルである。アプリユーザの許可されたグループベースコミュニケーションアクションセットのレコードは、グループベースコミュニケーションリポジトリに記憶される。
ここで用いられるように、「グループベースコミュニケーションスコープ」という語は、(a)オブジェクトタイプ及び(b)グループベースコミュニケーションアクションのペアリングを表す。このようにして、グループベースコミュニケーションスコープは、グループベースコミュニケーションアクション及びグループベースコミュニケーションシステムの関連付けられたオブジェクトタイプを定義する。例えば、コンテキストを提供するために、サードパーティアプリケーションに許可を付与することは、グループベースコミュニケーションスコープをサードパーティアプリケーションに付与することを備え得る。このようにして、サードパーティアプリケーションは、グループベースコミュニケーションアクション(グループベースコミュニケーションスコープによって定義される)を、(i)サードパーティアプリケーションの許可されたグループベースコミュニケーションオブジェクトセットに含まれ、(ii)グループベースコミュニケーションスコープによって特定されたオブジェクトタイプとしてカテゴライズされるグループベースコミュニケーションオブジェクトに対して実行し得る。この例では、サードパーティアプリケーションは、グループベースコミュニケーションスコープにおいて特定されたオブジェクトタイプとしてカテゴライズされたグループベースコミュニケーションアクションに対してだけ実行し得る。
ここで用いられるように、「許可テーブル」という語は、許可されたグループベースコミュニケーションオブジェクトセットを記憶するデータ構造を表す。許可テーブルは、さらにグループベースコミュニケーションオブジェクトセットをサードパーティアプリケーションに関連付ける。例として、許可テーブルは、サードパーティアプリケーションをユニークに特定するアプリ識別子、グループベースコミュニケーションシステムにおける特定のグループベースコミュニケーションオブジェクトをユニークに特定するグループベースコミュニケーションオブジェクト識別子、グループベースコミュニケーションオブジェクト識別子によって特定されたグループベースコミュニケーションオブジェクトの大まかなタイプ(例えば、そのタイプがグループベースコミュニケーションチャンネル、グループコミュニケーションユーザ、プライベートグループベースコミュニケーションチャンネル、ファイル、絵文字等)を特定するグループベースコミュニケーションオブジェクトタイプ記述子、グループベースコミュニケーションシステムにおけるグループをユニークに特定するグループ識別子、及び記憶されたグループベースコミュニケーションオブジェクトに関連付けられた許可をユニークに特定する許可識別子を記憶し、互いを関連付ける。
例えば、ある実施形態では、許可テーブルは、グループベースコミュニケーションサーバによって生成され、このサーバは、許可テーブルをグループベースコミュニケーションリポジトリに記憶する。ある実施形態では、グループベースコミュニケーションシステムは、グループ当たり1つの許可テーブルだけを維持し得る。その場合、許可テーブルは、そのグループ識別子を介してグループと関連付けられ、よって、許可テーブルは、グループ内のグループベースコミュニケーションオブジェクトと、グループベースコミュニケーションオブジェクトについての許可を有するサードパーティアプリケーションとの間の全てのマッピング関連付け(mapping associations)を含む。
ここで用いられるように、「グループベースコミュニケーションオブジェクト許可インタフェース」という語は、クライアントデバイスのディスプレイスクリーン上での表示のためにレンダリングされる時に、クライアントデバイスのユーザに、アプリユーザアカウントについて許可を付与する能力を提供する、グループベースコミュニケーションシステムによって生成された電子的通知を表す。ある実施形態では、グループベースコミュニケーションオブジェクト許可インタフェースは、ユーザが、サードパーティアプリケーションの許可に含まれるべきグループベースコミュニケーションオブジェクト及びグループベースコミュニケーションアクションをグラニュラリティに基づいて選択することを可能にする。他の実施形態では、オブジェクト許可インタフェースは、ユーザが、予め定義されたセットのグループベースコミュニケーションオブジェクト又はアクションを承認(grant)又は拒否(deny)することを可能にするだけである(よって、ユーザは、複数の選択肢の中からグループベースコミュニケーションオブジェクト又はアクションを選択できない)。ある実施形態では、グループベースコミュニケーションオブジェクト許可インタフェースは、サードパーティアプリケーションがグループベースコミュニケーションチャンネルへのアクセスをリクエストしていることの表示をクライアントデバイスのユーザに提供し得て、グループベースコミュニケーションオブジェクト許可インタフェースは、そのようなグループベースコミュニケーションチャンネルへのアクセスを承諾するか、又はアクセスを拒否するかのオプションを提供する。
ここで用いられるように、「許可アップデートインタフェース」という語は、クライアントデバイスのディスプレイスクリーン上に表示のためにレンダリングされる時に、許可されたグループベースコミュニケーションオブジェクトセットにおけるグループベースコミュニケーションオブジェクト及び/又は許可されたグループベースコミュニケーションアクションセットにおけるグループベースコミュニケーションアクションに関連する許可を変更する能力をクライアントデバイスのユーザに提供する、グループベースコミュニケーションシステムによって生成されたインタラクティブインタフェースの特定のタイプを表す。一般に、許可アップデートインタフェースは、利用可能なグループベースコミュニケーションオブジェクト及びグループベースコミュニケーションアクションの中からユーザが選択的に選ぶことを可能にすることによって、ユーザがサードパーティアプリケーションについての許可をアップデートできるようにする。
ここで用いられるように、「サードパーティアプリケーション識別子」という語は、グループベースコミュニケーションシステム内のサードパーティリソースが特定され得る、データの1つ以上のアイテムを表す。例えば、サードパーティリソース識別子は、ASCIIテキスト、ポインタ、メモリアドレス等を含み得る。
ここで用いられるように、「トリガ識別子」は、グループベースコミュニケーションシステムにおける2つのオブジェクトの間のインタラクションを特定する1つ以上のアイテムを表す。このトリガ識別子は、例えば、インタラクションの参加者、インタラクションの時刻、インタラクションの位置等のようなインタラクションに関する情報を含むポインタであり得る。トリガ識別子は、その代わりに又は追加として、ASCIIテキスト、ポインタ、メモリアドレス等を含み得る。ある実施形態では、トリガ識別子は、グループベースコミュニケーションシステムがそれを作った後、有限時間の間だけ有効であり得る。
ここで用いられるように、「承認付与」(authorization grant)という語は、ユーザがリクエストを承認すること(to grant a request)を選択したことを示す信号をクライアントデバイスから受信することに応答して、グループベースコミュニケーションサーバが生成する信号を表す。承認付与信号は、ユーザがリクエストを承認したことを受信者に通知する一時的コードを介して表現され得る。例えば、ある実施形態では、グループベースコミュニケーションサーバは、アプリトークンをサードパーティアプリケーションプロバイダに発行するために、OAuth 2.0フローの一部として承認付与を利用する。
ここで用いられるように、「App DM」(アプリ ダイレクトメッセージ)という語は、アプリユーザアカウントに関連付けられ、許可されたユーザ又は発信元ユーザと、当該アプリユーザアカウントに関連付けられたサードパーティアプリケーション又はサードパーティアプリケーションプロバイダとの間のコミュニケーションを促進するよう構成されたグループベースコミュニケーションインタフェースを表す。このApp DMは、グループベースコミュニケーションシステムの他のメンバによってアクセス可能及び/又は検索可能ではないように、制限されたアクセスのために構成される。それぞれのApp DMは、1つのサードパーティアプリケーションだけに関連付けられている(例えばApp DMのためのApp DM識別子は、そのサードパーティアプリケーションが有効化/認証された後には、サードパーティアプリケーションのアプリユーザアカウントに関連付けられている)。
例えば、ある実施形態では、グループベースコミュニケーションサーバは、N人のグループベースコミュニケーションシステムユーザについて、N個のApp DMを提供し得る。これらの実施形態において、N人のユーザのそれぞれは、そのようなApp DMの1個だけにアクセスし得る。これらの実施形態において、全てのN人のグループベースコミュニケーションシステムユーザは、アプリユーザアカウントに提供された許可をそれらがアップデートし得るように、アプリユーザアカウントを再設定する(re-configure)ことが許可され得る。これら実施形態の変化形においては、N−X人のユーザからなるサブセットが、N−X人のユーザのサブセットだけがアプリユーザアカウントに提供された許可をアップデートし得るように、アプリユーザアカウントを再設定することが許可され得る。よって、アプリユーザアカウントを再設定することが許可されない残りのX人のユーザからなるサブセットは、以下にさらに説明されるように、アプリユーザアカウントに付与された許可を見て、アプリユーザアカウントと通信するためだけにApp DMにアクセスし得る。しかし、残りのX人のユーザからなるサブセットは、アプリユーザアカウントに提供された許可をアップデートし得ない。
さらに他の実施形態では、1人のグループベースコミュニケーションシステムユーザだけがApp DMにアクセスする許可を有する(例えばApp DMについてのApp DM識別子は、そのユーザが許可されたユーザとして有効化/認証された後に、選択されたユーザプロフィールに関連付けられる)。この許可されたユーザは、アプリユーザアカウントを再設定する(例えばアプリユーザアカウントに提供された許可をアップデートする)ことが許可される唯一のユーザでもある。この特定の実施形態では、App DMは、1人より多いグループベースコミュニケーションシステムユーザによってアクセスされ得ないかもしれないことに注意されたい。
ある実施形態では、それぞれのApp DMは、App DMにアクセスできるユーザによってポストされたコミュニケーションを表示するよう追加として構成され得る。この意味で、App DMは、App DMグループベースコミュニケーションチャンネルを備える。App DMの特性の結果、App DMにポストされたメッセージは、App DM、App DMに関連付けられたサードパーティアプリケーション、及びApp DMに関連付けられたサードパーティアプリケーションプロバイダにアクセスする許可を有するユーザだけにしか閲覧できない。ある実施形態では、App DMは、App DMに関連付けられたサードパーティアプリケーションによってApp DMにポストされたコミュニケーションを表示するよう追加として構成される。
ある実施形態では、グループベースコミュニケーションサーバは、グループベースコミュニケーションシステムユーザによって用いられているクライアントデバイスのディスプレイスクリーン上に表示されるインタラクティブインタフェースとしてApp DMをレンダリングし得る。グループベースコミュニケーションサーバは、App DMインタラクティブインタフェースをタブ付き(tabbed)ドキュメントインタフェースとして表示し、ここでそれぞれのタブは、App DMの異なる機能及び/又は異なる特徴へのアクセスを提供する。あるそのような実施形態においては、例えば、App DMの1つのタブは、ユーザ及びサードパーティアプリケーションの間で交換されたメッセージのレコード又は履歴へのアクセスを提供し得る。この実施形態では、他のタブは、例えば、候補グループベースコミュニケーションオブジェクトセット、許可されたグループベースコミュニケーションオブジェクトセット、候補グループベースコミュニケーションアクションセット、許可されたグループベースコミュニケーションアクションセット、サードパーティアプリケーションに関連付けられたサードパーティアプリケーションプロバイダのURI等を表示することによって、サードパーティアプリケーションの設定及び/又はそのサードパーティアプリケーションに関連付けられたアプリユーザアカウントのグラフィカル表現を提供し得る。ある実施形態では、同じタブは、ユーザに、サードパーティアプリケーション及び/又はアプリユーザアカウントの設定及び/又は許可を変更することを可能にし得る。ある実施形態では、異なるタブは、ユーザが、サードパーティアプリケーション及び/又はアプリユーザアカウントの設定及び/又は許可を変更することを可能にし得る。
ここで用いられるように、「App DMオブジェクト」という語は、1つのアプリユーザアカウント(よって1つのサードパーティアプリだけ)及びユーザだけに関連付けられたグループベースコミュニケーションオブジェクトを表す。App DMオブジェクトは、グループベースコミュニケーションシステム及びグループベースコミュニケーションクライアントによって用いられることによって、ディスプレイスクリーン上にApp DMをレンダリングし得る、コンピュータコードの形態である命令を含み、又はそのような命令にアクセスできる。加えて、App DMオブジェクトは、App DMの機能を実現する命令及びデータ構造を含み、又はそのような命令及びデータ構造にアクセスできる。例えば、それらの命令又はデータ構造は、どのユーザがApp DMオブジェクトに関連付けられたアプリユーザアカウントの許可を設定することが許されているかについての情報を含む。App DMオブジェクトは、ユーザ、及びApp DMオブジェクトに関連付けられたアプリユーザアカウントに関連付けられたサードパーティアプリケーションによってポストされたメッセージングコミュニケーションを表示するよう構成された仮想コミュニケーションフィードも提供する。その意味で、App DMオブジェクトは、App DMグループベースコミュニケーションチャンネルを備える。仮想コミュニケーションフィードは、グループベースコミュニケーションシステムの1人のユーザだけによってアクセス可能である。よって、App DMオブジェクトは、グループのそれぞれのユーザについて、1つの分離したプライベート仮想コミュニケーションフィードを提供するよう構成され、そのようなフィードは、グループの対応するユーザ、及びApp DMオブジェクトに関連付けられたサードパーティアプリケーションによってのみアクセス可能である。しかし、任意の与えられたサードパーティアプリケーションは、複数のApp DMオブジェクトへのアクセス権を有し得ることに注意されたい。さらに、App DMオブジェクトは、許可されたグループベースコミュニケーションオブジェクトセットに含まれることによって、サードパーティアプリケーションは、App DMオブジェクトについて、許可されたグループベースコミュニケーションアクションが与えられ得る。例えば、サードパーティアプリケーションは、App DMオブジェクトにおいて読み書きをすることが許可され得る。
ある実施形態では、App DMオブジェクト及びApp DMの動作を可能にするのに要求されるデータ/命令に対応するデータ構造は、サードパーティアプリケーションプロバイダに関連付けられたネットワークデバイス中に、グループベースコミュニケーションリポジトリ中に、App DMオブジェクトへのアクセス権を有するユーザによって用いられるクライアントデバイス中に、又は代替として、これら3つの任意の組み合わせの中に、記憶され、維持され、かつ割当され得る。
ここで用いられるように、「チャンネルオブジェクトセット」という語は、特定のグループベースコミュニケーションチャンネルに関連付けられた全てのグループベースコミュニケーションオブジェクトを表す。このようにして、グループベースコミュニケーションオブジェクトのそれぞれは、共通のチャンネル識別子を共有する。典型的には、チャンネルオブジェクトセットは、チャンネルを介してユーザによってアクセス可能な、それらのグループベースコミュニケーションオブジェクトを含む。例えば、チャンネルオブジェクトセットは、例えば、ファイル、絵文字、リンク、ユーザ、アプリユーザアカウント、及びグループベースコミュニケーションチャンネルを埋めるか、又はグループベースコミュニケーションチャンネルに関連付けられた、任意の他のグループベースコミュニケーションオブジェクトを含み得る。
概観
本開示のさまざまな実施形態は、グループベースコミュニケーションシステム内のグループベースコミュニケーションオブジェクトへのアクセスを、サードパーティアプリケーションに選択的に付与する方法に一般的には関する。実施形態は、サードパーティアプリケーションがアクセスし得るグループベースコミュニケーションオブジェクトに対するコントロールをユーザに与える。さらに、実施形態は、それらグループベースコミュニケーションオブジェクトについてサードパーティアプリケーションが取り得るアクションに対するコントロールをユーザに与える。
さまざまな実施形態は、グループベースコミュニケーションシステム内のサードパーティアプリケーションを統合する効率的な方法も提供する。サードパーティアプリケーションは、共通のグループ識別子を有する、複数のユーザを備えるグループ上にインストールされることによって、そのグループに属するどのユーザも、サードパーティアプリケーションに付与された許可を所有し、アクセスし、かつ変更し得る。システムのある変形例では、実際的理由から、共通のグループ識別子を有する複数のユーザのうちのサブセットだけがアクセス権を有し、サードパーティアプリケーションに付与された許可を変更してもよい。しかし、この変化形においてさえ、共通のグループ識別子を有する複数のユーザは、サードパーティアプリケーションへのアクセス権を有し、かつサードパーティアプリケーションを利用し得る。
このようにして、さまざまな実施形態は、改良されたグループベースコミュニケーションシステムを提供する。例えば、サードパーティアプリケーションをここで開示されるグループベースコミュニケーションシステムのようなシステムに統合する従来の方法は、そのシステム内のユーザ又はグループにアクセス可能な全てのグループベースコミュニケーションオブジェクトに対するアクセス権をサードパーティアプリケーションに付与することを含んでいたかもしれない。しかし開示されている実施形態は、ユーザが、サードパーティアプリケーションのアクセスを、ユーザによって選択され許可されたグループベースコミュニケーションオブジェクトだけに制限できるようにする。よって、グループベースコミュニケーションシステムは、サードパーティアプリケーションにアクセス可能なグループベースコミュニケーションオブジェクトに対する粒度コントロール(granular control)をユーザに提供する。他の局面では、従来の方法は、そのサードパーティアプリケーションにアクセス可能であるグループベースコミュニケーションオブジェクトに対して、全ての可能性のある候補グループベースコミュニケーションアクションを実行する能力をサードパーティアプリケーションに許可することを含んでいたかもしれない。対照的に、開示された実施形態は、サードパーティアプリケーションにアクセス可能である許可されたグループベースコミュニケーションオブジェクトセットについてサードパーティアプリケーションが取り得るアクションのタイプ、すなわち許可されたグループベースコミュニケーションアクションセットを、ユーザが制限できるという改良を提供する。
さまざまな実施形態の他の局面において、ユーザは、サードパーティアプリケーションの許可されたグループベースコミュニケーションオブジェクトセット及び関連付けられた許可されたグループベースコミュニケーションアクションセットへの追加又は変更を許可することによって、サードパーティアプリケーションへの許可を漸進的に付与し得る。これら許可の変更は、新しいアプリトークンを要求しないので、開示されているさまざまな実施形態は、サードパーティアプリケーションのグループベースコミュニケーションシステムへの効率的な統合を提供する。これら記載された特徴によって与えられる利点は、少なくとも、限定ではなく、グループ内でサードパーティアプリケーションがとり得るアクションのタイプを、グループ内のそれぞれのユーザが適応させることができるようにする、よりユーザフレンドリーなグループベースコミュニケーションシステムを含む。これは、少なくとも、エンドユーザーがサードパーティアプリケーションを再認証することを要求せずに、サードパーティアプリケーションに追加の許可を付与するシステムの能力の結果である。これは、究極的には、グループベースコミュニケーションシステムを利用しながら、ユーザエクスペリエンスの融通性及びカスタマイゼーションを向上させる。
最後に、開示されているさまざまな実施形態は、グループベースコミュニケーションシステムにサードパーティアプリケーションをインストール及びアンインストールする効率的な方法を提供するが、これは、サードパーティアプリケーションがグループレベルでインストールされているからである。これは、サードパーティアプリケーションがユーザレベルでインストールされているフレームワークよりも優位性をもつ。例えば、従来の方法では、サードパーティアプリケーションに関連付けられた機能を利用することに興味をもつそれぞれのユーザは、サードパーティアプリケーションのインストールをリクエストする必要があったが、これは、それぞれのユーザのインストールについて新しい認証プロセス及び新しいトークンを要求していた。対照的に、開示されている実施形態は、改良を提供するが、それは、本実施形態は、サードパーティアプリケーションのアイデンティティを認証するのに要求されるトークンの個数、及びグループベースコミュニケーションシステムにサードパーティアプリケーションを統合するのに要求される認証フローの個数を減らすからである。
他の例として、従来の方法では、サードパーティアプリケーションをユーザアカウントに関連付けることは、ユーザアカウントがグループから削除又はシステムから消去される場合に関連した、不安定性及び設計上の困難を生じていた。対照的に、開示された実施形態は、アプリケーションは、グループレベルにおいてインストールされるので、より堅牢なグループベースコミュニケーションシステムを提供する。この特徴は、サードパーティアプリケーション及びその関連付けられたアプリユーザアカウントをグループベースコミュニケーションユーザの追加及び削除から分離する。よって、開示されている発明によって実現される利点の一つは、少なくとも、限定なしで、サードパーティアプリケーションをグループベースコミュニケーションシステムに統合するのに要求されるデータ構造及び機能の低減された個数の結果として、及びサードパーティアプリケーションを、ユーザではなくグループと関連付けることの結果として、アプリケーション開発者及びサードパーティアプリケーションプロバイダにとってもフレンドリーである、より安定したシステムを含む。
ここで説明される優位性のある改良点及び実施形態の最終的かつ自然の結果は、より効率的なデータネットワーク及びグループベースコミュニケーションシステムである。換言すれば、ネットワークを介して生成及び伝送されるべきデータの低減された量の結果として、これは、グループベースコミュニケーションシステム内でのサードパーティアプリケーションの統合を実現するのに要求される低減された個数のトークン及び承認フローからの自然の結果であるが、本発明は、グループベースコミュニケーションシステムをサポートするネットワークを介した、向上した効率及び関連する電子データのスループットを提供する。さらに、グループベースコミュニケーションシステム内で実現される他の機能は、システムのコア動作のために必要かもしれないが、サードパーティアプリケーションをグループベースコミュニケーションシステム内に統合する時に要求される認証フローの低減された個数のために、より速い速度で実行され得る。開示されている本発明の他の結果としては、グループベースコミュニケーションシステムは、その実現のためのインフラストラクチャ要件を下げると共に、同じパフォーマンス結果を維持するグループベースコミュニケーションシステムの実現を可能にする。これは、再び、サードパーティアプリケーションを統合するのに要求されるデータ構造及びフローの低減された個数の結果である。ここで開示された本発明は、サードパーティアプリケーションを統合するためにトークン及び認証を要求する他のシステムに適用され得て、よって、本開示において提供される解決策は、より効率的なシステム及びデータネットワークを得るために採用され得る。
例示的システムアーキテクチャ
本発明の方法、装置、及びコンピュータプログラム製品は、さまざまなデバイスの任意のものによって実現され得る。例えば、例示的実施形態の方法、装置、及びコンピュータプログラム製品は、1つ以上のクライアントデバイスのような1つ以上のデバイスと通信するよう構成されるサーバ又は他のネットワークエンティティのようなネットワーク接続されたデバイス(例えばエンタープライズプラットフォーム)によって実現され得る。追加として又は代替として、計算デバイスは、パーソナルコンピュータ又はコンピュータワークステーションのような固定された計算デバイスを含み得る。さらに例示的実施形態は、携帯デジタルアシスタント(PDA)、携帯電話、スマートフォン、ラップトップコンピュータ、タブレットコンピュータ、ウェアラブルデバイス、又は前述のデバイスの任意の組合せのような、さまざまなモバイルデバイスの任意のものによって実現され得る。
図1は、本発明の実施形態が動作し得る例示的計算システム100を示す。ユーザは、クライアントデバイス101A−101Nを用いて通信ネットワーク104を介してグループベースコミュニケーションシステム105にアクセスし得る。グループベースコミュニケーションシステム105は、少なくとも1つのグループベースコミュニケーションリポジトリ107と通信するグループベースコミュニケーションサーバ106を備え得る。
通信ネットワーク104は、例えば、それを実現するのに要求される任意のハードウェア、ソフトウェア及び/又はファームウェア(例えばネットワークルータ等のような)と共に、有線又は無線ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)等を含む任意の有線又は無線通信ネットワークを含み得る。例えば、通信ネットワーク104は、セルラー式電話、802.11、802.16、802.20、及び/又はWiMaxネットワークを含み得る。さらに、通信ネットワーク104は、インターネットのような公衆ネットワーク、イントラネットのようなプライベートネットワーク、又はそれらの組合せを含み得て、TCP/IPベースのネットワーキングプロトコルを含むがこれには限定されない、現在利用可能な又は将来開発されるさまざまなネットワーキングプロトコルを利用し得る。例えば、ネットワーキングプロトコルは、グループベースコミュニケーションシステムの要求に合うようにカスタマイズされ得る。ある実施形態では、プロトコルは、ウェブソケットチャンネルを介して送られるJavaScript Object Notation(JSON)オブジェクトのカスタムプロトコルである。ある実施形態では、プロトコルは、JSON−RPC、JSON−REST/HTTP等である。
グループベースコミュニケーションサーバ106は、この技術分野で知られるようにコンピュータ又はコンピュータ群として実現され得る。グループベースコミュニケーションサーバ106は、クライアントデバイス101A−101Nには必ずしも限定されないがこれらを含むさまざまなソースからの電子データの受信のために設けられ得る。例えば、グループベースコミュニケーションサーバ106は、クライアントデバイス101A−101Nによって提供されたグループベースメッセージングコミュニケーションを受信及びポスト又は送信するよう動作可能であり得る。
グループベースコミュニケーションリポジトリ107は、ネットワークアタッチトストレージ(NAS)装置又は装置群のようなデータ記憶装置として、又は別個のデータベースサーバ又はサーバ群として実現され得る。グループベースコミュニケーションリポジトリ107は、グループベースコミュニケーションシステム105の動作を促進するためにグループベースコミュニケーションサーバ106によってアクセスされ記憶される情報を含む。例えば、グループベースコミュニケーションリポジトリ107は、複数のグループベースコミュニケーションチャンネル及び/又はその他の間で組織化された複数のメッセージングコミュニケーションを限定ではなく含み得る。
クライアントデバイス101A−101Nは、上で定義されたような任意の計算デバイスであり得る。クライアントデバイス101A−101Nからグループベースコミュニケーションサーバ106によって受信された電子データは、さまざまな形態で、かつさまざまな方法を介して提供され得る。例えば、クライアントデバイス101A−101Nは、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、ネットブック、タブレットコンピュータ、ウェアラブルデバイス等を含み得る。
クライアントデバイス101A−101Nが、スマートフォン又はタブレットのようなモバイルデバイスである実施形態においては、クライアントデバイス101A−101Nは、グループベースコミュニケーションシステム105と相互作用するために「アプリ」を実行し得る。そのようなアプリは、タブレット又はスマートフォンのようなモバイルデバイス上で動作するように典型的には設計される。例えば、アプリは、iOS(登録商標)、Android(登録商標)、又はWindows(登録商標)のようなモバイルデバイスオペレーティングシステム上で動作するよう提供され得る。これらプラットフォームは、アプリが互いに、及びモバイルデバイスの特定のハードウェア及びソフトウェア要素と通信することを可能にするフレームワークを典型的には提供する。例えば、上で挙げられたモバイルデバイスオペレーティングシステムは、それぞれ、位置サービス回路、有線及び無線ネットワークインタフェース、ユーザコンタクト、及び他のアプリケーションと相互作用するためのフレームワークを提供する。アプリの外で動作するハードウェア及びソフトウェアモジュールとの通信は、モバイルデバイスオペレーティングシステムによって提供される少なくとも1つのアプリケーションプログラムインタフェース(API)を介して典型的には提供される。
追加として又は代替として、クライアントデバイス101A−101Nは、ウェブブラウザを介してグループベースコミュニケーションシステム105と相互作用し得る。さらに他の例として、クライアントデバイス101A−101Nは、グループベースコミュニケーションシステム105とインタフェースするよう設計されたさまざまなハードウェア又はファームウェアを含み得る。
例示的グループベースコミュニケーションシステム105のある実施形態では、メッセージ又はメッセージングコミュニケーションは、クライアントデバイス101A−101Nからグループベースコミュニケーションシステム105に送られ得る。さまざまな実現例において、メッセージは、クライアントデバイス101A−101Nによって直接に、通信ネットワーク104を通じてグループベースコミュニケーションシステム105に送られてもよく、メッセージは、メッセージサーバ及び/又はその他のような媒介を介してグループベースコミュニケーションシステム105に送られてもよい。例えば、クライアントデバイス101A−101Aは、デスクトップ、ラップトップ、タブレット、スマートフォン、及び/又はクライアントアプリケーションを実行しているもの(例えばグループベースコミュニケーションアプリ)であり得る。ある実現例では、メッセージは、メッセージ識別子、送信ユーザ識別子、グループ識別子、グループベースコミュニケーションチャンネル識別子、メッセージコンテンツ(例えばテキスト、絵文字、画像、リンク)、添付物(例えばファイル)、メッセージ階層データ(例えばそのメッセージは、他のメッセージの応答であり得る)、サードパーティメタデータ、及び/又はその他のようなデータを含み得る。ある実施形態では、クライアントデバイス101A−101Nは、以下に示されるような、エクステンシブルマークアップランゲージ(「XML」)でフォーマットされたデータを含む、(セキュア)ハイパーテキストトランスファプロトコル(「HTTP(S)」)POSTメッセージの形態を実質的にとる、以下の例示的メッセージを提供し得る。
POST /authrequest.php HTTP/1.1
Host: www.server.com
Content-Type: Application/XML
Content-Length: 667
<?XML version = “1.0” encoding = “UTF-8”?>
<auth_request>
<timestamp>2020-12-31 23:59:59</timestamp>
<user_accounts_details>
<user_account_credentials>
<user_name>ID_user_1</user_name>
<password>abc123</password>
//OPTIONAL <cookie>cookieID</cookie>
//OPTIONAL <digital_cert_link>www.mydigitalcertificate.com/ JohnDoeDaDoeDoe@gmail.com/mycertifcate.dc</digital_cert_link>
//OPTIONAL <digital_certificate>_DATA_</digital_certificate>
</user_account_credentials>
</user_accounts_details>
<client_details> //iOS Client with App and Webkit
//it should be noted that although several client details
//sections are provided to show example variants of client
//sources, further messages will include only on to save
//space
<client_IP>10.0.0.123</client_IP>
<user_agent_string>Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53</user_agent_string>
<client_product_type>iPhone6,1</client_product_type>
<client_serial_number>DNXXX1X1XXXX</client_serial_number>
<client_UDID>3XXXXXXXXXXXXXXXXXXXXXXXXD</client_UDID>
<client_OS>iOS</client_OS>
<client_OS_version>7.1.1</client_OS_version>
<client_app_type>app with webkit</client_app_type>
<app_installed_flag>true</app_installed_flag>
<app_name>MSM.app</app_name>
<app_version>1.0 </app_version>
<app_webkit_name>Mobile Safari</client_webkit_name>
<client_version>537.51.2</client_version>
</client_details>
<client_details> //iOS Client with Webbrowser
<client_IP>10.0.0.123</client_IP>
<user_agent_string>Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53</user_agent_string>
<client_product_type>iPhone6,1</client_product_type>
<client_serial_number>DNXXX1X1XXXX</client_serial_number>
<client_UDID>3XXXXXXXXXXXXXXXXXXXXXXXXD</client_UDID>
<client_OS>iOS</client_OS>
<client_OS_version>7.1.1</client_OS_version>
<client_app_type>web browser</client_app_type>
<client_name>Mobile Safari</client_name>
<client_version>9537.53</client_version>
</client_details>
<client_details> //Android Client with Webbrowser
<client_IP>10.0.0.123</client_IP>
<user_agent_string>Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Nexus S Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30</user_agent_string>
<client_product_type>Nexus S</client_product_type>
<client_serial_number>YXXXXXXXXZ</client_serial_number>
<client_UDID>FXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX</client_UDID>
<client_OS>Android</client_OS>
<client_OS_version>4.0.4</client_OS_version>
<client_app_type>web browser</client_app_type>
<client_name>Mobile Safari</client_name>
<client_version>534.30</client_version>
</client_details>
<client_details> //Mac Desktop with Webbrowser
<client_IP>10.0.0.123</client_IP>
<user_agent_string>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14</user_agent_string>
<client_product_type>MacPro5,1</client_product_type>
<client_serial_number>YXXXXXXXXZ</client_serial_number>
<client_UDID>FXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX</client_UDID>
<client_OS>Mac OS X</client_OS>
<client_OS_version>10.9.3</client_OS_version>
<client_app_type>web browser</client_app_type>
<client_name>Mobile Safari</client_name>
<client_version>537.75.14</client_version>
</client_details>
<message>
<message_identifier>ID_message_10</message_identifier>
<team_identifier>ID_team_1</team_identifier>
<channel_identifier>ID_channel_1</channel_identifier>
<contents>That is an interesting invention. I have attached a copy our patent policy.</contents>
<attachments>patent_policy.pdf</attachments>
</message>
</auth_request>
グループベースコミュニケーションシステム105は、グループベースコミュニケーションリポジトリ107におけるメッセージのインデキシング及び記憶を促進するために、受信されたメッセージに基づいて記憶メッセージを作成し得る少なくとも1つのグループベースコミュニケーションサーバ106を備える。ある実施形態では、記憶メッセージは、メッセージ識別子、グループ識別子、グループベースコミュニケーションチャンネル識別子、送信ユーザ識別子、トピックス、レスポンス、メッセージコンテンツ、添付物、メッセージ階層データ、サードパーティメタデータ、会話プリミティブデータ及び/又はその他のようなデータを含み得る。例えば、グループベースコミュニケーションサーバ106は、以下に示すような、XMLでフォーマットされたデータを含む、HTTP(S) POSTメッセージの形態を実質的にとる、以下の例示的記憶メッセージを提供し得る。
実施形態において、上で定義されたグループ識別子は、メッセージと関連付けられ得る。
実施形態において、上で定義されたグループベースコミュニケーションチャンネル識別子は、メッセージと関連付けられ得る。
実施形態において、上で定義された送信ユーザ識別子は、メッセージと関連付けられ得る。ある実現例では、メッセージは、そのメッセージを送ったユーザの送信ユーザ識別子を決定するためにパースされ(parsed)得る(例えばPHP−−すなわち、パーソナルホームページツールから導き出されるスクリプト言語−−コマンドを用いて)。
実施形態において、トピックスは、メッセージと関連付けられ得る。ある実現例では、メッセージコンテンツは、そのメッセージで議論されているトピックスを決定するためにパースされ得る(例えばPHPコマンドを用いて)。例えば、メッセージ中のハッシュタグは、そのメッセージに関連付けられたトピックスを示し得る。他の例では、メッセージは、メッセージに関連付けられたトピックスを決定するために、分析され(例えば、それ自身で、会話プリミティブ中の他のメッセージと共に)、又はトピックモデリングのような機械学習技術を用いてパースされ得る。
実施形態において、応答を示すデータは、そのメッセージと関連付けられ得る。例えば、他のユーザによるメッセージへの応答は、反応(例えばメッセージに関連付けられた絵文字の選択、メッセージに関連付けられた「いいね」ボタンの選択)、メッセージに埋め込まれたハイパーリンクをクリックすること、メッセージへ応答すること(例えばメッセージに応答してグループベースコミュニケーションチャンネルにメッセージをポストすること)、メッセージに関連付けられたファイルをダウンロードすること、あるグループベースコミュニケーションチャンネルから他のグループベースコミュニケーションチャンネルへメッセージをシェアすること、メッセージをピン留めすること、メッセージに星を付けること、及び/又はその他を含み得る。ある実施形態では、他のユーザによるメッセージへの応答に関するデータは、メッセージに含まれ得て、そのメッセージは、応答を決定するためにパースされ得る(例えばPHPコマンドを用いて)。他の実現例では、メッセージへの応答に関するデータは、データベースから取り出され得る。例えば、メッセージに対する応答に関するデータは、以下のようなMySQLデータベースコマンドを介して取得され得る。
SELECT messageResponses
FROM MSM_Message
WHERE messageID = ID_message_10.
例えば、メッセージへの応答に関するデータは、メッセージについてのコンテキスト(例えばメッセージについての、あるユーザの視点からのソーシャルスコア)を決定するのに用いられ得る。他の例では、メッセージへの応答に関連するデータは、ユーザに関するコンテキストを決定するために分析され得る(例えばあるトピックにおけるユーザの経験は、そのトピックに関するユーザのメッセージに対する応答に基づいて決定され得る)。
実施形態において、添付物は、メッセージに含まれ得る。もし添付物が存在するなら、ファイルは、メッセージと関連付けられ得る。ある実現例では、メッセージは、添付物のファイル名を決定するためにパースされ得る(例えばPHPコマンドを用いて)。例えば、ファイルコンテンツは、メッセージについてのコンテキストを決定するために分析され得る(例えば特許ポリシーの文書は、そのメッセージが「特許」というトピックに関連付けられていると表示し得る)。
実施形態において、サードパーティメタデータは、メッセージに関連付けられ得る。例えば、サードパーティメタデータは、会社、グループ、グループベースコミュニケーションチャンネル、及び/又はその他に特有である、メッセージ又はユーザについての追加のコンテキストを提供し得る。ある実現例では、メッセージは、サードパーティメタデータを決定するためにパースされ得る(例えばPHPコマンドを用いて)。例えば、サードパーティメタデータは、メッセージを送ったユーザがグループベースコミュニケーションチャンネルの承認された(authorized)代表者であるかを示し得る(例えば、承認された代表者は、グループベースコミュニケーションチャンネルにおける質問に応答するために会社によって承認され得る)。
実施形態において、会話プリミティブ(conversation primitive)は、メッセージと関連付けられ得る。ある実施形態では、会話プリミティブは、メッセージを分析し、インデックス付けし、記憶し、及び/又はその他をするのに用いられる要素である。例えば、メッセージは、それ自身で分析され得て、それ自身の会話プリミティブを形成し得る。他の例では、メッセージは、会話を構成する他のメッセージと共に分析され得て、会話を構成するメッセージは、会話プリミティブを形成し得る。ある実現例では、会話プリミティブは、当該メッセージ、特定の個数(例えば2)の先行するメッセージ及び特定の個数(例えば2)の後続するメッセージとして決定され得る。他の実現例では、会話プリミティブは、当該メッセージ及び他のメッセージ(例えばそのチャンネルにおける)で議論されているトピック及び/又はこれらメッセージの近接性(例えばメッセージ送信順序の近接性、メッセージ送信時刻の近接性)の分析に基づいて決定され得る。
実施形態においては、上で説明されたように決定されたさまざまなメタデータ及び/又はメッセージのコンテンツは、メッセージをインデックス化する(例えば会話プリミティブを用いて)ことによって、サーチングのさまざまなファセット(すなわちグループベースコミュニケーションリポジトリ107から結果を返すサーチクエリ)を促進するために用いられ得る。ある実現例では、記憶メッセージ(storage message)は、グループベースコミュニケーションリポジトリ107におけるインデキシングを促進するために、グループベースコミュニケーションサーバ106から送信され得る。他の実現例において、メッセージに関連付けられたメタデータが決定され得て、このメッセージは、グループベースコミュニケーションリポジトリ107においてインデキシングされ得る。ある実施形態において、メッセージは、会社の又はグループのメッセージが別個にインデックス化されるようにインデックス化され得る(例えば他のグループ及び/又は会社とシェアされていないグループ及び/又は会社に関連付けられた別個のインデックスにおいて)。ある実現例では、メッセージは、別個の分散化されたリポジトリにおいてインデックス化され得る(例えばセキュリティの目的のためにデータ隔離を促進するために)。
もしメッセージに関連付けられた添付物が存在するなら、その関連付けられたファイルのファイルコンテンツは、サーチングを促進するために、グループベースコミュニケーションリポジトリ107においてそのようなファイルをインデックス化するために用いられ得る。ある実施形態においては、ファイルは、別個の分散リポジトリにおいて会社の又はグループのファイルがインデックス化されるように、インデックス化され得る。
本開示の実施形態を実現する例示的装置
グループベースコミュニケーションサーバ106は、図2に示される装置200のような1つ以上の計算システムによって実現され得る。装置200は、プロセッサ202、メモリ201、入力/出力回路203、通信回路205、グループベースコミュニケーションリポジトリ107、及びグループベースコミュニケーション回路204を含み得る。装置200は、ここで説明される操作を実行するよう構成され得る。これら要素は、機能的な限定について記載されているが、具体的な実現例は、特定のハードウェアの使用を必然的に含むことを理解されたい。ここで説明された要素のいくつかは、同様の又は共通のハードウェアも含み得ることも理解されたい。例えば、回路のうちの2つのセットが同じプロセッサ、ネットワークインタフェース、記憶媒体等の使用を活用することで、それらの関連付けられた機能を実行し、重複するハードウェアが回路群のそれぞれのセットごとには必要がないようにしてもよい。装置の要素についてここで用いられるように「回路」という語の使用は、ここで説明されるように、特定の回路と関連付けられた機能を実行するよう構成された特定のハードウェアを含むように理解されなければならない。
「回路」という語は、ハードウェア、及び実施形態によっては、そのハードウェアを設定するためのソフトウェアを含むように広く理解されるべきである。例えば、実施形態によっては、「回路」は、処理回路、記憶媒体、ネットワークインタフェース、入力/出力装置等を含み得る。ある実施形態では、装置200の他の要素は、特定の回路の機能を提供又は補完し得る。例えば、プロセッサ202は、処理機能を提供し得て、メモリ201は、記憶機能を提供し得て、通信回路205は、ネットワークインタフェース機能を提供し得る等である。
ある実施形態においては、プロセッサ202(及び/又はコプロセッサ又はプロセッサを補助する又はそうでなければプロセッサに関連付けられた任意の他の処理回路)は、装置の要素の間で情報を受け渡しするためにバスを介してメモリ201と通信し得る。メモリ201は、非一時的であり、例えば1つ以上の揮発性及び/又は不揮発性メモリを含み得る。換言すれば、例えばこのメモリは、電子記憶装置(例えばコンピュータで読み取り可能な記憶媒体)であり得る。メモリ201は、装置200が、本開示の例示的実施形態に従ってさまざまな機能を実行できるようにするために、情報、データ、コンテンツ、アプリケーション、命令等を記憶するよう構成され得る。
プロセッサ202は、いくつかの異なるやり方で実現され得て、例えば独立して実行するよう構成された1つ以上の処理装置を含み得る。追加として又は代替として、このプロセッサは、命令の独立した実行、パイプライン処理、及び/又はマルチスレッディングを可能にするようにバスを介して並列に構成された1つ以上のプロセッサを含み得る。「処理回路」という語の使用は、装置の内部にあるシングルコアプロセッサ、マルチコアプロセッサ、マルチプロセッサ、及び/又はリモートつまり「クラウド」プロセッサを含むと理解されよう。
例示的な実施形態においては、プロセッサ202は、メモリ201に記憶された又はそうでなければプロセッサにアクセス可能である命令を実行するよう構成され得る。代替として又は追加として、このプロセッサは、ハードコードされた機能を実行するよう構成され得る。よってハードウェア又はソフトウェアのいずれの方法によって構成されようとも、又はそれらの組み合わせによって構成されようとも、プロセッサは、そのように構成されている間は、本開示の実施形態による操作を実行することができるエンティティ(例えば回路として物理的に実現される)を表し得る。代替として、他の例として、プロセッサがソフトウェア命令の実行者として実現される時、これら命令は、命令が実行される時に、プロセッサがここに記載されたアルゴリズム及び/又は操作を実行するようにプロセッサを具体的に構成し得る。
ある実施形態においては、装置200は、入力/出力回路203を含み得て、これが今度は、出力をユーザに提供するために、またある実施形態では、ユーザ入力の表示を受け取るためにプロセッサ202と通信し得る。入力/出力回路203は、ユーザインタフェースを備え得て、ディスプレイを含み得て、ウェブユーザインタフェース、モバイルアプリケーション、クライアントデバイス、キオスク等を備え得る。ある実施形態では、入力/出力回路203は、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチエリア、ソフトキー、マイクロホン、スピーカ、又は他の入力/出力機構を含み得る。プロセッサを備えるプロセッサ及び/又はユーザインタフェース回路は、プロセッサにアクセス可能であるメモリ(例えばメモリ201及び/又はその他)上に記憶されたコンピュータプログラム命令(例えばソフトウェア及び/又はファームウェア)を通して1つ以上のユーザインタフェース要素の1つ以上の機能を制御するよう構成され得る。
通信回路205は、装置200と通信するネットワーク及び/又は任意の他のデバイス、回路、又はモジュールから/へデータを受信及び/又は送信するよう構成される、ハードウェアか、ハードウェア及びソフトウェアの組み合わせかのいずれかで実現されるデバイス又は回路のような任意の手段であり得る。この点で、通信回路205は、例えば、有線又は無線の通信ネットワークとの通信を可能にするネットワークインタフェースを含み得る。例えば、通信回路205は、1つ以上のネットワークインタフェースカード、アンテナ、バス、スイッチ、ルータ、モデム、及びサポートするハードウェア及び/又はソフトウェア、又はネットワークを介した通信を可能にするのに適切な任意の他のデバイスを含み得る。追加として又は代替として、通信インタフェースは、アンテナ(群)を介した信号の送信を行うために、又はアンテナ(群)を介して受け取られた信号の受信を扱うために、アンテナ(群)と相互作用する回路を含み得る。
グループベースコミュニケーション回路204は、グループベースコミュニケーションシステムをサポートするよう構成されたハードウェアを含む。グループベースコミュニケーション回路204は、これらのアクションを実行するためにプロセッサ202のような処理回路を利用し得る。グループベースコミュニケーション回路204は、グループベースコミュニケーションリポジトリ107にデータを送信及び/又はグループベースコミュニケーションリポジトリ107から受信し得る。ある実現例では、送信された及び/又は受信されたデータは、複数のグループベースコミュニケーションチャンネルの間で組織化されたエンタープライズベースデジタルコンテンツオブジェクトであり得る。ある実施形態では、グループベースコミュニケーション回路204は、別個のプロセッサ、特別に構成されたフィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含み得ることも理解されるべきである。
上に説明されたように、及び本開示に基づいて理解されるように、本開示の実施形態は、方法、モバイルデバイス、バックエンドネットワークデバイス等として構成され得る。したがって実施形態は、ハードウェアだけを含む、又はソフトウェア及びハードウェアの任意の組み合わせを含むさまざまな手段を備え得る。さらに、実施形態は、記憶媒体内に実現されたコンピュータ読み取り可能なプログラム命令(例えばコンピュータソフトウェア)を有する、少なくとも1つの非一時的コンピュータ読み取り可能な記憶媒体上のコンピュータプログラム製品の形態をとり得る。同様に、実施形態は、少なくとも1つの非一時的コンピュータ読み取り可能な記憶媒体上に記憶されたコンピュータプログラムコードの形態をとり得る。任意の適切なコンピュータ読み取り可能な記憶媒体は、非一時的ハードディスク、CD−ROM、フラッシュメモリ、光学記憶デバイス、又は磁気記憶デバイスを含むようにして利用され得る。
グループベースコミュニケーションリポジトリ
ここで図3A−図3Dを参照すると、グループベースコミュニケーションリポジトリ107は、許可テーブル301、アプリトークンテーブル302、及びオプションであるオブジェクト例外テーブル303を備える。グループベースコミュニケーションシステム105のそれぞれのアプリユーザアカウントは、許可テーブル301及びアプリトークンテーブル302に記憶された情報を有する。オプションとして、それぞれのアプリユーザアカウントは、オブジェクト例外テーブル303に記憶された情報も有し得る。よって、グループベースコミュニケーションシステム105のそれぞれのアプリユーザアカウントは、許可テーブル301、アプリトークンテーブル302、及び、オプションとして(もし実施形態に含まれるなら)、オブジェクト例外テーブル303内にデータベーステーブルエントリを有し得る。図3Bに示されるように、ある実施形態では、許可テーブル301は、データの中でも特に、許可識別子304、グループ識別子305、アプリ識別子306、グループベースコミュニケーションオブジェクトタイプ記述子307、グループベースコミュニケーションオブジェクト識別子308、及びブール変数includes_object_exceptions315を含む。図3Cに示されるように、アプリトークンテーブル302は、データの中でも特に、アプリトークン許可識別子309、アプリユーザ識別子311、グループ識別子310、アプリ識別子314、グループベースコミュニケーションスコープ記述子313、及び暗号列(cryptic string)312を含む。図3Dに示されるように、オブジェクト例外テーブル(object exceptions table)303は、オプションであり、いくつかの実施形態において含まれるに過ぎないが、許可識別子321、グループ識別子322、アプリ識別子323、グループベースコミュニケーションオブジェクトタイプ325、グループベースコミュニケーションオブジェクト識別子326、除外されたオブジェクトタイプ(excluded object type)327、除外されたオブジェクト識別子328、及び除外されたグループベースコミュニケーションスコープ330を含む。
3つのテーブル301−303内のロウエントリは、アプリ識別子306,314,及び323が互いに同一である場合にのみ、同じサードパーティアプリケーションと関連付けられることに注意されたい。アプリ識別子306,314,及び323は、グループベースコミュニケーションシステム内のサードパーティアプリケーションをユニークに特定するデータを含む。同様に、3つのテーブル301−303内のロウエントリは、グループ識別子305,310,及び322が互いに同一である場合にのみ、同じサードパーティアプリケーションと関連付けられる。グループ識別子305,310,及び322は、複数のユーザをそのメンバとして含み得るグループをユニークに特定するデータを含む(メンバは、また、同じグループ識別子を介してそのグループに関連付けられなければならない)。これら同じ原則が許可識別子304及び321、及びグループベースコミュニケーションオブジェクト識別子308及び326に適用される。すなわち、2つのロウエントリは、これら識別子によって保持される値がロウエントリ群にわたって同一である場合にのみ、同じ許可識別子又はグループベースコミュニケーションオブジェクト識別子に関連付けられる。
許可テーブル301は、グループベースコミュニケーションシステム105内のサードパーティアプリケーションに選択的に許可を付与することの実現にとって重要である、さまざまなデータフィールドを含む。許可識別子304は、許可テーブル内の特定のエントリに関連する許可をユニークに特定する。グループベースコミュニケーションオブジェクト識別子308は、許可識別子と関連付けられたグループベースコミュニケーションシステム105内の特定のオブジェクトを特定する。グループベースコミュニケーションオブジェクトタイプ307は、許可識別子と関連付けられたグループベースコミュニケーションオブジェクトのオブジェクトタイプを特定する。アプリ識別子306は、許可識別子と関連付けられたサードパーティアプリケーションをユニークに特定する。このようにして、図3Bのそれぞれのロウは、グループベースコミュニケーションオブジェクト、そのオブジェクトタイプ、グループ、及び、グループベースコミュニケーションオブジェクトについて許可を有するサードパーティアプリケーションの間のマッピングを提供する。ある実施形態では、グループベースコミュニケーションサーバは、新しいグループベースコミュニケーションオブジェクトをサードパーティアプリケーションに関連付ける(すなわちそのためのマッピングを追加する)ように許可テーブルを変更することによって、サードパーティアプリケーションに関連付けられた許可をアップデートする。
アプリトークンは、図3Cに示されるアプリトークンテーブル302のようなデータ構造を介してグループベースコミュニケーションリポジトリ107に記憶される。ある実施形態では、グループベースコミュニケーションリポジトリ107は、グループベースコミュニケーションシステム105によって生成された全てのアプリトークンについて、関連するデータを記憶する単一のアプリトークンテーブル302を含む。これらの実施形態では、グループベースコミュニケーションシステム105は、それぞれのテーブルエントリがアプリトークン識別子309を介してどのアプリトークンに関連付けられるかを決定し得る。これら実施形態では、与えられたアプリトークンを定義するデータは、共通アプリトークン識別子309に関連付けられた、アプリトークンテーブル302内の全てのテーブル値を備える。この実施形態は、実用的であり、かつアプリトークンの簡単な実現例であるが、それは、全てのアプリトークンが単一のアプリトークンテーブル302を介して記憶され、維持され、かつクエリされるからである。
当業者なら、グループベースコミュニケーションリポジトリ107が別個のアプリトークンテーブル302をそれぞれの別個のアプリトークンについて記憶する他の実施形態も想定できるだろう。この実施形態では、グループベースコミュニケーションリポジトリ107が、アプリトークンテーブル302と類似の複数のアプリトークンテーブル(それぞれのアプリトークンについて1つ)を記憶することが要求される。しかし、この実施形態の可能性のある利点には、任意の与えられたアプリトークンテーブル内により少ない量の値(例えばロウ)が記憶されるということがある。当業者なら、この実施形態がいくつかのトレードオフを伴うことを認識できるだろう。例えば、この実施形態は、アプリトークンテーブルを生成すること、及び複数のアプリトークンテーブルのそれぞれについてクエリすることのために、より複雑な方法を含む。その一方で、本実施形態は、それぞれのテーブルクエリの処理時間を低減することができるが、それは、それぞれのアプリトークンテーブルのサイズは、単一のアプリトークンテーブル302に全てのアプリトークンを記憶する、前の実施形態におけるよりも小さくなるからである。
アプリトークンテーブル302は、他の実施形態では、アレイ、ツリー、又は任意のそのような類似のデータ構造を介しても表現され得て、必ずしもテーブルでなくてもよい。
ある実施形態では、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションにグループベースコミュニケーションオブジェクト及びアクションへのアクセスを許可する前に、サードパーティアプリケーションのアイデンティティを確認するためにアプリトークンの暗号列312を用いる。その趣旨で、それぞれのアプリトークンは、アプリユーザをユニークに特定するアプリ識別子314、及びアプリユーザが関連付けられたグループをユニークに特定するグループ識別子310を含む。
特筆すべきは、アプリトークンテーブルは、グループベースコミュニケーションスコープ記述子313を含み、これは、ゼロ(その値がヌルであるある時のような)又はそれより多いグループベースコミュニケーションスコープを特定するデータを保持する。よって、アプリトークンテーブルは、グループベースコミュニケーションスコープをグループ(グループをユニークに特定するグループ識別子310を介して)及びサードパーティアプリケーション(サードパーティアプリケーションをユニークに特定するアプリ識別子314を介して)にマッピングする。このようにして、グループベースコミュニケーションスコープ記述子313は、サードパーティアプリケーションに関連付けられたアプリユーザアカウントに関連付けられたグループベースコミュニケーションスコープを特定する情報を含む。ある実施形態では、グループベースコミュニケーションサーバ106が新しいアプリトークンのためのアプリトークンテーブル302のロウをまず生成する時、それは、グループベースコミュニケーションスコープ記述子313に既に含まれている値を持つロウを生成し得る。本質的には、グループベースコミュニケーションスコープ記述子313は、インストール時にサードパーティアプリケーションに付与された(granted)グループベースコミュニケーションスコープを含む。
換言すれば、新しいアプリトークンを生成すると、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションスコープ記述子313内の値によって特定されたグループベースコミュニケーションスコープをサードパーティアプリケーションに自動的に許可する。さらに、ある実施形態では、これらの初期的にインスタンス化された(instantiated)グループベースコミュニケーションスコープ(すなわちアプリトークンテーブルに関連付けられたエントリが初めて生成された直後に、グループベースコミュニケーションスコープ記述子313によって特定されるものに対応するグループベースコミュニケーションスコープ)は、それぞれのサードパーティアプリケーションについて、均一であり得る。このようにして、コミュニケーションサーバ106は、インストール段階においては全てのサードパーティアプリケーションに、類似のグループベースコミュニケーションスコープを付与する。この実施形態の具体的な例では、例えば、グループベースコミュニケーションスコープ記述子313によって特定された許可は、App DMオブジェクトのグループベースコミュニケーションオブジェクトの履歴及びコンテンツをリード、ライト、及びアクセスする能力からなり得る(App DMオブジェクトは、この具体的なグループベースコミュニケーションスコープ内のオブジェクトタイプであり得る)。この実施形態では、したがって、全ての新しくインストールされたサードパーティアプリケーションは、インストール時に、App DMオブジェクトの履歴及びコンテンツをリード、ライト、及びアクセスする能力が付与される。
他の実施形態では、新しいアプリトークンは、その対応するグループベースコミュニケーションスコープ記述子313によって保持されている値なしで生成され得る。しかし、これら実施形態では、グループベースコミュニケーションシステム105は、新しくインストールされたサードパーティアプリケーションに、グループベースコミュニケーションスコープ記述子313を参照することなしに、初期グループベースコミュニケーションスコープのセットを付与する。このようにして、グループベースコミュニケーションシステム105は、インストール時に、類似のグループベースコミュニケーションスコープを全ての新しくインストールされたサードパーティアプリケーションに付与する。例えば、初期的かつ自動的なグループベースコミュニケーションスコープは、App DMオブジェクトのグループベースコミュニケーションオブジェクトの履歴及びコンテンツをリード、ライト、及びアクセスする能力からなり得る(App DMオブジェクトは、この具体的なグループベースコミュニケーションスコープ内のオブジェクトタイプであり得る)。これら実施形態では、グループベースコミュニケーションスコープ記述子313は、インストール後にサードパーティアプリケーションに付与されたグループベースコミュニケーションスコープを記憶するために予約されている。グループベースコミュニケーションシステム105は、よって、サードパーティアプリケーションのインストールに続くある時刻においてグループベースコミュニケーションスコープ記述子313を変更し得る。
しかし全ての実施形態において、それぞれのアプリユーザアカウントは、1つのアプリトークン(及びその対応するアプリトークン識別子309)とだけ関連付けられている。アプリユーザアカウントに関連付けられたアプリトークンは、任意の与えられたアプリユーザアカウントについての許可されたグループベースコミュニケーションアクションセットのアップデートを実現するよう変更され得る。グループベースコミュニケーションシステムは、グループベースコミュニケーションスコープ記述子313の変更を介してそのようなアップデートを実現する。
サードパーティアプリケーションがグループベースコミュニケーションオブジェクトについて有する許可は、(a)グループベースコミュニケーションオブジェクト、及び(b)グループベースコミュニケーションアクションのペアリングの間のマッピングを必然的に伴う。したがって、許可を決定するために、グループベースコミュニケーションシステム105は、許可テーブル301及びアプリトークンテーブル302の中の情報を相互参照しなければならない。許可テーブル301は、ある許可の特定のグループベースコミュニケーションオブジェクトをユニークに特定するグループベースコミュニケーションオブジェクト識別子を提供する。加えて、許可テーブル301は、特定のグループベースコミュニケーションオブジェクトのオブジェクトタイプを提供する。一方で、アプリトークンテーブル302は、グループベースコミュニケーションスコープ記述子を提供し、これは、(a)オブジェクトタイプ、及び(b)そのオブジェクトタイプのカテゴリーに入るグループベースコミュニケーションオブジェクトについてサードパーティがとり得るグループベースコミュニケーションアクションを備える。このようにして、2つのテーブル301及び302内の情報を相互参照することによって、グループベースコミュニケーションサーバは、グループベースコミュニケーションシステム105における特定のグループベースコミュニケーションオブジェクトについて、サードパーティアプリケーションが有する許可を決定し得る。
同様に、グループベースコミュニケーションシステム105は、サードパーティアプリケーションに関連付けられた許可をアップデート又は変更するために、両方のテーブル301及び302を参照しなければならない。サードパーティアプリケーションの許可をアップデートすること又は変更することは、(a)サードパーティアプリケーションがアクセスしたグループベースコミュニケーションオブジェクト、又は(b)サードパーティアプリケーションがそのグループベースコミュニケーションオブジェクトについてとり得るグループベースコミュニケーションアクションのうちの少なくとも1つを変更することを必然的に伴う。許可をアップデートすること又は変更することは、(a)及び(b)の両方を伴い得る。そのような変更を達成するためには、グループベースコミュニケーションシステム105は、意図された許可をサードパーティアプリケーションに付与するために、許可テーブル301の変更及びアプリトークンテーブル302の変更を一致させなければならない。
図3Dについて、オブジェクト例外テーブル303は、ユーザが、サードパーティアプリケーションに付与された許可を、より高い程度の粒度又は具体性で特定できるようにする。オブジェクト例外テーブル303は、(a)他のグループベースコミュニケーションオブジェクトを発生させ得るか、又は他のグループベースコミュニケーションオブジェクトに関連付けられ得る、グループベースコミュニケーションオブジェクト、及び(b)同じオブジェクトタイプにカテゴライズされた複数のグループベースコミュニケーションオブジェクトに関連する許可されたグループベースコミュニケーションアクションセット、に関連された許可を追跡するのに用いられる。例えば、グループベースコミュニケーションチャンネルは、チャンネルオブジェクトセットを含み得て、これは、ファイル、絵文字、リンク、ユーザ、アプリユーザアカウント、及びグループベースコミュニケーションチャンネルを介してユーザによってアクセス可能である他のグループベースコミュニケーションオブジェクトからなり得る。オブジェクト例外テーブル303は、グループベースコミュニケーションシステムが、サードパーティアプリケーションに、チャンネルオブジェクトセットを備えるグループベースコミュニケーションオブジェクトの一部に対するアクセス及び許可を付与できるようにする。そうするために、ある実施形態では、グループベースコミュニケーションシステム105は、許可テーブル301及びアプリトークンテーブル302を介してグループベースコミュニケーションチャンネルにアクセスする許可をサードパーティアプリケーションに、まず付与する。それから、グループベースコミュニケーションシステム105は、includes_object_exceptionsブール変数を「真」に設定するが、これは、特定のグループベースコミュニケーションチャンネルが、その許可の少なくとも1つの例外を含むことを示す。最後に、グループベースコミュニケーションシステム105は、許可への例外を特定するために、それから値を生成し、オブジェクト例外テーブル303に値を記憶する。
例えば、もしグループベースコミュニケーションシステム105が、グループベースコミュニケーションオブジェクト(チャンネルオブジェクトセット内のグループベースコミュニケーションオブジェクトのような)へのアクセスを拒否すべきなら、グループベースコミュニケーションシステム105は、除外された(excepted)グループベースコミュニケーションオブジェクトに対応するグループベースコミュニケーションオブジェクト識別子を記憶する。グループベースコミュニケーションシステム105は、除外されたオブジェクト識別子328内にグループベースコミュニケーションオブジェクト識別子を記憶する。加えて、グループベースコミュニケーションシステム105は、除外されたグループベースコミュニケーションオブジェクトのオブジェクトタイプを、除外されたオブジェクトタイプ327内に記憶する。このようにして、グループベースコミュニケーションシステム105は、サードパーティアプリケーション(アプリ識別子323に対応する)に関連付けられた許可から、除外されたオブジェクト識別子(excluded object identifier)328に対応するグループベースコミュニケーションオブジェクトを除外する。
他の例として、グループベースコミュニケーションシステム105が、サードパーティアプリケーションがグループベースコミュニケーションオブジェクト内でとり得るアクションを制限すべき場合は、グループベースコミュニケーションシステム105は、除外されたグループベースコミュニケーションスコープ330として、除外されたグループベースコミュニケーションスコープに対応するデータ値を含み得る。このようにして、グループベースコミュニケーションシステム105は、サードパーティアプリケーション(アプリ識別子323に対応する)に関連付けられた許可から、除外されたグループベースコミュニケーションスコープ330に対応するグループベースコミュニケーションスコープを除外する。その結果として、サードパーティアプリケーションは、グループベースコミュニケーション識別子326に対応する特定のグループベースコミュニケーションオブジェクトについて、他の許可を有し得る。しかし、サードパーティアプリケーションは、グループベースコミュニケーション識別子326内の値に対応するグループベースコミュニケーションオブジェクトについて、除外されたグループベースコミュニケーションスコープ330によって特定されたグループベースコミュニケーションスコープに対応するグループベースコミュニケーションアクションを実行する能力を有しない。
グループベースコミュニケーションリポジトリ107は、メッセージングコミュニケーション情報と共に、メッセージングコミュニケーションも記憶し得る。対応するメッセージングコミュニケーション情報と共に、メッセージングコミュニケーションは、グループベースコミュニケーションチャンネル識別子又はグローバル識別子のようなさまざまなインジケータによって、グループベースコミュニケーションリポジトリ107内でインデックス化され得る。グループベースコミュニケーションサーバ106は、ユーザのグローバル識別子を用いてグループベースコミュニケーションリポジトリ107にクエリすることによって、そのユーザに関連付けられたメッセージングコミュニケーション及び対応するメッセージングコミュニケーション情報を見出し得る。グループベースコミュニケーションサーバ106は、グループベースコミュニケーションチャンネル識別子を用いてグループベースコミュニケーションリポジトリ107にクエリすることによって、特定のグループベースコミュニケーションチャンネル識別子に関連付けられたメッセージングコミュニケーション及び対応するメッセージングコミュニケーション情報を見出し得る。
記憶されたメッセージングコミュニケーション情報は、メッセージングコミュニケーションに対応するタイムスタンプ、メッセージングコミュニケーションに対応する至急インジケータ、メッセージングコミュニケーションに対応するhas_fileインジケータ、メッセージングコミュニケーションに対応するワードカウントインジケータ、メッセージングコミュニケーションに対応するメッセージトピックを含み得る。他のメッセージングコミュニケーション情報も、グループベースコミュニケーションリポジトリ107に含まれ得る。
グループにおけるアプリケーションのインストール
グループベースコミュニケーションサーバは、サードパーティアプリケーションをグループ内にインストールするよう構成される。ある実施形態では、インストールは、サードパーティアプリケーションの代わりに許可フローを実現するグループベースコミュニケーションサーバを備える。ある実施形態では、許可ステップは、OAuth 2.0標準規格を実現し得る。ある実施形態では、サードパーティアプリケーションをグループ内にインストールすることは、(1)アプリユーザアカウントに関連付けられたユニークなアプリトークンを生成するサードパーティアプリケーションの代わりに許可フローを開始する、(2)サードパーティアプリケーションに関連付けられたアプリユーザアカウントをグループベースコミュニケーションリポジトリ107内に生成及び記憶する、及び(3)インストールされつつあるサードパーティアプリケーションに関連付けられた許可テーブル(すなわち許可テーブル301)及びアプリトークンテーブル(すなわちアプリトークンテーブル302)に後で追加される、アプリユーザアカウントに関連付けられた許可を生成する、という大まかなステップを含む。
図4A−図4Bは、グループベースコミュニケーションシステム105のグループ内でのサードパーティアプリケーションのインストール手続き400Aの実施形態を表す信号図を示す。ステップ402において、グループベースコミュニケーションサーバ106は、クライアントデバイス101Aのユーザに関連付けられたグループにアプリケーションをインストールしたいというリクエストをクライアントデバイス101Aから受け取る。ある実施形態では、グループベースコミュニケーションシステム105は、クライアントデバイス101Aのユーザが、インタラクティブボタン又は他のタイプのディスプレイスクリーンインタラクティブ要素をクリックすることの結果として、そのようなリクエストを受け取り得る。ある実施形態では、インタラクティブボタン又はディスプレイスクリーンインタラクティブ要素は、グループベースコミュニケーションシステム105に関連付けられたユーザインタフェースの要素として提供され得て、この要素は、クライアントデバイス101Aにおいて表示され得る。コミュニケーションサーバ106によって受け取られたリクエストは、サードパーティアプリケーションプロバイダ識別子、サードパーティアプリケーション識別子、サードパーティアプリケーションの代わりにリクエストされるべき許可の記述子、クライアントデバイスのユーザが許可及び/又はインストールプロセスの終了時にリダイレクトされるべきオプションのURI−−redirect_URI−−、許可及び/又はインストールプロセスが完了すると送信されるべきオプションのユニークな状態列(optional unique state string)(ユニークな状態列の目的は、例えば、クロスサイトリクエストの偽造の間のような、未承認の偽造信号の送信を減らすことによって、プロセスのセキュリティを高めることであり得る)、及びサードパーティアプリケーションがインストールされるべきグループに関連付けられたオプションのグループ識別子のような、さまざまなパラメータも備え得る。
ある実施形態では、サードパーティ識別子の代わりに、グループベースコミュニケーションサーバ106は、インストールされるべきサードパーティアプリケーションも特定し得るクライアント識別子を受け取る。ある実施形態では、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションを初めてインストールする(図4Aには示されていないステップ)前に起こる登録プロセスの間にクライアント識別子を生成し得る。換言すれば、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションを登録したいというリクエストを受信することに応答して、クライアント識別子を生成し、そのクライアント識別子を、そのサードパーティアプリケーションに関連付けられたサードパーティアプリケーションプロバイダ102Aに送信する。加えて、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションリポジトリ107内に、生成されたクライアント識別子のレコードを、インストールプロセスの間の参照のためのような将来の参照のために記憶し得る。ある実施形態では、サードパーティアプリケーションプロバイダ102Aは、クライアント識別子も記憶し、そのクライアント識別子をグループベースコミュニケーションサーバ106と通信して使用することによって、そのコミュニケーションに関連付けられたサードパーティアプリケーションを特定し得る。例えば、これは、その後の許可及びインストールプロセスの間に有用である。クライアント識別子は、ある局面においては、これらクライアント識別子及びサードパーティアプリケーション識別子の両方がサードパーティアプリケーションと関連付けられている点で、サードパーティアプリケーション識別子と類似する。しかし、クライアント識別子は、サードパーティアプリケーションプロバイダ102Aのために生成される一方で、サードパーティアプリケーション識別子は、グループベースコミュニケーションシステム105内で内部使用のために生成される。
ある実施形態では、グループベースコミュニケーションサーバ106は、上述の登録プロセスの一部として、以下、client_secretと呼ばれる暗号列も生成し、この暗号列は、サードパーティアプリケーションプロバイダ又はサードパーティアプリケーションと関連付けられる。グループベースコミュニケーションサーバ106は、client_secretをサードパーティアプリケーションプロバイダ102Aに送信し、このことは、サードパーティアプリケーションプロバイダ102Aがその後の許可プロセスにおいてを使用できるようにする。例えば、client_secretは、サードパーティアプリケーション又はサードパーティアプリケーションプロバイダを認証するために、グループベースコミュニケーションサーバ106によって用いられ得る。クライアント識別子と同様に、グループベースコミュニケーションサーバ106は、将来の使用又は参照のために、client_secretのレコード又はコピーをグループベースコミュニケーションリポジトリ107内に記憶し得る。
ステップ404において、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションリポジトリ107にクエリすることによって、サードパーティアプリケーションが、インストールをリクエストするユーザによって提供されたグループ識別子に対応するグループ内に既にインストールされている状態ではないことを確認する。ある例示的実施形態では、グループベースコミュニケーションサーバ106からのクエリは、リクエストしているユーザがインストールをリクエストしているグループに対応するグループ識別子、及びユーザがインストールをリクエストしたサードパーティアプリケーションに対応するサードパーティ識別子を含むアプリトークンをサーチする。
ステップ406において、グループベースコミュニケーションサーバ106は、クエリ結果をグループベースコミュニケーションリポジトリ107から受信する。それから、ステップ407において、グループベースコミュニケーションサーバは、クライアントデバイスによって提供されたグループ識別子に対応するグループに、サードパーティアプリケーションが既にインストールされていることを示すデータを、グループベースコミュニケーションリポジトリ107が含むかを決定する。換言すれば、ステップ404−407において、グループベースコミュニケーションサーバ106は、そのサードパーティアプリケーションが既にインストールされているかどうかを判断するために、グループベースコミュニケーションリポジトリ107にクエリする。
ある実施形態では、サードパーティアプリケーションが既にインストールされているとステップ404−407において判断することに応答して、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションのインストールを中止する。ある実施形態では、グループベースコミュニケーションサーバ106は、それから、App DMが、クライアントデバイス101Aのユーザ及びユーザがインストールを試みたが既にインストールされているサードパーティアプリケーションの両方に関連付けられるようにクライアントデバイスにさせる信号(図4Aでは不図示)をクライアントデバイスに送信する。そのような実施形態では、グループベースコミュニケーションシステム105は、クライアントデバイス101Aのユーザが、グループベースコミュニケーションシステム105内に既にインストールされたサードパーティアプリケーションに対応するアプリユーザアカウントをApp DMを介して閲覧及び設定できるようにする。いくつかの実施形態では、最初にサードパーティアプリケーションをグループにインストールしたユーザによる場合のような、ユーザがサードパーティアプリケーションを設定するためにアクセスすることが許可されている場合だけ、そのユーザは、App DMを介してサードパーティアプリケーションの設定にアクセスし、設定を変更することができる。他の実施形態では、そのサードパーティアプリケーションを最初にインストールしたユーザではなく、管理者として指定されたユーザが、App DMを介してサードパーティアプリケーションの許可を設定するためにアクセスすることを他のユーザに承認付与するユーザである。
他の実施形態では、サードパーティアプリケーションが既にインストールされているとステップ404−407において決定することに応答して、グループベースコミュニケーションサーバ106は、インストールされたサードパーティアプリケーションの現在の許可を、ステップ402において受信されたリクエストによって特定されたサードパーティアプリケーションの代わりにリクエストされるべき許可の記述子とそれから比較する。もしグループベースコミュニケーションサーバ106が、リクエストされるべき許可の記述子が、サードパーティアプリケーションの現在の許可と比較される時、追加の許可を含むと決定するなら、グループベースコミュニケーションサーバ106は、ステップ408に進む。一方で、もしグループベースコミュニケーションサーバ106が、リクエストされるべき許可の記述子が追加の許可を含まないと決定するなら、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションのインストールを中止する。グループベースコミュニケーションサーバ106は、クライアントデバイス101Aのユーザと、ユーザがインストールしようと試みたが、既にインストールされているサードパーティアプリケーションとの両方にApp DMが関連付けられるようにクライアントデバイスにさせる信号(図4Aでは不図示)をクライアントデバイスにそれから送信する。そのような実施形態では、グループベースコミュニケーションシステム105は、App DMを介してグループベースコミュニケーションシステム105内に既にインストールされているサードパーティアプリケーションに対応するアプリユーザアカウントをクライアントデバイス101Aのユーザが閲覧及び設定できるようにし得る。いくつかの実施形態では、ユーザがサードパーティアプリケーションを設定するためにアクセスを許可されている場合にだけ、例えばそのサードパーティアプリケーションをそのグループに最初にインストールしたユーザによって、そのユーザは、App DMを介してサードパーティアプリケーションにアクセスし、設定を変更できる。他の実施形態では、そのサードパーティアプリケーションを最初にインストールしたユーザではなく、管理者として指定されたユーザが、App DMを介してサードパーティアプリケーションの許可を設定するためにアクセスすることを他のユーザに承認付与するユーザである。
ステップ408において、グループベースコミュニケーションサーバ106は、クライアントデバイス101Aのユーザを、グループベースコミュニケーションサーバ106によってホストされ、許可が始まるURIにリダイレクトする。ステップ409において、グループベースコミュニケーションサーバ106は、さらに、ステップ402で受信されたパラメータのうちのいくつかをそのURIに送信する。これらは、許可及びインストールのプロセスのために要求されるパラメータである。そのようなパラメータは、例えば、サードパーティアプリケーション識別子又はクライアント識別子、サードパーティアプリケーションの代わりにリクエストされるべき許可の記述子、クライアントデバイスのユーザが許可及び/又はインストールプロセスの終了時にリダイレクトされるべきURI−−redirect_URI−−、許可及び/又はインストールプロセスが完了すると送信されるべきユニークな状態列(unique state string)、及びサードパーティアプリケーションがインストールされるべきグループに関連付けられたグループ識別子を備え得る。
ステップ410において、グループベースコミュニケーションサーバ106は、信号を生成し、かつクライアントデバイス101Aに送信し、クライアントデバイス101Aは、サードパーティアプリケーションのインストールを承認又は拒否するようユーザにプロンプトをする。加えて、いくつかの実施形態では、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションスコープ記述子313によって特定されたものに対応するグループベースコミュニケーションスコープをサードパーティアプリケーションに対して承認又は拒否のいずれかをするようユーザにプロンプトし得る。いくつかの実施形態では、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションスコープ記述子313によって特定されたものを越える、追加の許可又はグループベースコミュニケーションスコープをサードパーティアプリケーションに対して承認又は拒否のいずれかをするよう追加としてユーザをプロンプトする。例えば、グループベースコミュニケーションサーバ106は、ステップ402で受信されたサードパーティアプリケーションの代わりにリクエストされるべき許可の記述子によって特定されるものに対応する許可をサードパーティアプリケーションに対して承認又は拒否のいずれかをするようユーザにプロンプトし得る。クライアントデバイス101Aのユーザへのプロンプトは、クライアントデバイス101Aによって受信される時、クライアントデバイス101Aにグループベースコミュニケーションオブジェクト許可インタフェースをレンダリングさせる、グループベースコミュニケーションサーバ106からの命令の形態であり得る。
そのようなグループベースコミュニケーションオブジェクト許可インタフェースの例示的実施形態が図5Aに示される。図5Aを参照すれば、許可リクエストメッセージ503は、グループベースコミュニケーションオブジェクト許可インタフェースがワークスペースのためのランチトレインのアプリケーションが、クライアントデバイス101Aのユーザとのプライベート会話にアクセスするリクエストをしていることを示す。図5Aの実施形態では、「プライベート会話」は、あるApp DMオブジェクトと関連付けられた仮想的なコミュニケーションフィードを表す。しかし、許可リクエストメッセージ503は、グループベースコミュニケーションスコープ記述子313又は前のパラグラフで説明された任意の追加の許可によって特定されたグループベースコミュニケーションスコープに関連付けられた他の許可を含み得ることに注意されたい。よって、クライアントデバイス101Aのユーザは、アクチュエータボタン502を介してインストール及び許可リクエストを承諾し、又はアクチュエータボタン501を介してリクエストを拒否し得る。もしユーザがアクチュエータ502をクリックするなら、ワークスペースのためのランチトレインのアプリケーションへ付与された許可は、App DMオブジェクトにメッセージをポストし、App DMオブジェクトからメッセージを読む許可を含むだろう。アクチュエータ502をクリックすることは、クライアントデバイス101Aが、承認付与(authorization grant)を備えるデータをグループベースコミュニケーションサーバ106に送信するようにさせる。
ステップ412において、グループベースコミュニケーションサーバ106は、そのリクエストの承認又は拒否のいずれかを含む信号を受信する。承認を含む信号を受信することに応答して、グループベースコミュニケーションサーバ106は、オプションのステップ414を実行し得る。オプションのステップ414において、グループベースコミュニケーションサーバ106は、クライアントデバイス101Aに信号を送信し得て、この信号は、サードパーティアプリケーションへの追加の許可を承認又は拒否するようユーザにプロンプトする。これらの追加でリクエストされた許可は、グループベースコミュニケーションスコープ記述子313によって特定される追加の許可又はグループベースコミュニケーションスコープ、ステップ402において受信されたサードパーティアプリケーションの代わりにリクエストされるべき許可の記述子によって特定された追加の許可、又は任意の追加の許可に対応し得る。プロンプトは、クライアントデバイスによって受信された時、クライアントデバイスにグループベースコミュニケーションオブジェクト許可インタフェースをレンダリングさせる、グループベースコミュニケーションサーバからの命令の形態であり得る。
そのようなグループベースコミュニケーションオブジェクト許可インタフェースの例示的実施形態が図5B,図5Cに示される。図5Bを参照すると、許可リクエストメッセージ506及び507は、システムが、それがメンバである全てのチャンネルにおいてスラッシュコマンドを追加し、かつメッセージをポストするための、ワークスペースのためのランチトレインアプリケーションについての許可をリクエストしていることを示す。これは、実質的には、2つのグループベースコミュニケーションスコープを承認又は拒否するリクエストである。換言すれば、両方のグループベースコミュニケーションアクションがオブジェクトタイプ(すなわちグループベースコミュニケーションチャンネル)について承認付与され、その結果、サードパーティアプリケーションは、加えて、サードパーティアプリケーションの許可されたグループベースコミュニケーションオブジェクトセット内である、任意のグループベースコミュニケーションチャンネル上でグループベースコミュニケーションアクションを実行することを許される。アクチェータボタン504及び505は、クライアントデバイス101Aのユーザに、そのリクエストを承認又は拒否のいずれかをするオプションを与える。
グループベースコミュニケーションオブジェクト許可インタフェースの実施形態の変形例が図5Cに示される。そこでは、許可リクエストメッセージ508は、ワークスペースのためのランチトレインがメッセージ及びファイルをポストするための許可を、システムがリクエストしていることを示す。しかし、図5Cの実施形態は、クライアントデバイス101Aのユーザが、そのユーザがグループベースコミュニケーションアクションを許可したいチャンネル(すなわちグループベースコミュニケーションオブジェクト)を選び得る点で以前の実施形態とは異なる。例えば、もしユーザがアクチュエータ509を選択し、アクチュエータボタン514をクリックするなら、許可テーブル301及びアプリトークンテーブル302は、ワークスペースのためのランチトレインアプリケーションのための追加の許可を含むように、適宜、アップデートされる。許可テーブル301は、ワークスペースのためのランチトレインのアプリケーションについての許可されたグループベースコミュニケーションオブジェクトセット内に全てのパブリックチャンネルを含むことになる。追加として、アプリトークンテーブル302は、ワークスペースのためのランチトレインのアプリケーションに関連付けられたグループベースコミュニケーションスコープ内に、グループベースコミュニケーションチャンネルにメッセージ及びファイルをポストする能力を特定するデータを含むことになる。その結果、メッセージ及びファイルをポストするグループベースコミュニケーションアクションは、ワークスペースのためのランチトレインのアプリケーションのための許可されたグループベースコミュニケーションアクションセットの一部を形成することになる。
グループベースコミュニケーションシステムは、図5C及びアクチュエータ509に関連して上述されたように、全てのパブリックチャンネルに許可を追加するときのような、「一括して」許可を追加することを可能にする。その目的のために、グループベースコミュニケーションサーバ106は、許可テーブル301内で、is_wildcardブール変数(図3B参照)を用い得る。さらなるコンテキストを提供するために、ユーザがアクチュエータ509(図5C参照)を選択し、アクチュエータボタン514をクリックすると、グループベースコミュニケーションサーバ106は、全てのパブリックグループベースコミュニケーションチャンネル(ワークスペースのためのランチトレインのアプリケーションがインストールされているグループに関連付けられている)を、ワークスペースのためのランチトレインのアプリケーションに関連付けられた許可に追加する。そうするために、グループベースコミュニケーションサーバ106は、「true」に設定されたis_wildcard変数を含むロウ(row)を許可テーブル内に生成し記憶する。さらに、そのロウについて、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションオブジェクトタイプ307として、パブリックグループベースコミュニケーションチャンネルは、is_wildcard変数と関連付けられなければならないことを特定するデータを記憶する。このロウは、よって、全てのそのようなパブリックグループベースコミュニケーションチャンネルが、アプリ識別子306によって特定されたサードパーティアプリケーション(すなわちこの場合はワークスペースのためのランチトレイン)に関連付けられた、許可されたグループベースコミュニケーションオブジェクトセットの一部であるという表示(indication)を記憶することになる。
この実施形態では、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションオブジェクト識別子308をnull値として(又は他の実施形態ではゼロとして)さらに記憶し得るが、これは、それらチャンネルの全てが「一括して」追加されるので、パブリックグループベースコミュニケーションチャンネルのそれぞれを具体性をもって特定する必要はないからである。最後に、グループベースコミュニケーションサーバ106は、is_exclusion変数(図3B参照)を「偽」に設定するが、これは、ユーザがいずれのパブリックグループベースコミュニケーションチャンネルも許可から除外していないからである(図5C参照)。is_exclusion変数についてのさらなる詳細は以下に述べられる。
「一括して」許可を追加することに対する追加のステップとして、もし許可テーブル301内の既存のロウが、サードパーティアプリケーションを、is_wildcard変数を介して追加されたパブリックグループベースコミュニケーションオブジェクトの任意のものに関連付けるなら、グループベースコミュニケーションサーバ106は、それらの既存のロウを除去することによって、許可テーブル301内に冗長な情報を有することを回避する。当業者なら、冗長な情報の除去が、「一括して」許可を追加するプロセスにおける第1ステップとして、最後のステップとして、又は任意の他のステップとして実行される実施形態を想定できるだろう。
この説明が既に暗示しているように、is_exclusion変数を「真」に設定することは、「一括して」追加された(すなわちis_wildcard変数を介して)特定のパブリックグループベースコミュニケーションチャンネルを、サードパーティアプリケーションの許可されたグループベースコミュニケーションオブジェクトセットから除去する。そうするために、グループベースコミュニケーションサーバ106は、許可テーブル301内の個別に除外されたパブリックグループベースコミュニケーションチャンネルについてのロウを生成することになる。このロウは、除外されたパブリックグループベースコミュニケーションチャンネルを、グループベースコミュニケーションオブジェクト識別子308を介して特定することになる。このロウは、パブリックグループベースコミュニケーションチャンネルがis_wildcard変数を介して「一括して」追加されたことも示し、この変数は、「真」に設定されることになる。最後に、ロウは、許可識別子304及びアプリ識別子306を介して、除外されたグループベースコミュニケーションチャンネルをサードパーティアプリケーションの許可に適切に関連付けなければならないことになる。これら一連のステップは、本質的には、特定されたパブリックグループベースコミュニケーションチャンネルをサードパーティアプリケーションの許可から除外する。
図5Cの他の局面について、もしユーザがアクチュエータ510を選択するなら、ユーザは、どのグループベースコミュニケーションチャンネルがユーザ識別子と関連付けられたチャンネル(すなわちユーザがメンバであるチャンネル)を形成し、それによりワークスペースのためのランチトレインのアプリケーションの許可されたグループベースコミュニケーションオブジェクトセットに含まれるかを粒度を持って(with granularity)特定し得る。ある実施形態では、アクチュエータ510をアクティベートすることは、今度は、ユーザが利用可能なチャンネルの中から選択的に選び得るさらなるインタフェースを起動し得る。
ユーザは、インストール段階の間には、いかなる追加の許可も付与しないという選択もし得る。ユーザは、アクチュエータ511を選択することによって、それからアクチュエータボタン514をクリックすることによって、いかなる追加の許可も付与することなく、ワークスペースのためのランチトレインのアプリケーションをインストールすることでこれを行い得る。しかし、図5Cが示すように、ユーザは、ワークスペースのためのランチトレインのアプリケーションに関連付けられた許可を後の段階において、すなわちインストールの後で、他の方法を介して、アップデートし得ることに注意されたい。よって、アプリケーションを、いかなるさらなる許可も付与することなく、インストールすることは、そのユーザ及びワークスペースのためのランチトレインのアプリケーションがインストールされるべき同じグループに属している他のユーザにとって依然として有益であり得る。
ステップ415、リクエストされた許可についての承認付与を受信することに応答して、グループベースコミュニケーションサーバ106は、クライアントデバイスのユーザをステップ408で受信されたredirect_URIにリダイレクトする。
ステップ417、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションプロバイダによってホストされたredirect_URIに、クライアントデバイスのユーザがリクエストされた許可について承認付与(authorization grant)を提供したことを示す一時的コードを送信する。この一時的コードは、特定された期間の間だけ有効であることによって、認証プロセスのセキュリティを確実にする。
ステップ418において、グループベースコミュニケーションサーバ106は、一時的コード、サードパーティアプリケーション識別子、サードパーティアプリケーションプロバイダ識別子、暗号列client_secret、及びredirect_URIを備える信号を受信する。
ステップ420において、ステップ420において受信された信号が、サードパーティアプリケーションプロバイダのアイデンティティを確認する情報を備えると判断されたことに応答して、グループベースコミュニケーションサーバ106は、アプリトークンを生成し、かつサードパーティアプリケーションプロバイダに送信する。
ステップ422において、グループベースコミュニケーションサーバ106は、インストールされたばかりのサードパーティアプリケーションに対応するアプリユーザアカウントを生成する。グループベースコミュニケーションサーバ106は、アプリユーザアカウントを表すデータ構造をグループベースコミュニケーションリポジトリ107に記憶する。アプリユーザアカウントは、グループ識別子を介してグループベースコミュニケーションシステム内のグループに少なくとも関連付けられる。以下に示されるのは、アプリユーザアカウントを含むデータ構造の一つの可能な実施形態である。
{
"data":
[
{
"id": 6207803345,
"username": "namely_bot1",
"email": "appuser-T061GA5HN-A0645SA56@slack-bots.com",
"team_id": 6050345600,
"deleted": 1485397246,
"created": 1458246382,
"password": "",
"conf_code": secret_string_variable_num_1,
"api_code": secret_string_variable_num_2,
"confirmed": 0,
"is_away": 0,
"is_admin": 0,
"is_owner": 0,
"is_restricted": 0,
"is_ultra_restricted": 0,
"is_bot": 3,
"profile": "{\"bot_id\":\"B0662Q48G\",\"api_app_id\":\"A0645SA56\",\"first_name\":\"N amely\",\"avatar_hash\":\"a74d2d92a5f9\",\"full_name\":\"Test BotNew\",\"preferred_name\":\"test_bot2\",\"image_24\":\string_variable_holding_URI_num_1,\"image_32\":\ string_variable_holding_URI_num_2,\"image_48\":\ string_variable_holding_URI_num_3,\"image_72\":\ string_variable_holding_URI_num_4,\"image_192\":\ string_variable_holding_URI_num_5,\"image_512\":\ string_variable_holding_URI_num_6,\"image_1024 string_variable_holding_URI_num_7,\"image_original\":\ string_variable_holding_URI_num_8,\"real_name\":\"Test Bot New\",\"real_name_normalized\":\"Test Bot New\",\"full_name_normalized\":\"Test Bot New\",\"preferred_name_normalized\":\"test_bot-x\",\"fields\":null,\"_unpacked\":true,\"always_active\":true}",
"color": "BLOB",
"has_push": 0,
"push_dirty": 1,
"push_count": 0,
"has_email": 1,
"email_dirty": 0,
"has_summary": 0,
"last_client_login": 1458581393,
"is_inactive": 1,
"date_model_update": 1508194156,
"external_id": 0,
"manual_away_ts": 0,
"tz": "America/Los_Angeles",
"is_pre_provisioned": 0
}
]
}
ステップ424において、グループベースコミュニケーションサーバ106は、アプリトークンのレコードを生成し、それをグループベースコミュニケーションリポジトリ107内に記憶する。アプリトークンは、アプリトークンテーブル302内に記憶され、それは、サードパーティアプリケーション識別子を介してサードパーティアプリケーションのアプリユーザアカウントに関連付けられる。さらに、生成され記憶されたアプリトークンは、ユーザがインストールプロセスの間にサードパーティアプリケーションに承認付与した許可に関連付けられた任意のグループベースコミュニケーションスコープを反映する。
ステップ426において、グループベースコミュニケーションサーバ106は、クライアントデバイス101Aのユーザによってサードパーティアプリケーションに付与された許可を反映する許可テーブル301についてのエントリを生成する。グループベースコミュニケーションサーバ106は、これらエントリをグループベースコミュニケーションリポジトリ107内の許可テーブル301内に記憶する。許可テーブル301は、サードパーティアプリケーション識別子及びアプリユーザアカウント識別子を介してサードパーティアプリケーションに関連付けられる。許可テーブル301は、グループ全体に関連付けられた許可に関するデータを保持することに注意されたい。
図4C−図4Dは、グループベースコミュニケーションシステム105のあるグループ内のサードパーティアプリケーションのインストール手続き400Bの第2実施形態を表す信号図を示す。図4Dは、図4Aと多くの類似点を有するが、いくつかの重要な差異を有する。図4Dの実施形態を参照して、図4A、ステップ402に関連して説明されたインタラクティブボタンが、サードパーティアプリケーションプロバイダ102Aに関連付けられたユーザインタフェースによって代わりに提供され得る。ユーザインタフェースの一部を形成するこのインタラクティブボタン要素は、クライアントデバイス101Aによって表示され得る。例えば、このインタラクティブボタンは、サードパーティアプリケーションプロバイダ102Aによって提供されるウェブサイトの一部であり得て、このサイトは、クライアントデバイス101Aのユーザによってアクセス可能である。このようにして、ステップ401において、クライアントデバイス101Aのユーザは、サードパーティアプリケーションプロバイダ102Aによって提供されたウェブサイトへの入力を提供し得て、この入力は、グループベースコミュニケーションシステム105にサードパーティアプリケーションをインストールしたいというリクエストの、サードパーティアプリケーションプロバイダ102Aへの通知として機能し得る。
ステップ402Aにおいて、インタラクティブボタンのクリックを示すイベント信号を受信することに応答して、サードパーティアプリケーションプロバイダ102Aは、ユーザアカウント及びサードパーティアプリケーションをインストールしたいグループを提供するようクライアントデバイス101Aのユーザをプロンプトし得る。
ステップ402Bにおいて、サードパーティアプリケーションプロバイダ102Aは、クライアントデバイス101Aからリクエストされた情報を受信する。ステップ403Aにおいて、そのような情報をクライアントデバイス101Aのユーザから受信したことに応答して、サードパーティアプリケーションプロバイダ102Aは、クライアントデバイス102Aのユーザを、グループベースコミュニケーションサーバ106によってホストされるURIにリダイレクトし、ここで承認及びインストールが開始され得る。ステップ403Bにおいて、グループベースコミュニケーションサーバ106は、ユーザをリダイレクトするのに加えて、承認及びインストールプロセスのために要求されるいくつかのパラメータをそのURIに送信する。そのようなパラメータは、例えば、クライアント識別子、サードパーティアプリケーションの代わりにリクエストされるべき許可の記述子、オプションのURI−−redirect_URI−−クライアントデバイスのユーザが、承認及び/又はインストールプロセスの終了時にリダイレクトされるべき場所、承認及び/又はインストールプロセスの完了と共に送信されるべきオプションのユニークな状態列、及びサードパーティアプリケーションがインストールされるべきグループに関連付けられたオプションのグループ識別子を備え得る。
その後、グループベースコミュニケーションサーバ106によってホストされるURIを介してパラメータを受信したことに応答して、グループベースコミュニケーションサーバ106は、ステップ404に入るが、これは、上の図4Aに関して説明したステップ404と同一である。同様に、システムは、ステップ406,407,410,412,414,415,416,417,418,420,及び422を処理していくが、これら全ては、図4Aを参照して説明された同様に番号が付されたステップと類似及び同一である。しかし図4Dの実施形態は、ステップ408及び409を省略しており、これは、これらステップが図4Dに開示される実施形態では必要がないからであることに注意されたい。
アプリケーションをグループベースコミュニケーションオブジェクトに追加する
グループベースコミュニケーションシステム105は、ユーザがサードパーティアプリケーションを、候補グループベースコミュニケーションオブジェクトセットの一部を形成する追加のグループベースコミュニケーションオブジェクトに追加することができるようにするよう構成される。グループベースコミュニケーションサーバ106は、サードパーティアプリケーションを、追加のグループベースコミュニケーションオブジェクトに追加するための異なる代替手段を提供し得る。ある実施形態では、インストールプロセスの間に、かつグループベースコミュニケーションオブジェクト許可インタフェースを介して、グループベースコミュニケーションサーバ106は、そのサードパーティアプリケーションについての追加の許可を選択及び付与するオプションをユーザに与え得る。これらのプロセスは、図4A−図4Dの議論において、図5A−図5Cを参照して既に説明された。
図6は、サードパーティアプリケーションをグループベースコミュニケーションオブジェクトに追加するプロセスの実施形態を表す信号図である。ステップ602において、グループベースコミュニケーションサーバ106は、ユーザがサードパーティアプリケーションをグループベースコミュニケーションオブジェクトに追加したいとリクエストしていることを示す入力リクエストをクライアントデバイスから受信する。
ステップ603において、サードパーティアプリケーションの許可をアップグレードしたいというリクエストを含む信号を受信したことに応答して、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションに対する追加の許可を承認又は拒否するようユーザにプロンプトする。このプロンプトは、クライアントデバイスによって受信された時に、クライアントデバイスがグループベースコミュニケーションオブジェクト許可インタフェースをレンダリングするようにさせる、グループベースコミュニケーションサーバからの命令の形態であり得る。そのようなグループベースコミュニケーションオブジェクト許可インタフェースの例示的実施形態が図7Aに示される。許可リクエストメッセージ703及び704と共にアクチュエータボタン701及び702の機能は、図5Bについて開示されたアクチュエータ及びメッセージの機能と類似する。図7Aにおいて、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションチャンネルatlanta-unitedの中で「スラッシュコマンドを追加する」及び「アプリとしてメッセージをポストする」許可をワークスペースのためのランチトレインのアプリケーションに承認するよう、クライアントデバイス101Aのユーザにプロンプトし得る。クライアントデバイスのユーザは、アクチュエータボタン701及び702を用いて、許可を承認又は拒否し得る。アクチュエータボタン702をクリックすることによって、リクエストされた許可について承認付与(authorization grant)が発行され、これらは、グループベースコミュニケーションサーバ106によって受信され得る。
図7Aは、グループベースコミュニケーションサーバ106が、グループベースコミュニケーションオブジェクト−−atlanta-united−−を許可されたグループベースコミュニケーションオブジェクトセットに追加する承認をするようクライアントデバイス101Aのユーザをプロンプトし、意図された結果として、サードパーティアプリケーション−−ワークスペースのためのランチトレイン−−がそれからそのグループベースコミュニケーションスコープ(そのそれぞれのグループベースコミュニケーションスコープ記述子313)をatlanta-unitedに適用することが承認されることとなる、実施形態に関することに注意されたい。最終結果は、もしクライアントデバイス101Aのユーザがリクエストを承認するなら、ワークスペースのためのランチトレインは、新しい許可(すなわちグループベースコミュニケーションオブジェクト及びグループベースコミュニケーションアクションの間のペアリングの新しいセット)を獲得し、(a)atlanta-united内でスラッシュコマンドを追加し、及び(b)atlanta-united内のアプリとしてメッセージをポストする。しかし、図7Aの他の変化形が可能である。例えば、グループベースコミュニケーションサーバ106は、代わりに、承認のためにクライアントデバイス101Aのユーザに対して、追加のグループベースコミュニケーションオブジェクトと関連付けられるべき、さまざまなグループベースコミュニケーションアクションを含む許可群を同時に追加又は選択するようプロンプトし得る。図7Bは、複数のリクエストされたグループベースコミュニケーションアクションのうちからユーザが選択できるようにするインタフェースの例示的実施形態を示す。図7Bに示された実施形態において、クライアントデバイス101Aのユーザは、ワークスペースのためのランチトレインのアプリケーションがatlanta-united(承認されると同時に、サードパーティアプリケーションが許可を付与される、追加のグループベースコミュニケーションチャンネル)におけるメッセージを読み書きできるようにするという選択した状態である。
ステップ605において、承認付与を含む信号をクライアントデバイス101Aのユーザから受信したことに応答して、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションリポジトリ107にアクセスすることによって、そのサードパーティアプリケーションプロバイダから受信されたアプリトークンに関連付けられたアプリユーザに関連付けられた許可を変更する。許可リクエストに含まれるグループベースコミュニケーションオブジェクトが、サードパーティアプリケーションの許可されたグループベースコミュニケーションオブジェクトセット内に含まれるように、グループベースコミュニケーションサーバ106は許可テーブル301を変更する。さらに、許可リクエストに含まれるグループベースコミュニケーションアクションが、サードパーティアプリケーションの許可されたグループベースコミュニケーションアクションセットに含まれるように、グループベースコミュニケーションサーバ106はアプリトークンテーブル302を変更する。要約すると、承認付与によって許可された(granted by the authorization grant)グループベースコミュニケーションアクション及びグループベースコミュニケーションオブジェクトがサードパーティアプリケーションに関連付けられるように、グループベースコミュニケーションサーバ106はグループベースコミュニケーションリポジトリ107(すなわちテーブル301及び302)を変更する。
例示的実施形態として、図7Aを参照すると、グループベースコミュニケーションサーバ106は、ユーザがアクチュエータボタン702をクリックした結果として、承認付与をユーザから受信することもできる。応答として、よってグループベースコミュニケーションサーバ106は、許可されたグループベースコミュニケーションオブジェクトセット内にグループベースコミュニケーションチャンネル「atlanta-united」を含むように、ワークスペースのためのランチトレインに関連付けられた許可テーブル301を変更する。「スラッシュコマンドを追加する」及び「アプリとしてメッセージをポストする」に対応するグループベースコミュニケーションアクションは、グループベースコミュニケーションスコープ記述子313によって特定されるグループベースコミュニケーションスコープに既に含まれているので、ワークスペースのためのランチトレインのアプリケーションの許可されたグループベースコミュニケーションアクションセット内にそれらグループベースコミュニケーションアクションを含むためには、グループベースコミュニケーションリポジトリ107のさらなるアップデートは要求されない。このようにして、これらステップ全ての後で、ワークスペースのためのランチトレインのアプリケーションに関連付けられた許可テーブル301及びアプリトークンテーブル302は、許可されたグループベースコミュニケーションオブジェクトセットを許可されたグループベースコミュニケーションアクションセットにマッピングするよう構成されることになる。
図7Bの異なる実施形態において、グループベースコミュニケーションシステム105は、アクションボタン750をユーザがクリックする時、イベント群の同様のシーケンスを順次実行するが、このシーケンスは、説明の価値があるいくつかの重要な差異を含む。アクチュエータボタン750をユーザがクリックした結果として承認付与を受信したことに応答して、グループベースコミュニケーションサーバ106は、ワークスペースのためのランチトレインのアプリケーションに関連付けられた許可テーブル301をまず変更する。そこでは、グループベースコミュニケーションサーバ106は、許可されたグループベースコミュニケーションオブジェクトセット内に、グループベースコミュニケーションチャンネルatlanta-unitedを含む。
変更した後、グループベースコミュニケーションサーバ106は、ワークスペースのためのランチトレインのアプリケーションの許可されたグループベースコミュニケーションアクションセット内に、atlanta-unitedにおける「リード」及び「ライト」に対応するグループベースコミュニケーションアクションを含むように、グループベースコミュニケーションリポジトリ107をそれから変更する。ある実施形態では、このステップは、
ワークスペースのためのランチトレインのアプリケーションの許可されたグループベースコミュニケーションアクション内に、「リード」及び「ライト」に対応するグループベースコミュニケーションアクションを含むように、グループベースコミュニケーションサーバ106がアプリトークンテーブル302を変更することからなる。アプリトークンテーブル302は、それらグループベースコミュニケーションアクションをatlanta-unitedに関連付ける必要もある。そのような実施形態においては、アプリトークンテーブル302は、特定のグループベースコミュニケーションオブジェクト(例えばatlanta-united)についてのグループベースコミュニケーションアクションを記憶することをサポートするよう特別に構成されなければならない。よってこの実施形態は、図3Cに開示されたアプリトークンテーブルをわずかに変更することしか必要としないことを当業者なら理解するだろう。
しかし、図7Bに関連する他の実施形態では、アプリトークンテーブル302(図3Bを参照)の特別な変更は必要とされないが、許可されたグループベースコミュニケーションアクションを追加するステップでは、オブジェクト例外テーブル303(図3Dを参照)の利用が必要とされる。図7Bに示されるプロンプトは、atlanta-unitedにおける履歴及びファイルについてのリード、ライト、及びアクセスの許可オプションを提供するので、ワークスペースのためのランチトレインについてのグループベースコミュニケーションスコープ記述子313(図3Cを参照)は、それらそれぞれのグループベースコミュニケーションスコープ(例えばチャンネル:リード、チャンネル:ライト、チャンネル:履歴)を含む。これは、グループベースコミュニケーションリポジトリ107内に例外を含ませなければ、単にatlanta-unitedを許可されたグループベースコミュニケーションオブジェクトセットに追加することによって、ワークスペースのためのランチトレインのアプリケーションに、内の履歴及びファイル(そのオブジェクトタイプは、グループベースコミュニケーションチャンネル)へのリード、ライト、及びアクセスをする許可を与えることになるということを意味する。
よって、図7Bの説明を続けると、この実施形態においては、グループベースコミュニケーションサーバ106は、まず承認付与をクライアントデバイス101Aのユーザから受信し(図7Bについて上で既に説明したように)、それからatlanta-unitedを許可されたグループベースコミュニケーションオブジェクトセット内に含む(図7Bについて上で既に説明されたように)ように、許可テーブル301を変更する。これら2つの予備ステップの後に、それからグループベースコミュニケーションサーバ106は、許可テーブル301において、includes_object_exceptionsのブール型315を「真」に設定する。includes_object_exceptionsのブール型315を「真」に設定することによって、グループベースコミュニケーションサーバ106は、atlanta-unitedについてのワークスペースのためのランチトレインのアプリケーションの許可が少なくとも1つの例外を含むという表示を記憶する。その後、グループベースコミュニケーションサーバ106は、atlanta-unitedに関連付けられたエントリを含むように、オブジェクト例外テーブル303を変更する(atlanta-unitedの識別子と一致するグループベースコミュニケーションオブジェクト識別子326を介して)。そこでは、グループベースコミュニケーションサーバ106は、「履歴及びファイルにアクセスすること」(すなわちチャンネル:履歴)は、グループベースコミュニケーションチャンネルatlanta-unitedについて除外されたグループベースコミュニケーションスコープであることを特定するデータを含むように、除外されたグループベースコミュニケーションスコープ330を変更する。さらには、オブジェクト例外テーブル303は、その例外を、アプリ識別子323及びオプションとしては許可識別子321を介して、ワークスペースのためのランチトレインのアプリケーションに関連付ける。
このようにして、グループベースコミュニケーションリポジトリ107は、ワークスペースのためのランチトレインのアプリケーションの許可されたグループベースコミュニケーションアクション内に、atlanta-unitedにおいてリードすること及びライトすることというグループベースコミュニケーションアクションを含むように構成される(それぞれのグループベースコミュニケーションスコープは、atlanta-unitedについて除外されないので)。当業者なら、テーブルのエントリの間で正しい関連付けを行うためには、それぞれのテーブル(301−303)に記憶された識別子が全て一致しなければならないことを理解するだろう。例えば、それら2つのテーブルのエントリの間の関連付けを行うためには、オブジェクト例外テーブル303からのアプリ識別子323は、許可テーブル301内のアプリ識別子306と同一でなければならない。
図7Bについて実現される実施形態にかかわらず、さまざまな実施形態について上述のステップの結果、グループベースコミュニケーションリポジトリ107は、新しく許可されたグループベースコミュニケーションオブジェクトセットを、新しく許可されたグループベースコミュニケーションアクションセットに適切にマッピングするよう構成される。これは、テーブル301、302、及びオプションとして303に入力される識別子によるアクション変化との暗黙の関連付けから生じる。
ステップ606において、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションに関連付けられた許可への変更を確認するために、信号をサードパーティアプリケーションプロバイダに送信する。ステップ606のある具体的な実施形態では、その信号、つまりaction_granted信号は、新しいサードパーティコミュニケーションアクションが承認されたことをサードパーティアプリケーションプロバイダに通知し、これは以下のデータを含み得る。
{
"token": "verification_token",
"team_id": "T061EG9R6",
"api_app_id": "A0BLA3EP2",
"event": {
"type": "permission_granted",
"permissions": [
"channel:write"
],
"trigger_id": variable_holding_trigger_id
},
"type": "event_callback",
"authed_teams": [],
"event_id": "Ev0BQ5FTL0",
"event_time": 1497911545
}
ステップ607において、グループベースコミュニケーションサーバ106は、606において発行された確認に関連付けられた許可の変更の記述子についてのリクエストを、サードパーティアプリケーションプロバイダ102Aから受信する。ステップ608において、応答して、グループベースコミュニケーションサーバ106は、新しい許可に伴うグループベースコミュニケーションオブジェクト及びアクションに関する詳細を含むデータを、サードパーティアプリケーションプロバイダ102Aに送信し得る。サードパーティアプリケーションは、その信号をそれから利用することによって、アクションを実行し、それ自身のデータを操作し、将来に参照するために新しい許可のレコードを記憶する等し得る。具体的な例示的実施形態において、第2の送信された信号は、以下の例示的データを含み得る。
{
"token": "verification_token",
"team_id": "T061EG9R6",
"api_app_id": "A0BLA3EP2",
"event": {
"type": "resources_added",
"resources": [
{
"resource": {
"type": "im",
"grant": {
"type": "specific",
"resource_id": "D0BH95DLH"
}
},
"permissions": [
"chat:write",
"im:read",
"im:history",
"commands"
]
}
]
},
"type": "event_callback",
"authed_teams": [],
"event_id": "Ev0BLTJ7JM",
"event_time": 1497911545
}
一方で、もしステップ604において、グループベースコミュニケーションサーバ106が拒否メッセージをクライアントデバイス101Aから受信するなら、グループベースコミュニケーションサーバ106は、手続きを中止して、ステップ605−608のいずれも行われないようにする。
グループベースコミュニケーションサーバ106は、サードパーティアプリケーションに関連付けられたApp DMを介してユーザが許可を追加できるようにする。例えば、グループベースコミュニケーションサーバ106は、ユーザがサードパーティアプリケーションの許可を設定することを可能にするグラフィカルユーザインタフェース、すなわちApp DMをクライアントデバイス101Aにレンダリングさせるデータをクライアントデバイス101Aに送信し得る。このレンダリングは、プロセス600からステップ602の前に起こるだろう。
図9A−図9Iは、App DMのいくつかの実施形態の図示を提供する。図9Aは、サードパーティアプリケーション−−ワークスペースのためのランチトレイン−−に関連付けられたあるApp DMのための設定タブを示し、ワークスペースのためのランチトレインのアプリケーションの許可を閲覧するための異なるメニューをユーザが見ることできるようにする。図9Aのこの具体的な実施形態では、設定タブは、タブインジケータ901によって示されるように「チャンネルアクセス」と名付けられている。加えて、例えば、少なくともアクチュエータボタン902(「チャンネルにアプリを追加する」とラベルが付されている)を介して、グループベースコミュニケーションサーバ106は、ワークスペースのためのランチトレインのアプリケーションについての許可されたグループベースコミュニケーションオブジェクトをユーザが変更できるようにし得る。この具体的な実施形態では、ユーザは、グループベースコミュニケーションチャンネルを、サードパーティアプリケーションの許可されたグループベースコミュニケーションオブジェクトセットに追加したいというリクエストをしているので、候補グループベースコミュニケーションセットは、クライアントデバイス101Aのユーザが属しているグループと、クライアントデバイス101Aのユーザのユーザアカウントとの両方に関連付けられたグループベースコミュニケーションチャンネルからなることになる。このようにして、候補グループベースコミュニケーションオブジェクトセットは、グループ識別子(サードパーティアプリケーションがインストールされたグループに関連付けられている)及びユーザ識別子(そのサードパーティアプリケーションについての設定許可のプロセスにあるユーザのユーザアカウントに関連付けられている)に基づいて生成される。
図9Aに関して上で説明された実施形態においては、クライアントデバイス101Aのユーザは、サードパーティアプリケーションを、そのユーザ自身がアクセス権限を有しないグループベースコミュニケーションチャンネルには追加することを許されないかもしれない。換言すれば、もしクライアントデバイス101Aのユーザがサードパーティアプリケーションをグループベースコミュニケーションチャンネルに追加したいとリクエストするなら、そのクライアントデバイス101Aのユーザは、プライベートグループベースコミュニケーションチャンネルのメンバでなければならないか、又はパブリックグループベースコミュニケーションチャンネルへのアクセス権限を有しなければならない。もしクライアントデバイス101Aのユーザがグループベースコミュニケーションチャンネルへのアクセス権限を有しないなら、そのユーザは、グループベースコミュニケーションチャンネルに関する許可をサードパーティアプリケーションに付与することが許されない。これは、グループベースコミュニケーションチャンネル及びグループ内の他のグループベースコミュニケーションオブジェクトについての重要な差異である。この差異は、いくつかの実施形態では、グループに属するユーザは、そのグループ内のグループベースコミュニケーションチャンネルの異なるサブセットのメンバであり得るので、重要である。
グループベースコミュニケーションサーバ106は、ユーザが、サードパーティアプリケーションの許可テーブル301から許可を除去することも可能にする。図9Aを参照して、ユーザは、許可されたグループベースコミュニケーションチャンネル名のそれぞれの横にあるアクチュエータボタン(バツ「x」というラベルが付されている)903をクリックし得る。このようにして、グループベースコミュニケーションサーバ106は、そのような入力を示す信号をクライアントデバイス101Aのユーザから受信したことに応答して、サードパーティアプリケーション及びユーザ入力に関連付けられたグループベースコミュニケーションチャンネルの間のマッピングを除去するよう、許可テーブル301を変更し得る。いくつかの実施形態では、グループベースコミュニケーションサーバ106は、追加として信号をサードパーティアプリケーションに送信し、ここでその信号は、グループベースコミュニケーションオブジェクトがそのサードパーティアプリケーションに関連付けられた許可から除去されたという通知を含み得る。
図9Bは、App DMのさらに他のタブを示す。ここでは、このタブは、特定のグループ(「My Test Company」)内のワークスペースのためのランチトレインのアプリケーションの許可のサマリーを提供する。図9Bに示される実施形態に与えられた許可は、1つの許可されたグループベースコミュニケーションオブジェクトしか含まない。すなわち、それを通してワークスペースのためのランチトレインのアプリケーションが通信し得る1人の特定のユーザを持つApp DMである(すなわちApp DM内でメッセージをリードし、メッセージをライトし、かつ会話履歴にアクセスする)。そのようなタブをレンダリングするために、App DMは、そのサードパーティアプリケーションに関連付けられた許可テーブル及びアプリトークンテーブルの両方にアクセスし、相互参照することによって、サードパーティアプリケーションに関連付けられた許可を必ず得なければならない(そのアプリユーザアカウント及びアプリ識別子を介して)。
図9Cは、App DMのもう1つのタブを示す。ここでは、このタブは、App DMタブにアクセスする許可を持つユーザと、ワークスペースのためのランチトレインのアプリケーションとの間の会話の履歴を提供する。図9Cに示されるタブは、「会話タブ」と参照され得る。さらに図9Cに示されるタブは、サードパーティアプリケーションによってアクセス可能であるメッセージをユーザがポストできるようにする。大まかには、図9Cに示されるタブは、ユーザがサードパーティアプリケーションとインタラクトできるようにもする。例えば、図9Cは、「これをしよう」を表示するインタラクティブボタン908を示す。他の実施形態では、インタラクティブボタン908は、複数の可能なディスプレイスクリーンインタラクティブ要素のうちの任意の1つに置換され得る。ユーザは、そのボタンをクリックすると、入力信号をサードパーティアプリケーションに送信し得て、サードパーティアプリケーションにも送信され得るグループベースコミュニケーションシステム内のイベント信号をトリガし得る。サードパーティアプリケーションは、これら信号を用いて、適切な機能を実行し得る。大まかには、図9Cに示されるタブは、グループベースコミュニケーションチャンネルと同様に機能し得る。
図9Dは、ユーザがアクチュエータボタン902を介してアプリをチャンネルに追加するよう選択した候補グループベースコミュニケーションチャンネルセットを示す。メニュー909は、候補グループベースコミュニケーションチャンネルをユーザのために表示し、このチャンネルは、この具体的な実施形態では、atlanta-united、general、random、及びprivate-channel-2のグループベースコミュニケーションチャンネルからなる。このように、クライアントデバイス102Aのユーザは、それらのグループベースコミュニケーションチャンネルのうちの任意の1つをメニュー909を介して選択し得る。グループベースコミュニケーションサーバ106は、今度は、そのユーザが選択したグループベースコミュニケーションチャンネルにアクセスするための許可をサードパーティアプリケーション(App DMに関連付けられている)に付与し得る。この実施形態では、クライアントデバイス102Aのユーザは、グループベースコミュニケーションサーバ106がそのグループベースコミュニケーションチャンネルをメニュー909内のオプションとしてリストする前には、グループベースコミュニケーションチャンネルへのアクセスを有していなければならない。
前の実施形態の変形例においては、ユーザが、メニュー909(図9Dを参照)内にリストされた候補グループベースコミュニケーションチャンネルのうちの1つ、又はメニュー915(図9Aを参照)、925(図9Dを参照)、又は935(図9Fを参照)のいずれかにリストされた許可されたグループベースコミュニケーションチャンネルのうちの1つを選択した後に、グループベースコミュニケーションサーバ106Aは、サードパーティアプリケーションの許可に含むよう、1つ以上のチャンネルオブジェクトセットを選択するようユーザをプロンプトし得る。この実施形態では、グループベースコミュニケーションサーバ106は、クライアントデバイス101Aのユーザが、選択されたグループベースコミュニケーションチャンネルのそれぞれのチャンネルオブジェクトセットの一部を形成するグループベースコミュニケーションオブジェクトをメニューから選択的に選ぶことができるようにするインタフェースをクライアントデバイス101Aに送信する。
そのようなインタフェースの例示的実施形態は、図9Gに示される。図9Gは、ユーザがグループベースコミュニケーションチャンネル「atlanta-united」をメニュー909(図9Dを参照)のようなメニューから選択した後で、クライアントデバイス101Aを介してレンダリングされたインタフェースを示す。同様のインタフェースは、メニュー915(図9Aを参照)、メニュー925(図9Dを参照)、又はメニュー935(図9Fを参照)の任意のものにリストされた許可されたグループベースコミュニケーションチャンネルの1つをユーザが選択した後に、クライアントデバイス101Aを介してレンダリングされ得る。クライアントデバイス101Aのユーザは、そのサードパーティアプリケーションがアクセスを獲得するであろうグループベースコミュニケーションオブジェクトを選択的に選ぶために、そのインタフェースとインタラクトし得る。図9Gは、グループベースコミュニケーションチャンネル内の全てのオブジェクト(すなわちフルチャンネルオブジェクトセット)に関しての許可を追加するオプションをユーザに与えることによって、グループベースコミュニケーションチャンネル内のグループベースコミュニケーションオブジェクトを選択的に選ぶか、又はチャンネルオブジェクトセット内のグループベースコミュニケーションオブジェクトのいずれにもアクセスを提供しない。その後、グループベースコミュニケーションサーバ106がクライアントデバイス101Aから承認付与を受信した後で、例えば、ユーザが選択をしてボタンアクチュエータ950をクリックした後で起こるであろうことのように、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションに関連付けられた許可を変更することによって、ユーザによって選択され付与された新しい許可を反映させる。
許可の変更は、本開示の「グループベースコミュニケーションリポジトリ」とラベルが付されたセクションにおける関連する説明のような、本開示の他のセクションにおいて説明されるものであり得る。さらに、チャンネルオブジェクトセット内のグループベースコミュニケーションオブジェクトを選択的に選ぶというこの機能は、オブジェクト例外テーブル303を介してイネーブルされる。オブジェクト例外テーブル303は、少なくとも除外されたオブジェクト識別子328及び除外されたオブジェクトタイプ327を介して、チャンネルオブジェクトセット内の選択されたグループベースコミュニケーションオブジェクトを追跡する。オブジェクト例外テーブル303の使用は、図7Bについての前の説明で示されており、その説明は、オブジェクト例外テーブル303を利用して除外されたグループベースコミュニケーションスコープを追跡することに代えて、そのテーブルは、ここでは、チャンネルオブジェクトセットに関連する許可から除外されたグループベースコミュニケーションオブジェクトを追跡するために利用されるという、わずかな変更だけでこの実施形態に当てはまる。この結果は、よってグループベースコミュニケーションシステム105は、オブジェクト例外テーブル303を利用することによって、サードパーティアプリケーションにアクセス可能であるチャンネルオブジェクトセット内のグループベースコミュニケーションオブジェクトを決定し得るということになる。
前の実施形態の他の変形例では、ユーザが、メニュー909(図9Dを参照)にリストされた候補グループベースコミュニケーションチャンネルの1つ、又はメニュー915(図9Aを参照)、925(図9Dを参照)、又は935(図9Fを参照)のいずれかにリストされた許可されたグループベースコミュニケーションチャンネルの1つを選択した後で、グループベースコミュニケーションサーバ106Aは、サードパーティアプリケーションの許可の中に含むように、1つ以上のグループベースコミュニケーションアクションを選択するようユーザをプロンプトし得る。この実施形態では、グループベースコミュニケーションサーバ106は、クライアントデバイス101Aのユーザが、グループベースコミュニケーションアクションをメニューから選択的に選ぶことができるようにするインタフェースをクライアントデバイス101Aに送信する。
そのようなインタフェースの例示的実施形態は、図9Hに示される。図9Hは、ユーザがグループベースコミュニケーションチャンネル「atlanta-united」をメニュー909(図9Dを参照)のようなメニューから選択した後に、クライアントデバイス101Aを介してレンダリングされたインタフェースを示す。同様のインタフェースは、ユーザが、メニュー915(図9Aを参照)、925(図9Dを参照)、又は935(図9Fを参照)のいずれかにリストされる許可されたグループベースコミュニケーションチャンネルの1つを選択した後、クライアントデバイス101Aを介してレンダリングされ得る。クライアントデバイス101Aのユーザは、インタフェースとインタラクトすることによって、グループベースコミュニケーションチャンネル「atlanta-united」についてサードパーティアプリケーションがとり得るグループベースコミュニケーションアクションを選択的に選び得る。図9Hは、(A)同じオブジェクトタイプについてワークスペースのためのランチトレインのアプリケーションがふつう獲得する全てのグループベースコミュニケーションアクションを追加する(すなわち(a)オブジェクトタイプ−−この場合、グループベースコミュニケーションチャンネル−−及び(b)グループベースコミュニケーションアクションのペアリングにおいて特定されるそのようなグループベースコミュニケーションアクションであって、これらペアリングは、ワークスペースのためのランチトレインに関連付けられたアプリトークンテーブル302のグループベースコミュニケーションスコープ記述子313において特定される)、(B)ワークスペースのためのランチトレインが「atlanta-united」においてとり得るグループベースコミュニケーションアクションを選択的に選ぶ、又は(C)「atlanta-united」についていかなるグループベースコミュニケーションアクションも承認しないというオプションをユーザに与える。
その後、ユーザが選択をし、ボタンアクチュエータ970をクリックした後に起こるような、グループベースコミュニケーションサーバ106がクライアントデバイス101Aから承認付与を受信した後に、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションに関連付けられた許可を変更することによって、ユーザによって選択され付与された新しい許可を反映させる。許可の変更は、本開示の「グループベースコミュニケーションリポジトリ」とラベルが付されたセクションにおける関連する説明のような、本開示の他のセクションにおいて説明されるものであり得る。さらに、グループベースコミュニケーションオブジェクトについてグループベースコミュニケーションアクションを選択的に選ぶというこの機能は、オブジェクト例外テーブル303を介してイネーブルされる。オブジェクト例外テーブル303は、少なくとも除外されたグループベースコミュニケーションスコープ330を介して、全てのグループベースコミュニケーションチャンネルについてワークスペースのためのランチトレインのアプリケーションに与えられた選択されたグループベースコミュニケーションアクションを追跡する。
前の実施形態のさらに他の変形例では、ユーザがメニュー909(図9Dを参照)にリストされる候補グループベースコミュニケーションチャンネルの1つ、又はメニュー915(図9Aを参照)、925(図9Dを参照)、又は935(図9Fを参照)のいずれかにリストされる許可されたグループベースコミュニケーションチャンネルの1つを選択した後に、グループベースコミュニケーションサーバ106Aは、1つ以上のグループベースコミュニケーションオブジェクトに関連した1つ以上のグループベースコミュニケーションオブジェクト及びグループベースコミュニケーションアクションを選択するようユーザにプロンプトし得る。この実施形態では、グループベースコミュニケーションサーバ106は、クライアントデバイス101Aのユーザがメニューからグループベースコミュニケーションオブジェクト及びグループベースコミュニケーションアクションを選択的に選ぶことができるようにするために、インタフェースをクライアントデバイス101Aに送信する。
そのようなインタフェースの例示的実施形態は、図9Iに示される。図9Iは、ユーザがグループベースコミュニケーションチャンネル「atlanta-united」をメニュー909(図9Dを参照)のようなメニューから選択した後に、クライアントデバイス101Aを介してレンダリングされたインタフェースを示す。同様のインタフェースは、ユーザが、メニュー915(図9Aを参照)、925(図9Dを参照)、又は935(図9Fを参照)のいずれかにリストされる許可されたグループベースコミュニケーションチャンネルの1つを選択した後、クライアントデバイス101Aを介してレンダリングされ得る。クライアントデバイス101Aのユーザは、インタフェースとインタラクトすることによって、チャンネルオブジェクトセットを含むグループベースコミュニケーションオブジェクトを選択的に選び得る。追加として、クライアントデバイス101Aのユーザは、インタフェースとインタラクトすることによって、チャンネルオブジェクトセットを含む選択されたグループベースコミュニケーションオブジェクトについてサードパーティアプリケーションがとり得るグループベースコミュニケーションアクションを選択的に選び得る。この意味で、図9Iは、グループベースコミュニケーションチャンネル内の全てのオブジェクト(すなわちフルチャンネルオブジェクトセット)についての許可を追加するか、グループベースコミュニケーションチャンネル内のグループベースコミュニケーションオブジェクト及び関連付けられたグループベースコミュニケーションアクションを選択的に選ぶか、又はチャンネルオブジェクトセット内のグループベースコミュニケーションオブジェクトのいずれにもアクセスを提供しないというオプションをユーザに与える。
その後、ユーザが選択し、ボタンアクチュエータ990をクリックした後に起こるように、グループベースコミュニケーションサーバ106がクライアントデバイス101Aから承認付与を受信した後、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションに関連付けられた許可を変更することによって、ユーザによって選択され付与された新しい許可を反映する。許可の変更は、本開示の「グループベースコミュニケーションリポジトリ」とラベルが付されたセクションにおける関連する説明のような、本開示の他のセクションにおいて説明されるものであり得る。
図9Eは、クライアントデバイスのユーザが図9Aに示されるようなアクチュエータボタン904をクリックつまりアクティベートした後にレンダリングされる許可インタフェースを示す。アクチュエータボタン904に付随する記述子において表現されるように、クライアントデバイス102Aのユーザは、サードパーティアプリケーションを、サードパーティアプリケーションがインストールされているグループ内で利用可能な全てのパブリックチャンネルに「一括して」追加する。よって、図9Eについては、もしユーザが許可リクエストを認めるならグループベースコミュニケーションサーバ106は、許可されたグループベースコミュニケーションオブジェクトセット内の、そのグループ識別子(アプリユーザアカウント及びリクエストをしているユーザのユーザアカウントによって共有されている同じグループ識別子)に関連付けられた全てのパブリックチャンネルを含むように、問題のサードパーティアプリケーションに関連付けられた許可テーブル301を変更する。この実施形態において許可を「一括して」追加することは、図5C、アクチュエータ509、及びそこへの許可の「一括して」の追加について既に述べられた説明と同様である。
図9Fは、図9Aに示されるようにクライアントデバイスのユーザが、アクチュエータボタン905をクリックつまりアクティベートした後にレンダリングされる許可インタフェースを示す。アクチュエータボタン905は、サードパーティアプリケーションがグループ識別子に関連付けられた全てのパブリックチャンネルにアクセスする許可を付与された場合にだけ、利用可能になることに注意されたい。アクチュエータボタン905に付随する記述子において表現されるように、クライアントデバイス102Aのユーザは、特定のグループベースコミュニケーションチャンネルを、許可されたグループベースコミュニケーションオブジェクトセットから除外し得る。いくつかの実施形態では、図9Gに示されるメニュー906は、許可されたグループベースコミュニケーションオブジェクトセット内のそれらのパブリックグループベースコミュニケーションチャンネルだけからなる。ユーザがメニュー906に提供されたグループベースコミュニケーションチャンネルのいずれか1つをクリックする時、ユーザは、選択されたグループベースコミュニケーションチャンネルが、そのサードパーティアプリケーションに関連付けられた許可されたグループベースコミュニケーションオブジェクトセットから除去されることを実質的にリクエストする。グループベースコミュニケーションシステム105は、この機能を、図3Bに描かれた許可テーブル301内のis_exclusionブール変数を介してこの機能をイネーブルする。特定のグループベースコミュニケーションオブジェクトに関連付けられたこのis_exclusionブール変数は、そのグループベースコミュニケーションオブジェクトが、サードパーティアプリケーション(すなわちアプリ識別子を介してグループベースコミュニケーションオブジェクトに関連付けられたサードパーティ)に関連付けられた許可から除外されなければならないことを示すために、「真」に設定される。
除外されたパブリックチャンネルのリストに含まれる任意のグループベースコミュニケーションチャンネルは、アクチュエータボタン903について上で説明されたように、同様の方法を介してそのようなリストから除去され得る。同じタイプのアクチュエータは、いったん任意のグループベースコミュニケーションチャンネルがユーザによってこのリストに追加されたら、図9Gにおける除外されたパブリックチャンネルをリストするメニューに含まれ得る。もしグループベースコミュニケーションチャンネルが図9Fの「除外されたパブリックチャンネル」メニューの下でリストされていたなら示されるであろうように、アクチュエータボタンは、グループベースコミュニケーションチャンネルが除外されていることを示すエントリの横に現れる。
一般に、図9A−図9Iについて、グループベースコミュニケーションサーバ106は、(a)グループベースコミュニケーションチャンネルのチャンネルオブジェクトセットの一部を形成する1つ以上のグループベースコミュニケーションオブジェクト及び/又は(b)1つ以上のグループベースコミュニケーションチャンネルの、許可されたグループベースコミュニケーションオブジェクトセットへの追加を示す一連の入力をクライアントデバイス101Aから受信する。応答として、グループベースコミュニケーションサーバ106は、ユーザ選択及び入力に関連付けられた許可に対応するデータ構造を生成する。さらに、グループベースコミュニケーションサーバ106は、App DMを介したユーザ入力に従って、追加の許可、すなわち追加の許可されたグループベースコミュニケーションオブジェクト及び許可されたグループベースコミュニケーションアクションのマッピングを含むように、許可テーブル301及びアプリトークンテーブル302を変更する。いくつかの実施形態では、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションに信号を追加で送信し、ここでそのような信号は、新しいグループベースコミュニケーションオブジェクトがサードパーティアプリケーションに関連付けられた許可に追加されたという通知を含み得る。これらのプロセスは、図6について説明されたステップと類似する。
グループベースコミュニケーションサーバ106は、サードパーティアプリケーションに関連付けられた許可を追加又は除去する他の方法を提供し得る。例えば、ユーザは、コマンドをグループベースコミュニケーションチャンネルにポストし得る。ある実施形態では、このコマンドは、スラッシュコマンド−−「/invite」又は「/kick」のような最初にスラッシュを含むようにフォーマットされた文字列で、グループベースコミュニケーションシステム内でコマンドを起動する−−の形態をとり得る。グループベースコミュニケーションサーバ106は、そのようなコマンドを受信することに応答して、信号をクライアントデバイス101Aに生成及び送信し得る。図6に関連して上で説明されたように、信号は、サードパーティアプリケーションに対する追加の許可を承認又は拒否するよう(例えば「/invite」コマンドについて)、又はサードパーティアプリケーションからの許可の除去を承認又は拒否するよう(例えば「/kick」コマンドについて)ユーザをプロンプトし得る。
図6に関連しても説明されたように、この実施形態で議論された信号は、それを通してユーザが、サードパーティアプリケーションについてのリクエストされた追加の許可又は許可の除去を承認又は拒否し得る、グループベースコミュニケーションオブジェクト許可インタフェースをクライアントデバイス101Aにレンダリングさせ得る。この意味で、図6に関連して、及び許可の承認又は拒否について、上で提供された全ての教示は、ここで説明される実施形態に関連する。よって、グループベースコミュニケーションサーバ106は、ユーザが追加の許可をサードパーティアプリケーションに付与したことを示す信号を受信することに応答して、サードパーティアプリケーション及び追加された許可の間の追加のマッピング関連付けを含むように、許可テーブル301及びアプリトークンテーブル302を必要に応じて変更し得る。
いくつかの実施形態では、必要に応じてテーブル301及び302を変更した後に、グループベースコミュニケーションサーバ106は、通知信号をサードパーティアプリケーションプロバイダ102Aに追加で送信することによって、受信者に許可がサードパーティアプリケーションに追加されたことを知らせる。同様に、グループベースコミュニケーションサーバ106は、ユーザがサードパーティアプリケーションからの許可の除去を認可したことを示す信号を受信することに応答して、サードパーティアプリケーション及び問題の許可の間のマッピング関連付けを除去するように、許可テーブル301及びアプリトークンテーブル302を必要に応じて変更し得る。その後、グループベースコミュニケーションサーバ106は、通知信号をサードパーティアプリケーションプロバイダに送信することによって、許可がサードパーティアプリケーションから除去されたことを受信者に知らせる。
サードパーティアプリケーションに許可を追加又は除去するためにグループベースコミュニケーションサーバ106が提供する方法は、上で説明された方法には限定されない。例えば、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションチャンネル上で、又はグループベースコミュニケーションチャンネルに関連付けられたプロフィール内でインタラクティブリンクを提供し得る。グループベースコミュニケーションサーバ106は、よってユーザに、そのインタラクティブリンクに関連付けられたグループベースコミュニケーションチャンネルに関してサードパーティアプリケーションについての許可の追加又は除去を許し得る。そのような実施形態では、追加の許可及び許可を除去することをリクエストするために既に提供された説明は、サードパーティアプリケーションから許可を追加又は除去することをユーザに許すように、実現され得る。
プログレッシブ許可
グループベースコミュニケーションサーバ106は、サードパーティアプリケーションが追加の許可をリクエストすることもできるようにする。このように許可を拡張することは、プログレッシブ許可と呼ばれるが、これは、サードパーティアプリケーションが、サードパーティアプリケーションがインストールされているグループに関連付けられた許可テーブル301及びアプリトークンテーブル302に対して、徐々に許可をリクエストし、追加し得るからである。このようにして、サードパーティアプリケーションは、以前はサードパーティアプリケーションに利用不可能だったグループベースコミュニケーションオブジェクトについてアクションをとり得る。代替として、サードパーティアプリケーションは、以前は許可されていたグループベースコミュニケーションオブジェクトについて追加のアクションをとり得る。
図8Aは、サードパーティアプリケーションが、追加の許可を徐々にリクエストする手続きの実施形態を示す。ステップ801において、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションとのユーザインタラクションが起こったことを示す信号をクライアントデバイスから受信する。いくつかの実施形態では、この信号を生成するインタラクションは、サードパーティアプリケーションに関連付けられたインタラクティブボタンに向けられたクライアントデバイス101Aのユーザによって提供された入力−−例えばインタラクティブボタン上でのクリック−−を含み得る。サードパーティアプリケーションは、例えば、App DMグループベースコミュニケーションチャンネル内でそのようなインタラクティブボタンをポストし得る。他の実施形態では、インタラクティブボタンは、複数の可能なディスプレイスクリーンインタラクティブ要素のうちのいずれか1つによって代替され得る。さらに、他の実施形態では、この信号を生成するインタラクションは、サードパーティアプリケーションに関連付けられたスラッシュコマンドの起動を含み得る。スラッシュコマンドの起動は、例えば、App DMグループベースコミュニケーションチャンネル上にコマンドをタイピングするクライアントデバイス101Aのユーザによって発生され得る。
それに応答して、ステップ802において、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションプロバイダに関連付けられたURIに、ステップ801におけるインタラクションに関連付けられたイベントに関連付けられたトリガ識別子を含む信号を送信する。
ステップ803において、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションプロバイダ102Aから、サードパーティアプリケーションプロバイダに関連付けられたサードパーティアプリケーションについての許可をアップグレードしたいというリクエストを含む信号を受信する。いくつかの実施形態では、許可をアップグレードしたいというリクエストを含む信号は、アプリトークン、リクエストされた追加のグループベースコミュニケーションオブジェクト及びアクションのリスト、及び以前に生成されサードパーティアプリケーションプロバイダに送信されたトリガ識別子に関連する情報を含む。
ステップ804において、サードパーティアプリケーションの許可をアップグレードしたいというリクエストを含む信号を受信することに応答して、グループベースコミュニケーションサーバ106は、サードパーティアプリケーションに対する追加の許可を承認又は拒否するようユーザをプロンプトする。このプロンプトは、クライアントデバイスによって受信される時、クライアントデバイスにグループベースコミュニケーションオブジェクト許可インタフェースをレンダリングさせる、グループベースコミュニケーションサーバからの命令の形態であり得る。そのようなグループベースコミュニケーションオブジェクト許可インタフェースの例示的実施形態は、図7A及び図7Bのものであり得る。しかし、他の実施形態では、グループベースコミュニケーションオブジェクト許可インタフェースは、図5Bのものであり得る。図5B、図7A、及び図7Bについての以前の説明は、プロセス800にも等しく適用される。図5Bを参照して、グループベースコミュニケーションサーバ106は、サードパーティアプリケーション「ワークスペースのためのランチトレイン」への承認付与のために、そのユーザがメンバである全てのチャンネル内で「スラッシュコマンドを追加する」及び「アプリとしてメッセージをポストする」に許可をするようクライアントデバイス101Aのユーザをプロンプトする。
この実施形態の追加の変形例では、グループベースコミュニケーションサーバ106は、さまざまなグループベースコミュニケーションアクション及びグループベースコミュニケーションオブジェクトを含む許可を同時に追加することの承認のために、クライアントデバイス101Aのユーザをプロンプトする。図8Bは、複数のリクエストされたグループベースコミュニケーションオブジェクト及びグループベースコミュニケーションアクションの中からユーザが選択することを許すインタフェースの例示的実施形態を示す。図8Bに描かれた実施形態では、クライアントデバイス101Aのユーザは、atlanta-united(グループベースコミュニケーションチャンネル)にアクセスする許可をワークスペースのためのランチトレインのアプリケーションに付与するよう選択しており、ユーザは、ワークスペースのためのランチトレインのアプリケーションがatlanta-unitedにおいてメッセージをリード及びライトすることを許すよう選択している。
ステップ805において、グループベースコミュニケーションサーバ106は、ユーザが追加の許可についてのリクエストを承認したか、又はそのようなリクエストを拒否したかを示すデータをクライアントデバイス101Aから受信する。もしユーザがそのリクエストを承認したなら、グループベースコミュニケーションサーバ106は、承認付与を受信し、これは、サーバがステップ806に入るようさせる。
ステップ806において、承認付与を含む信号をクライアントデバイス101Aのユーザから受信することに応答して、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションリポジトリ107にアクセスすることによって、必要に応じて、サードパーティアプリケーションプロバイダから受信されたアプリトークンに関連付けられたアプリユーザアカウントに関連付けられた許可テーブル301及びアプリトークンテーブル302を変更する。グループベースコミュニケーションサーバ106は、許可リクエストに含まれるグループベースコミュニケーションアクションが、サードパーティアプリケーションのグループベースコミュニケーションアクションの許可されたセットに含まれるように、必要に応じて、許可テーブル301及びアプリトークンテーブル302(いくつかの実施形態ではオブジェクト例外テーブル303)を変更する。
例示的実施形態として、図5Bを参照すると、グループベースコミュニケーションサーバ106は、ユーザが「承認」ボタンアクチュエータ505を選択した結果として、ユーザから承認確認メッセージを受信し得る。その応答として、グループベースコミュニケーションサーバ106は、グループベースコミュニケーションスコープ記述子313によって特定された許可されたグループベースコミュニケーションスコープ内に「スラッシュコマンドを追加する」及び「アプリとしてメッセージをポストする」を含むように、よってワークスペースのためのランチトレインのアプリケーションに関連付けられたアプリトークンテーブル302を変更する。
ステップ807において、グループベースコミュニケーションサーバ106は、信号をサードパーティアプリケーションプロバイダに送信することによって、サードパーティアプリケーションに関連付けられた許可への変更を確認する。ステップ807のある具体的な実施形態では、信号action_grantedは、新しいグループベースコミュニケーションアクションが承認されたことをサードパーティアプリケーションプロバイダに通知し、以下のデータを含み得る。
{
"token": "verification_token",
"team_id": "T061EG9R6",
"api_app_id": "A0BLA3EP2",
"event": {
"type": "permission_granted",
"permissions": [
"channel:write"
],
"trigger_id": variable_holding_trigger_id
},
"type": "event_callback",
"authed_teams": [],
"event_id": "Ev0BQ5FTL0",
"event_time": 1497911545
}
ステップ808において、グループベースコミュニケーションサーバ106は、ステップ807で発行された確認に関連付けられた許可への変更の記述子を求めるリクエストをサードパーティアプリケーションプロバイダ102Aから受信する。ステップ809において、その応答として、グループベースコミュニケーションサーバ106は、新しい許可に関与するグループベースコミュニケーションオブジェクト及びアクションについての詳細を含むデータをサードパーティアプリケーションプロバイダ102Aへ送信し得る。サードパーティアプリケーションは、アクションを実行し、それ自身のデータを操作し、将来の参照のための新しい許可のレコードを記憶する等のために、信号をそれから利用し得る。具体的な例示的実施形態では、第2の送信された信号は、以下の例示的データを含み得る。
{
"token": "verification_token",
"team_id": "T061EG9R6",
"api_app_id": "A0BLA3EP2",
"event": {
"type": "resources_added",
"resources": [
{
"resource": {
"type": "im",
"grant": {
"type": "specific",
"resource_id": "D0BH95DLH"
}
},
"permissions": [
"chat:write",
"im:read",
"im:history",
"commands"
]
}
]
},
"type": "event_callback",
"authed_teams": [],
"event_id": "Ev0BLTJ7JM",
"event_time": 1497911545
}
一方で、もしステップ805においてグループベースコミュニケーションサーバ106がクライアントデバイス101Aのユーザが追加の許可を求めるリクエストを承認しなかったことを示す拒否メッセージを受信するなら、その場合は、グループベースコミュニケーションサーバ106は、手続きを中止し、サードパーティアプリケーションプロバイダに拒否の通知を含む信号を送信する。
グループベースコミュニケーションシステム105は、許可APIを介してそのようなプログレッシブ許可を可能にする。許可APIは、アプリユーザアカウントに、したがってそれに関連付けられたサードパーティアプリケーションに、時間の経過に伴う許可の変化について知らせるメソッド及びイベントタイプのコレクションであり、それと共に、追加の許可をリクエストするためにアプリユーザアカウントにAPIコールを発行する能力を与える。例えば、異なるパラメータ(アプリトークン、追加のグループベースコミュニケーションオブジェクト及びアクションのリスト、及びトリガ識別子についての情報)を含み得る、許可をアップグレードするためのリクエストを含む信号について上で803において説明されたステップは、グループベースコミュニケーションサーバ106に送られるAPIコールを介して実現され得る。
このセクションで説明されたプログレッシブ許可は、APIコールを介してサードパーティアプリケーションによってリクエストされるが、前のセクションで説明された許可を追加ことの方法に類似する。しかし、これら2つの特徴は、基本的に異なる。例えば、グループベースコミュニケーションチャンネルをサードパーティアプリケーションに関連付けられた許可に追加することは、サードパーティアプリケーションに関連付けられたApp DM、及び対応するApp DMオブジェクトを介してなされ得る。その場合は、サードパーティアプリケーションからグループベースコミュニケーションサーバ106へのAPIコールは必要ではない。代わりに、グループベースコミュニケーションサーバ106は、ある種の入力をユーザから直接に受信したことに応答して、グループベースコミュニケーションオブジェクト許可インタフェースをレンダリングするのに必要なプロンプト及び信号を生成する。一方で、許可APIは、サードパーティアプリケーションが、グループベースコミュニケーションサーバ106に信号を送信することによって、追加の許可をリクエストできるようにする。いくつかの実施形態では、サードパーティアプリケーションは、サードパーティアプリケーションとのユーザインタラクションに応答してのみ、これらプログレッシブ許可をリクエストし得る。
グループベースコミュニケーションシステム105のさまざまな実現例は、図10−図17に開示されている。図10は、グループベースコミュニケーションシステム105においてグループベースコミュニケーションオブジェクトに許可を選択的に承認する例示的プロセス1000を示す。この方法は、アプリユーザアカウント識別子及びサードパーティアプリケーション識別子を含むアプリユーザアカウントを生成することから始まり、ここでアプリユーザアカウントは、グループ識別子1001に関連付けられている。この方法は、続いて、グループ識別子に基づいて、複数のグループベースコミュニケーションオブジェクト1002を備える候補グループベースコミュニケーションオブジェクトセットを生成する。この方法は、続いて、許可されたグループベースコミュニケーションオブジェクトセット1003を生成するために、ユーザがグループ識別子に関連付けられたサードパーティアプリケーションについての許可を承認できるように構成された許可インタフェースを生成する。この方法は、続いて、アプリユーザアカウントに関連付けられた許可テーブルを生成し、この許可テーブルは、サードパーティアプリケーション識別子及びグループ識別子1004を含む。この方法は、続いて、サードパーティアプリケーション識別子及びグループ識別子1005を含むアプリトークンを生成する。最後に、この方法は、アプリトークンをサードパーティアプリケーションプロバイダ1006に送信することで終了する。
プロセス1000の他の実施形態では、プロセスステップ1001−1006に加えて、候補グループベースコミュニケーションオブジェクトセットは、グループベースコミュニケーションチャンネル、プライベートマルチパーティダイレクトメッセージ、パブリックグループベースコミュニケーションチャンネル、プライベートダイレクトメッセージ、ファイル、及びユーザアカウントを含む。この具体的な実施形態のさらなる変化形では、許可インタフェースは、候補グループベースコミュニケーションオブジェクトセットの1つ以上のグループベースコミュニケーションオブジェクトのユーザ選択を可能にすることによって、許可されたグループベースコミュニケーションオブジェクトセットを生成するよう構成され、許可されたグループベースコミュニケーションオブジェクトセットは、候補グループベースコミュニケーションオブジェクトセットのサブセットを含む。
プロセス1000の他の実施形態では、プロセスステップ1001−1006に加えて、アプリユーザアカウントは、ユーザ識別子にさらに関連付けられ、候補グループベースコミュニケーションオブジェクトセットは、グループ識別子及びユーザ識別子に基づいて生成される。
プロセス1000の他の変形例では、許可インタフェースは、候補グループベースコミュニケーションオブジェクトセットの1つ以上のグループベースコミュニケーションオブジェクトのユーザ選択を可能にすることによって、許可されたグループベースコミュニケーションオブジェクトセットを生成するよう構成されたグループベースコミュニケーションオブジェクト許可インタフェースである。
プロセス1000の他の変形例では、許可インタフェースは、候補グループベースコミュニケーションアクションセットの1つ以上のグループベースコミュニケーションアクションのユーザ選択を可能にすることによって、許可されたグループベースコミュニケーションアクションセットを生成するよう構成されたグループベースコミュニケーションオブジェクト許可インタフェースである。
プロセス1000の他の変形例では、許可インタフェースは、候補グループベースコミュニケーションオブジェクトセットの1つ以上のグループベースコミュニケーションオブジェクト及び候補グループベースコミュニケーションアクションセットの1つ以上のグループベースコミュニケーションアクションのユーザ選択を可能にすることによって、許可されたグループベースコミュニケーションオブジェクトセット及び許可されたグループベースコミュニケーションアクションセットを生成するよう構成されたグループベースコミュニケーションオブジェクト許可インタフェースである。
プロセス1000の他の変形例では、許可インタフェースは、(a)許可されたグループベースコミュニケーションオブジェクトセットに含まれるグループベースコミュニケーションオブジェクト又は(b)許可されたグループベースコミュニケーションアクションセットに含まれるグループベースコミュニケーションアクションのうちの少なくとも1つに関連する許可の変更をユーザが承認できるように構成された許可アップデートインタフェースである。
図11は、プロセス1100を示し、これは、プロセス1000の変形例である。プロセス1100において、ステップ1101−1106は、ステップ1001−1006の変更されたバージョンを含まれる。この差異がここで説明される。許可インタフェースは、1103において、許可されたグループベースコミュニケーションオブジェクトセット内のグループベースコミュニケーションオブジェクトのそれぞれについての許可アクションのユーザ選択を可能にすることによって、許可されたグループベースコミュニケーションアクションセットを生成するよう構成される。さらに、この実施形態では、1104において、許可テーブルは、許可されたグループベースコミュニケーションオブジェクトセット及び許可されたグループベースコミュニケーションアクションセットの間でのマッピング関連付けを少なくとも部分的には実現する、マッピングデータをさらに含む。最後に、この実施形態では、1003において、許可されたグループベースコミュニケーションオブジェクトセット及び許可されたグループベースコミュニケーションアクションセットは、アプリユーザアカウント識別子に関連付けられる。ステップ1101−1106の残りの部分は、既に説明されたステップ1001−1006と類似である。
プロセス1100の他の変形例では、候補グループベースコミュニケーションオブジェクトセットは、そのユーザ識別子に関連付けられたユーザにアクセス可能である複数のグループベースコミュニケーションチャンネルである。さらに、許可されたグループベースコミュニケーションオブジェクトセットは、許可されたグループベースコミュニケーションチャンネルセットである。
図12は、プロセス1200を示し、これは、プロセス1100の変形例である。ここでは、1201において、ステップ1101−1106に加えて、プロセスは、続いて、アプリユーザアカウント識別子1201に関連付けられた許可アップデートリクエストを受信する。このプロセスは、それから続いて、許可されたグループベースコミュニケーションオブジェクトセット及び許可されたグループベースコミュニケーションアクションセット1202のユーザ変更を可能にするよう構成された許可アップデートインタフェースを生成する。最後に、プロセスは、許可されたグループベースコミュニケーションオブジェクトセット及び許可されたグループベースコミュニケーションアクションセット1203のユーザ変更に基づいて、グループベースコミュニケーションリポジトリ107をアップデートすることで終了する。
プロセス1200の他の実施形態では、これは、そのプロセスの変形例であるが、許可インタフェースは、候補グループベースコミュニケーションオブジェクトセットの1つ以上のグループベースコミュニケーションオブジェクトのユーザ選択を可能にすることによって、許可されたグループベースコミュニケーションオブジェクトセットを生成するよう構成される。さらに、許可されたグループベースコミュニケーションオブジェクトセットは、候補グループベースコミュニケーションオブジェクトセットのサブセットを含む。
図13は、プロセス1300を示し、これは、プロセス1000の変形例である。プロセス1300では、ステップ1301−1306は、ステップ1001−1006の変更されたバージョンを含む。ここでは、ステップ1302において、候補グループベースコミュニケーションオブジェクトセットは、ユーザ識別子に関連付けられたユーザにアクセス可能である複数のグループベースコミュニケーションチャンネルである。ステップ1303について、許可されたグループベースコミュニケーションオブジェクトセットは、許可されたグループベースコミュニケーションチャンネルセットであり、許可インタフェースは、許可されたグループベースチャンネルセットのそれぞれについて許可アクションのユーザ選択を可能にすることによって、許可されたグループベースコミュニケーションアクションセットを生成するよう構成された許可アップデートインタフェースであり、許可されたグループベースコミュニケーションチャンネルセット及び許可されたグループベースコミュニケーションアクションセットは、アプリユーザアカウント識別子に関連付けられている。ステップ1304について、許可テーブルは、許可されたグループベースコミュニケーションオブジェクトセット及び許可されたグループベースコミュニケーションアクションセットの間のマッピング関連付けを少なくとも部分的に実現するマッピングデータをさらに含む。プロセスステップ1301−1306の残りの部分は、プロセス1000について説明したように、対応するステップ1001−1006と同じである。
プロセス1300の他の実施形態及び変形例では、このプロセスは、許可されたグループベースチャンネルセットのそれぞれのグループベースコミュニケーションチャンネルがチャンネルオブジェクトセットに関連付けられ、許可インタフェースは、チャンネルオブジェクトセットについての許可アクションのユーザ選択を可能にするようさらに構成されることを含む。
図14は、プロセス1400を示し、これは、プロセス1000の変形例である。プロセス1000の全てのステップに加えて、プロセス1400は、また続いて、候補グループベースコミュニケーションオブジェクトセット1401を許可テーブルに記憶する。プロセスは、続いて、1402において、(a)許可インタフェースを介したユーザ選択と同時に、選択表示(selection indication)を、候補グループベースコミュニケーションオブジェクトセットの1つ以上のグループベースコミュニケーションオブジェクトのそれぞれに関連付けること、及び(b)許可インタフェースによる許可アクションのユーザ選択と同時に、許可アクションを、選択表示に関連付けられた候補グループベースコミュニケーションオブジェクトセットの1つ以上のグループベースコミュニケーションオブジェクトのそれぞれに関連付けることによって、許可されたグループベースコミュニケーションオブジェクトセットを生成する。プロセスは、続いて、グループベースコミュニケーションリポジトリ内に、許可されたグループベースコミュニケーションオブジェクトセット1403を記憶する。
図15は、プロセス1500を示し、これはプロセス1000の変形例である。プロセス1000の全てのステップに加えて、プロセス1500は、また続いて、サードパーティアプリケーションプロバイダにトリガ識別子1501を送信する。このプロセスは、続いて、アプリユーザアカウント識別子1502に関連付けられた許可アップデートリクエストを受信する。プロセスは、続いて、(a)許可されたグループベースコミュニケーションオブジェクトセット、又は(b)許可されたグループベースコミュニケーションアクションセット1503のうちの少なくとも1つのユーザ変更を可能にするよう構成された許可アップデートインタフェースを生成する。プロセスは、続いて、(a)許可されたグループベースコミュニケーションオブジェクトセット、又は(b)許可されたグループベースコミュニケーションアクションセット1504のうちの少なくとも1つのユーザ変更に基づいて、グループベースコミュニケーションリポジトリをアップデートする。プロセスは、続いて、(a)許可されたグループベースコミュニケーションオブジェクトセット、又は(b)許可されたグループベースコミュニケーションアクションセット1505のうちの少なくとも1つのユーザ変更を確認する確認メッセージをサードパーティアプリケーションプロバイダに送信する。
ある実施形態では、プロセス1500は、(a)ユーザが、グループベースコミュニケーションインタフェースのインタラクティブボタンをクリックしたことを示すクリック信号、又は(b)ユーザが、グループベースコミュニケーションインタフェースを介してスラッシュコマンドを起動したことを示すコマンド信号のうちの少なくとも1つを受信することに応答して、トリガ識別子をサードパーティアプリケーションプロバイダに送信する。
図16は、プロセス1600を示し、これは、プロセス1000の変形例である。プロセス1000の全てのステップに加えて、プロセス1600は、続いて、グループベースコミュニケーションインタフェース内でレンダリングするよう構成されるApp DMを生成し、このApp DMは、複数のタブを含み、少なくとも1つのタブは、App DM1601に関連付けられたサードパーティアプリケーションのための設定タブである。このプロセスは、続いて、App DMの設定タブのユーザ関与(user engagement)に応答して、(a)許可されたグループベースコミュニケーションオブジェクトセット、又は(b)許可されたグループベースコミュニケーションアクションセットのうちの少なくとも1つのユーザ変更を可能にするよう構成される許可インタフェースを生成し、(a)許可されたグループベースコミュニケーションオブジェクトセット、又は(b)許可されたグループベースコミュニケーションアクションセット1602のうちの少なくとも1つのユーザ変更に基づいてグループベースコミュニケーションリポジトリをアップデートする。
ある実施形態では、プロセス1600の変形例であり、このApp DMは、アプリユーザアカウント又はサードパーティアプリケーションプロバイダによってポストされたメッセージングコミュニケーションを表示するよう構成されたApp DMグループベースコミュニケーションチャンネルを含む。
図17は、プロセス1700を示し、これは、プロセス1000の変形例である。プロセス1000の全てのステップに加えて、プロセス1700は、続いて、アプリユーザアカウント識別子に関連付けられたリクエストを受け取り、ここでそのリクエストは、グループベースコミュニケーションオブジェクトを許可テーブル1701に追加する表示を含む。このプロセスは、続いて、許可されたグループベースコミュニケーションオブジェクトセット1702の変更のユーザ承認を可能にするよう構成されたグループベースコミュニケーション許可インタフェースを生成する。プロセスは、続いて、許可されたグループベースコミュニケーションオブジェクトセットの変更のユーザ承認に基づいて許可テーブルをアップデートする。
結論
多くの改変及び他の実施形態には、本開示が関連する技術における当業者なら、前述の記載及び関連する図面において提示された教示を利用し、想到することができよう。したがって、本開示は、開示された特定の実施形態に限定されるべきではなく、改変及び他の実施形態は、添付の特許請求の範囲の範囲内に含まれるよう意図されていると理解されるべきである。ここでは特定の語が採用されているが、それらは一般的な叙述的な意味で用いられているのに過ぎず、限定を目的としたものではない。