本開示の実施形態を実施するように構成されるグループベースコミュニケーションネットワークアーキテクチャのシステムアーキテクチャ図である。
本開示の実施形態により構築される演算エンティティの例示的な概略図である。
本開示の実施形態により構築される演算エンティティの例示的な概略図である。
本開示の実施形態により構築される演算エンティティの例示的な概略図である。
本開示の一実施形態により、グループベースコミュニケーションインターフェイスに関連付けられたユーザー特定クエリを取り出し、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたユーザーステータスキャッシュと比較して対象ユーザー識別子の既知ステータス、未知ステータス、又は保留ステータスのうちの1つを判定する例示的な動作を示す流れ図である。
本開示の一実施形態により、グループベースコミュニケーションインターフェイスに関連付けられたユーザー特定クエリを取り出し、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたユーザーステータスキャッシュと比較して対象ユーザー識別子の既知ユーザーステータスを判定する際のクライアントデバイス、グループベースキャッシュサービス、及びユーザーステータスキャッシュの間のデータフローインタラクションを示す例示的な信号図である。
本開示の一実施形態により、グループベースコミュニケーションインターフェイスに関連付けられたユーザー特定クエリを取り出し、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたユーザーステータスキャッシュと比較して対象ユーザー識別子の未知ユーザーステータスを判定する際のクライアントデバイス、グループベースキャッシュサービス、及びユーザーステータスキャッシュの間のデータフローインタラクションを示す例示的な信号図である。
本開示の一実施形態により、グループベースコミュニケーションインターフェイスに関連付けられたユーザー特定クエリを取り出し、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたユーザーステータスキャッシュと比較して対象ユーザー識別子の保留ユーザーステータスを判定する際のクライアントデバイス、グループベースキャッシュサービス、及びユーザーステータスキャッシュの間のデータフローインタラクションを示す例示的な信号図である。
本開示の一実施形態により、対象ユーザー識別子の既知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングさせる例示的な動作を示す流れ図である。
本開示の一実施形態により、対象ユーザー識別子の既知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングさせる際のグループベースキャッシュサービスのデータフロー動作を示す例示的な信号図である。
本開示の一実施形態により、対象ユーザー識別子の未知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングさせる例示的な動作を示す流れ図である。
本開示の一実施形態により、対象ユーザー識別子の未知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングさせる際のグループベースキャッシュサービスのデータフロー動作を示す例示的な信号図である。
本開示の一実施形態により構築される例示的な外部共有コミュニケーションチャネルを図示する例示的なグループベースコミュニケーションインターフェイスである。
本開示の一実施形態により構築される例示的な既知ユーザー特定インターフェイスを図示する例示的なグループベースコミュニケーションインターフェイスである。
本開示の一実施形態により構築される代替的な既知ユーザー特定インターフェイスを図示する例示的なグループベースコミュニケーションインターフェイスである。
本開示の一実施形態により構築される例示的な制限付きユーザー特定インターフェイスを図示する例示的なグループベースコミュニケーションインターフェイスである。
本開示の一実施形態により、対象ユーザー識別子の保留ステータスの判定に応答して、クライアントデバイス停止命令を送信させる例示的な動作を示す流れ図である。
本開示の一実施形態により、対象ユーザー識別子の保留ステータスの判定に応答して、クライアントデバイス停止命令を送信させる際のクライアントデバイスとグループベースキャッシュサービスとの間のデータフローインタラクションを示す例示的な信号図である。
本開示の一実施形態により、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較させ、解決済み既知ステータス又は解決済み未知ステータスを判定する例示的な動作を示す流れ図である。
本開示の一実施形態により、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較させ、解決済み既知ステータスを判定する際のグループベースキャッシュサービスとグループ接続アレイとの間のデータフローインタラクションを示す例示的な信号図である。
本開示の一実施形態により、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較させ、解決済み未知ステータスを判定する際のグループベースキャッシュサービスとグループ接続アレイとの間のデータフローインタラクションを示す例示的な信号図である。
本開示の一実施形態により、対象ユーザー識別子の解決済み既知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングさせる例示的な動作を示す流れ図である。
本開示の一実施形態により、グループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングさせる際のグループベースキャッシュサービスのデータフロー動作を示す例示的な信号図である。
本開示の一実施形態により、対象ユーザー識別子の解決済み未知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングさせる例示的な動作を示す流れ図である。
本開示の一実施形態により、対象ユーザー識別子の解決済み未知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングさせる際のグループベースキャッシュサービスのデータフロー動作を示す例示的な信号図である。
本開示の一実施形態により、グループベースコミュニケーションインターフェイスに制限付きユーザー特定オブジェクトをレンダリングするために制限付きユーザー特定オブジェクトを取り出させ、クライアントデバイスへ制限付きユーザー特定オブジェクトを送信する例示的な動作を示す流れ図である。
本開示の一実施形態により、グループベースコミュニケーションインターフェイスに制限付きユーザー特定オブジェクトをレンダリングするために制限付きユーザー特定オブジェクトを取り出させ、クライアントデバイスへ制限付きユーザー特定オブジェクトを送信する際のクライアントデバイス、グループベースキャッシュサービス、及びグループベースコミュニケーションリポジトリのデータフロー動作を示す例示的な信号図である。
本開示の好ましい実施形態により、クライアントデバイスへクライアントデバイス停止命令を送信させ、グループベースコミュニケーションインターフェイスに関連付けられた第2のユーザー特定クエリを受信し、第2の要求ユーザー識別子に関連付けられた第2のクライアントデバイスへ第2のクライアントデバイス停止命令を送信させ、かつ対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較させ、対象ユーザー識別子の解決済み既知ステータス又は解決済み未知ステータスを判定する例示的な動作を示す流れ図である。
本開示の好ましい実施形態により、クライアントデバイスへクライアントデバイス停止命令を送信させ、グループベースコミュニケーションインターフェイスに関連付けられた第2のユーザー特定クエリを受信し、第2の要求ユーザー識別子に関連付けられた第2のクライアントデバイスへ第2のクライアントデバイス停止命令を送信させ、かつ対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較させ、対象ユーザー識別子の解決済み既知ステータスを判定する際のクライアントデバイス、第2のクライアントデバイス、グループベースキャッシュサービス、及びグループ接続アレイの間のデータフロー動作を示す例示的な信号図である。
本開示の好ましい実施形態により、クライアントデバイスへクライアントデバイス停止命令を送信させ、グループベースコミュニケーションインターフェイスに関連付けられた第2のユーザー特定クエリを受信し、第2の要求ユーザー識別子に関連付けられた第2のクライアントデバイスへ第2のクライアントデバイス停止命令を送信させ、かつ対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較させ、対象ユーザー識別子の解決済み未知ステータスを判定する際のクライアントデバイス、第2のクライアントデバイス、グループベースキャッシュサービス、及びグループ接続アレイの間のデータフロー動作を示す例示的な信号図である。
本開示の好ましい実施形態により、制限付きユーザー特定オブジェクトを取り出させ、かつクライアントデバイス及び第2のクライアントデバイスへ制限付きユーザー特定オブジェクトを送信してレンダリングする例示的な動作を示す流れ図である。
本開示の好ましい実施形態により、制限付きユーザー特定オブジェクトを取り出させ、かつクライアントデバイス及び第2のクライアントデバイスへ制限付きユーザー特定オブジェクトを送信してレンダリングする際のクライアントデバイス、第2のクライアントデバイス、グループベースキャッシュサービス、及びグループベースコミュニケーションリポジトリの間のデータフロー動作を示す例示的な信号図である。
詳細な説明
添付の図面を参照して本開示はさまざまな実施形態をより詳細に説明する。本明細書ではすべてではない幾つかの実施形態を示しかつ説明していることを理解されたい。実際に、本実施形態は多くの異なる形態を取ることができ、したがって本明細書に記載する実施形態に本開示が限定されるものと解釈されるべきではない。むしろ、これらの実施形態は、本開示が適用される法的要件を満たすように提供されるものである。全体を通して、同じ符号は同じ要素を示す。
概説
グループベースコミュニケーションシステムでは、ユーザーはさまざまなプロジェクト、目標、トピック等について互いに通信し、かつ協力することができる。このような通信及び協力は多くの場合、グループベースコミュニケーションチャネルに投稿されるグループベースコミュニケーションメッセージにより行われる。一群のグループベースコミュニケーションチャネルは、グループベースコミュニケーションワークスペースを形成してよい。例えば、一連のマーケティングに注力したグループベースコミュニケーションチャネルは、特定の組織(例えば、Slack Corporation)のマーケティンググループベースコミュニケーションワークスペースを形成してよい。グループベースコミュニケーションシステムは、特定の組織又は組織グループの幾つかのグループベースコミュニケーションワークスペース(例えば、販売グループベースコミュニケーションワークスペース、技術グループベースコミュニケーションワークスペース等)を支援するように構成され、各ワークスペースは、複数のグループベースコミュニケーションチャネル(例えば、販売グループベースコミュニケーションワークスペースの販売チャネル、技術グループベースコミュニケーションワークスペースの技術チャネル等)を有してもよい。
本明細書で考察するさまざまな実施形態では、協力及び通信は、異なる組織及び/又は異なるグループベースコミュニケーションワークスペースのメンバ間のグループベースコミュニケーションチャネル又は直接のメッセージで行われてよい。例えば、Slack Corporationは、給与問題に注力するグループベースコミュニケーションチャネル(例えば、#HR-payroll-issues)を人材グループベースコミュニケーションワークスペースに作成して給与サービス供給業者であるACME Corporationのユーザーを招待して参加させうる。その後、Slack及びACMEの認定ユーザーは、#HR-payroll-issuesグループベースコミュニケーションチャネル内でグループベースコミュニケーションメッセージを投稿し、さまざまな給与問題の特定及び解決について協力し、かつ通信しうる。少なくとも2つの異なる組織の認定メンバユーザーを有する#HR-payroll-issues等のグループベースコミュニケーションチャネルは、本明細書では「外部共有チャネル」と称する。
外部共有チャネル及び関連グループベースコミュニケーションワークスペースに関連付けられたユーザー特定情報を介してプライバシプロトコルを保持することが望ましい。グループベースコミュニケーションワークスペースとインタラクトする複数のユーザー間の関係ステータスは、特定のプライバシプロトコルの決定パラメータとなる場合がある。例えば、グループベースコミュニケーションシステムは、操作ユーザーの立場でグラフィックユーザー特定インターフェイスを表示し、他のユーザーのシステムステータス(例えば、既知又は未知)は、グループベースコミュニケーションインターフェイス内に示され、このような他のユーザーに関するプライベート情報、秘密情報、又は内部情報が操作ユーザーに対して表示されているかを判定するように構成される。
一例では、Slack Corporationの従業員が他のSlack従業員の電子メール、勤務地、及び時差帯の情報に容易にアクセスすることが望ましい場合がある。したがって、グループベースコミュニケーションインターフェイスは、Slack従業員のプロファイルがグループベースコミュニケーションインターフェイス内で(例えば、クリック、マウスオーバ等により)選択された場合にこのような情報を容易に表示するように構成される。しかし、プライバシプロトコルでは、特定のACME CorporationユーザーがSlackユーザーにより言及され、又は別途#HR-payroll-issuesグループベースコミュニケーションチャネルを介してSlackユーザーと関与する場合があっても、このようなユーザーの当該秘密情報へのアクセスを禁止するよう指示される場合がある。
さまざまな実施形態により構築されるグループベースコミュニケーションシステムは、「既知ユーザー特定インターフェイス」と称され、認定ユーザー(例えば、上記の例では#HR-payroll-issuesグループベースコミュニケーションチャネル内で通信するために認定された他のSlack従業員及びACME Corporation従業員)を表すグラフィックユーザー特定インターフェイスを、グループベースコミュニケーションインターフェイスにレンダリングしつつ、「制限付きユーザー特定インターフェイス」と称され、非認定ユーザー(例えば、未知のACME Corporation従業員)を表すグラフィックユーザー特定インターフェイスをグループベースコミュニケーションインターフェイスにレンダリングすることにより、この必要性に対応する。
各グループベースコミュニケーションインターフェイスは、操作ユーザーの立場で構成され、かつレンダリングされる。操作ユーザーは本明細書では要求ユーザーと称され、かつ対象ユーザー(例えば、#HR-payroll-issuesグループベースコミュニケーションチャネル内の@-mentionユーザー)がグループベースコミュニケーションインターフェイス内で既知ユーザー特定インターフェイス又は制限付きユーザー特定インターフェイスにより表されるべきか否かを解決する必要がある場合に、要求ユーザー識別子及び対象ユーザー識別子を含むユーザー特定クエリがクライアントデバイスにより発行される。グループベースコミュニケーションシステムは、対象ユーザーが要求ユーザー(すなわち、操作ユーザー)に対して認定されているかを判定し、かつ適切なプライバシプロトコルに準拠してグループベースコミュニケーションインターフェイスをレンダリングするためにクライアントデバイスに適切な命令を提供する。
グループベースコミュニケーションワークスペースの大きさ及び複雑さが増大するので、すべての操作ユーザーに対して対象ユーザーステータスを迅速に判定すると、システムリソースの枯渇及びシステム停止のリスクが生じる。大量のユーザー特定クエリを解決すると、グループベースコミュニケーションサーバを消耗させる可能性がある。例えば、Slack Corporationは20000人以上のユーザーを有しうる。これらのユーザーのうち10000人は、外部共有チャネル(すなわち、#HR-payroll-issuesグループベースコミュニケーションチャネル)に属しうる。この外部共有チャネルのユーザー1は、ACME Corporationの従業員ではあるが、外部共有チャネルの認定メンバではない@-mentionユーザー2でありうる。ユーザー2の適切なグラフィックユーザー特定インターフェイスをレンダリングするために、グループベースコミュニケーションシステムは、#HR-payroll-issuesグループベースコミュニケーションチャネルに属する10000人のユーザーのそれぞれに対してユーザー2のシステムステータスを判定しなければならない。これは演算集約的であり、悪意を有する当事者による分散型サービス妨害(distributed denial of service、DDOS)攻撃を受けやすいという点でセキュリティの脆弱性を意味することから、望ましくない。したがって、本明細書で考察するさまざまな実施形態は、以下に詳細に考察する特殊構成グループベースキャッシュサービス及び関連するシステムアーキテクチャにより大量のユーザー特定クエリを仲介し、かつ解決する。
定義
例示的な実施形態に関連して用いる特定の用語を以下に定義する。
本明細書では、「グループベース」なる用語は、システム、チャネル、通信、メッセージ、又は仮想環境に規定グループのユーザー(例えば、それぞれのユーザープロファイルに関連付けられた共通のグループ識別子を有するユーザー)のみがアクセス可能となるとなるように十分なセキュリティを有するシステム、チャネル、通信、メッセージ、又は仮想環境を指すために用いられる。幾つかの実施形態では、グループは共通のアクセスクレデンシャル、例えば組織又は営利企業のアクセスクレデンシャルにより規定される。さらなる実施形態では、アクセスは、一方のグループメンバユーザーにより他方の非メンバユーザーへ送信される参加の認定要求又は参加の招待によりさらに容易にされる。グループ識別子(以下に定義)は、データ、情報、メッセージ、ユーザー、グループベースコミュニケーションチャネル等を、以下に定義する特定グループのグループベースコミュニケーションシステムに関連付けるために用いられる。
「グループベースコミュニケーションシステム」なる用語は、クライアントデバイスがグループベース環境で通信及びインタラクトするものを含む、通信ソフトウェアプラットフォーム、並びに複数のグループベースコミュニケーションワークスペース及びすべての関連機能を支援し、かつ保持するように構成される関連ハードウェアを指す。グループベースコミュニケーションシステムユーザーは、組織グループに編成され(例えば、特定の実施形態では、異なる会社の従業員は別個の組織グループである)、かつ各組織グループは少なくとも1つのグループベースコミュニケーションワークスペースを介してシステムとインタラクトする。例えば、グループベースコミュニケーションシステムは、とりわけ、Slack Corporationに関連付けられた複数のワークスペース及びACME Corporationに関連付けられた複数のワークスペースを支援してよい。例示的なグループベースコミュニケーションシステムは、支援サーバ(例えば、グループベースコミュニケーションサーバ)、データベース(例えば、グループベースコミュニケーションリポジトリ、グループ接続アレイ)、サービス(例えば、グループベースキャッシュサービス)、及びクライアントデバイスを備え、外部リソース及び外部アプリケーションと関与するようにさらに構成される。
グループベースコミュニケーションシステムユーザーは、組織グループに編成され(例えば、特定の実施形態では、各会社の従業員は別個の会社グループである)、かつそれぞれの組織グループ又はサブグループは、1つ以上のグループベースコミュニケーションワークスペース及び/又はグループベースコミュニケーションチャネルを有し、これらにユーザーが割り当てられ、又はユーザーが参加する(例えば、グループベースコミュニケーションチャネルは、部署、事務所等の地理的位置、製品ライン、ユーザーの関心、トピック、問題等を表すことができる)。幾つかの実施形態では、グループ識別子は、メッセージのアクセス制御を容易にするために用いられる(例えば、検索クエリに応答して検索結果の一部としてメッセージを返す等、メッセージへのアクセスがユーザープロファイルに関連付けられたグループ識別子を有するユーザーに限定される)。幾つかの実施形態では、グループ識別子はメッセージのコンテキストを判定するために用いられる(例えば、特定の実施形態では、グループの名前及び/又はグループの簡単な記載等、グループの記載がグループ識別子に関連付けられる)。
ユーザーは、クライアントデバイスを介してグループベースコミュニケーションシステムにアクセスし、認証ユーザーアカウントに関連付けられたグループベースコミュニケーションワークスペース及び/又はグループベースコミュニケーションチャネルにリンクするさまざまな情報及び/又はデータを含む1つ以上のグループベースコミュニケーションインターフェイスへのアクセスを可能にしてよい。各ユーザーアカウントは、1つ以上のグループベースコミュニケーションワークスペース及び/又は関連付けられたグループベースコミュニケーションチャネルにアクセスするように設定されてよい。グループベースコミュニケーションシステムユーザーは、グループベースコミュニケーションチャネルに参加し、かつ/又はグループベースコミュニケーションチャネルを作成してよい。幾つかのグループベースコミュニケーションチャネルには、ユーザープロファイルに関連付けられた特定の組織識別子を有するユーザー(すなわち、当該組織のメンバであるユーザー)が広域でアクセス可能であってよい。幾つかのグループベースコミュニケーションチャネルへのアクセスは、特定ワークスペースのメンバに制限され、グループベースコミュニケーションチャネルには、ユーザープロファイルに関連付けられた特定のグループ識別子を有するユーザーがアクセス可能である。
幾つかの実施形態では、グループベースコミュニケーションチャネル識別子は、メッセージのアクセス制御を容易にするために用いられる(例えば、検索クエリに応答して検索結果の一部としてメッセージを返す等、メッセージへのアクセスは、ユーザープロファイルに関連付けられたグループベースコミュニケーションチャネル識別子を有するか又はグループベースコミュニケーションチャネルに参加する能力を有するユーザーに限定される)。特定の実施形態では、グループベースコミュニケーションチャネル識別子は、メッセージのコンテキストを判定するために用いられる(例えば、グループベースコミュニケーションチャネルで考察するプロジェクトの記載等、グループベースコミュニケーションチャネルの記載が、グループベースコミュニケーションチャネル識別子に関連付けられる)。
「グループベースコミュニケーションプラットフォーム」なる用語は、1つ以上のクライアントデバイスがアクセス可能であり、かつデータベースの運用に関する複数のソフトウェアアプリケーションへのアクセスを提供するように運用可能な一群の演算サービスとしてグループベースコミュニケーションシステムを支援する目的で具現化された演算プラットフォームを指す。幾つかの例では、グループベースコミュニケーションプラットフォームは、ソフトウェアアプリケーションを起動し、かつデジタルコンテンツアイテム、アプリケーション関連データ等を格納する1つ以上のデータベースへのアクセスを有する1つ以上の追加のサーバと通信するように配置された1つ以上のセントラルサーバの形態を取る。
「グループベースコミュニケーションサーバ」なる用語は、ソフトウェアプラットフォーム、及びグループベースコミュニケーションシステムのさまざまなグループベースコミュニケーションインターフェイスへのアクセスを管理するように構成される関連ハードウェアを指す。グループベースコミュニケーションサーバは、グループベースコミュニケーションシステムのアプリケーション製品のロジックにアクセスし、当該ロジックを保持して支援し、かつグループベースコミュニケーションリポジトリ等の1つ以上のデータリポジトリ及びグループ接続アレイにアクセスするように構成される。グループベースコミュニケーションサーバは、コミュニケーションチャネル内で頒布するメッセージを受信し、かつ/又は発信するさまざまなクライアントデバイスとインタラクトするように構成される。グループベースコミュニケーションサーバは、(クライアントデバイスを操作する)複数のユーザー間で交換されたメッセージを受信し、(関連データベースに)格納し、かつ/又は管理するように構成されてよい。
グループベースコミュニケーションサーバの機能は、一般的な機能を有する単一のサーバ又は一群のサーバを介して提供されてよく、又はグループベースコミュニケーションサーバの機能は、グループベースコミュニケーションサーバの説明される機能の下位集合を実行する複数のサーバ又は一群のサーバの間で分割されてよい。例えば、第1の下位集合のグループベースコミュニケーションサーバは、(例えば、1つ以上のインターフェイスサーバを介して)クライアントデバイスからメッセージを受信し、かつ/又はクライアントデバイスへメッセージを送信するように構成されてよい。これらのグループベースコミュニケーションサーバは、コミュニケーションチャネル内で頒布されたメッセージを収集し、かつこれらのメッセージをメッセージリポジトリデータベース内に格納してインデクス化及びアーカイブを行うように構成される第2の下位集合のグループベースコミュニケーションサーバと通信してよい。
「グループベースコミュニケーションインターフェイス」なる用語は、ユーザー(例えば、グループメンバ)がグループベースコミュニケーションワークスペースを閲覧して関与することを可能にするように構成されたグループベースコミュニケーションシステムのグラフィックユーザーインターフェイスを指す。グループベースコミュニケーションインターフェイスは、グループベースコミュニケーションシステムにより提供されるデータ及び命令に基づいてクライアントデバイスにレンダリングされる。幾つかの実施形態では、このようなデータ及び命令は、クライアントデバイス(例えば、携帯電話)で起動される専用ソフトウェアアプリケーションにより容易にされる。他の実施形態では、このようなデータ及び命令は、クライアントデバイス(例えば、ラップトップデバイス又はデスクトップデバイス)で起動されるウェブブラウザにより提供される。
「グループベースコミュニケーションワークスペース」なる用語は、グループベースコミュニケーションシステムとのユーザーインタラクションを容易にするように構成される仮想通信環境を指す。仮想通信環境は、全体としてグループベースコミュニケーションシステムの他のメンバがアクセス可能及び/又は検索可能にならないようにアクセスが制限されている。各グループベースコミュニケーションワークスペースには、事業体又は組織の従業員等、選択されたユーザーグループがアクセス可能かつ閲覧可能である(例えば、Slack Corp.のワークスペースにSlack従業員はアクセス可能かつ閲覧可能であろうが、ACME CorporationのグループベースコミュニケーションワークスペースにはSlack従業員はアクセス可能かつ閲覧可能ではないであろう)。特定の実施形態では、グループベースコミュニケーションワークスペースは、本明細書で定義される複数のグループベースコミュニケーションチャネル(例えば、マーケティングチャネル、販売チャネル、会計チャネル等)へのアクセスを含み、かつ提供する。
「グループベースコミュニケーションアプリケーション」又は「グループベースコミュニケーションアプリ」なる用語は、グループベースコミュニケーションシステムへのアクセスをユーザーに提供するクライアントデバイスで起動されるようにプログラミングされ、又は構成される専用ソフトウェアプログラム、アプリケーション、プラットフォーム、サービス、ウェブブラウザ、又はコンピュータシステム実行可能アプリケーションソフトウェアを指す。典型的には、このようなグループベースコミュニケーションアプリケーションは、タブレット又はスマートフォン等の携帯デバイスで実行されるように設計される。例えば特定の実施形態では、iOS(登録商標)、Android(登録商用)、又はWindows(登録商標)等の携帯デバイスのオペレーティングシステムで実行されるアプリが提供される。典型的には、これらのプラットフォームは、複数のアプリが互いに、並びに携帯デバイスの特定のハードウェアコンポーネント及びソフトウェアコンポーネントと通信することを可能にする枠組みを提供する。例えば、上記の携帯オペレーティングシステムはそれぞれ、位置情報サービス回路、有線・無線ネットワークインターフェイス、ユーザー連絡先、及び他のアプリケーションとインタラクトする枠組みを提供する。典型的には、アプリの外部で実行されるハードウェアモジュール及びソフトウェアモジュールとの通信は、携帯デバイスのオペレーティングシステム、グループベースコミュニケーションシステム、及び1つ以上の外部リソースにより提供されるアプリケーションプログラミングインターフェイス(API)を介して提供される。
「グループベースコミュニケーションメッセージ」、「メッセージングコミュニケーション」、及び「メッセージ」なる用語は、ユーザーにより提供され、規定グループのユーザーのみがアクセス可能になるように十分なセキュリティを有し、かつグループベースコミュニケーションチャネル内に表示されるように構成される任意の電子生成デジタルコンテンツオブジェクトを指す。メッセージングコミュニケーションは、(クライアントデバイスを用いる)ユーザーにより提供される任意のテキスト、画像、動画、オーディオ、又はこれらの任意の組み合わせを含んでよい。例えば、ユーザーはメッセージコンテンツとしてメッセージングコミュニケーションにテキスト、並びに画像及び動画を含むメッセージングコミュニケーションを提供してよい。このような場合、テキスト、画像、及び動画は、メッセージングコミュニケーション又はデジタルコンテンツオブジェクトを含むであろう。グループベースコミュニケーションシステムのグループベースコミュニケーションチャネルに送信され、又は投稿される各メッセージは、送信ユーザー識別子、メッセージ識別子、メッセージコンテンツ、メッセージの投稿に関連付けられたタイムスタンプ、グループベースコミュニケーションチャネル識別子を含むメタデータを含む。グループベースコミュニケーションスレッドに送信され、又は投稿される各メッセージは、さらにグループベースコミュニケーションスレッド識別子を含む。上記の識別子のそれぞれは、ASCIIテキスト、ポインタ、メモリアドレス等を含んでよい。
「送信ユーザー識別子」は、特定のユーザーにより送信され、又は投稿された(例えば、特定のユーザー、ユーザー識別子、又はユーザープロファイルに関連付けられたクライアントデバイスにより送信された)一群のメッセージに関連付けられる。これらのメッセージは、当該ユーザーに関するコンテキストを判定するために分析され、又はパースされてよい(例えば、ユーザーの専門知識又はあるトピックへの関心は、トピックへの言及頻度又はこのようなメッセージ中のトピックに関連するキーワードに基づいて判定されてよい)。送信ユーザー識別子はASCIIテキスト、ポインタ、メモリアドレス等を含んでよい。本明細書で考察する幾つかの実施形態では、例示的な送信ユーザー識別子は著者識別子である。
「グループベースコミュニケーションチャネル」なる用語は、チャネルメンバ(例えば、クライアントデバイスを用いて環境にアクセスする認定ユーザー)により投稿され、チャネルメンバのみに閲覧可能なメッセージングコミュニケーションを表示するように構成される仮想通信環境又は仮想通信フィードを指す。特定の実施形態では、グループベースコミュニケーションチャネルのフォーマットは、グループベースコミュニケーションチャネルの異なるメンバに対して異なるように表示される。しかし、グループベースコミュニケーションチャネルのコンテンツ(すなわち、メッセージングコミュニケーション)は、グループベースコミュニケーションチャネルの各メンバに表示されることになる。例えば一実施形態では、グループベースコミュニケーションチャネルのコンテンツ(すなわち、メッセージングコミュニケーション)がグループベースコミュニケーションチャネルのメンバ毎に変わらないように、共通集合のグループベースメッセージングコミュニケーションがそれぞれのグループベースコミュニケーションチャネルの各メンバに対して表示されることになる。しかし、別の実施形態では、メンバはグループベースコミュニケーションチャネルに参加し、(当該ユーザーがチャネルに参加する前に投稿された過去のグループベースメッセージングコミュニケーションではなく)その後のグループベースメッセージングコミュニケーションを閲覧することができるのみであってよい。
一般に、グループベースコミュニケーションチャネルは、従来のメッセージングアプリにおける即興・一時的な会話ではなくトピック指向の永続的チャネルである。典型的には、グループベースコミュニケーションチャネルは、チャネルの表題又は名称に基づいてグループベースコミュニケーションインターフェイスのサイドバーペイン内にリスト形式で(例えば、アルファベット順に)編成され、又は並べられる。メンバがグループベースコミュニケーションチャネルを閲覧するインターフェイスは、「グループベースコミュニケーションチャネルインターフェイス」である。
「グループベースコミュニケーションチャネル識別子」又は「チャネル識別子」なる用語は、グループベースコミュニケーションチャネルをグループベースコミュニケーションシステムにおいて一意に特定する1つ以上のデータ項目を指す。例えば幾つかの実施形態では、グループベースコミュニケーションチャネル識別子は、ASCIIテキスト、ポインタ、メモリアドレス、及び/又は他の一意な識別子を含む。
「グループベースコミュニケーションスレッド」又は「スレッド」なる用語は、選択されたグループベースコミュニケーションチャネル内に表示される選択されたグループベースメッセージングコミュニケーションから生じ、又はグループベースメッセージングコミュニケーションに別の方法で関連付けられた付随的フィード内に表示される一群のメッセージコミュニケーションである。グループベースコミュニケーションスレッドは、付随的フィード内で互いにリンクされ、それぞれが選択されたグループベースメッセージングコミュニケーション又は「親メッセージ」に関連付けられた1つ以上の「スレッド形式メッセージ」又は「スレッドコミュニケーションメッセージ」を含んでよい。
「プライベートグループベースコミュニケーションチャネル」なる用語は、グループベースコミュニケーションシステムの他のメンバ(すなわち、他のグループベースコミュニケーションワークスペースに関連付けられたメンバ)が全体としてアクセス可能及び/又は検索可能にならないように、制限付きアクセス設定を有するグループベースコミュニケーションチャネルを指す。例えば、プライベートグループベースコミュニケーションチャネルに関する知識を有し、又はプライベートグループベースコミュニケーションチャネルへのアクセスに対する承認を有するユーザー又は管理者のみ(例えば、ユーザーが認定/認証された後に、プライベートグループベースコミュニケーションチャネルのグループベースコミュニケーションチャネル識別子はユーザープロファイルに関連付けられる)が、プライベートグループベースコミュニケーションチャネルのコンテンツを閲覧することができる。
「グループベースキャッシュサービス」なる用語は、グループベースコミュニケーションシステムにおける個別のクライアントデバイスとそれぞれのグループベースコミュニケーションサーバ(例えば、ゲートウェイサーバ)との間の効率的なネットワークコミュニケーションを可能にするインターフェイスを提供するように構成され、地理的に分散された演算デバイスを指す。特定の実施形態では、単一のグループベースキャッシュサービスが、特定のグループベースコミュニケーションチャネル又はグループベースコミュニケーションチャネルの特定の集合にサービス提供するグループベースコミュニケーションサーバの下位集合内のすべてのサーバとインタラクトする。グループベースキャッシュサービスは、クライアントデバイス要求(すなわち、クライアントデバイスによる特定のグループベースコミュニケーションインターフェイスの更新又はレンダリングの要求)、並びにグループベースキャッシュサービスがグループベースコミュニケーションサーバに送信される要求の数を低減することによるネットワークトラフィック低減に関連するより低いレイテンシを提供する。
本明細書で説明するように構築されるグループベースキャッシュサービスは、経時的にグループベースコミュニケーションデータのフェッチのアモータイゼーション(amortization)を可能にする。例えば、起動時のグループベースコミュニケーションデータフェッチの長い演算集約的期間に代えて、本実施形態では、グループベースコミュニケーションインターフェイスセッション期間中に軽やかで短時間のグループベースコミュニケーションデータフェッチを可能にする。このようなアモータイゼーションは、データサービス容量管理の容易な理解を提供し、かつ再接続の嵐によるグループベースコミュニケーションプラットフォーム停止のリスクを低減する。
本明細書で説明するように構築されるグループベースキャッシュサービスは、任意の所定グループベースコミュニケーションインターフェイスセッション又は一連のセッション中に予想されるクライアント要求にサービス提供するのに十分なグループベースコミュニケーションデータをフェッチし、かつ保持するようにさらに構成される。例えば一実施形態では、グループベースキャッシュサービスは、先行する10日間(又は何らかの類似する期間)のグループベースコミュニケーションメッセージを特定のグループベースコミュニケーションチャネル又はチャネルの集合にレンダリングするのに十分なグループベースコミュニケーションデータをフェッチし、かつキャッシュするように構成される。このように、グループベースキャッシュサービスは、加入クライアントデバイスがグループベースコミュニケーションサーバに追加のデータについてクエリすることを必要とせずに最も予想されるグループベースコミュニケーションインターフェイスセッションを支援し、日常的又は予想されるグループベースコミュニケーションインターフェイスインタラクションを支援するように構成される。
別の実施形態では、グループベースキャッシュサービスは、何らかの先行するアクセス期間(すなわち、先行する10日)を対象とするグループベースコミュニケーションインターフェイス、グループベースコミュニケーションチャネル、グループベースコミュニケーションチャネルの集合、ワークスペース、ファイル等に関連付けられたメタデータ(例えば、ユーザープロファイル情報、チャネルプロファイル情報(名称、トピック、作成者等)、チャネルメンバシップ情報(チャネルの人々及びボットのリスト))のみをフェッチし、かつキャッシュするように構成されてよい。クライアントデバイスは、それぞれのローカルキャッシュメタデータをグループベースキャッシュサービスに格納されたものと比較するように構成され、これによりローカルキャッシュ中の有効期限切れと判定された部分のみについてグループベースコミュニケーションサーバから更新を要求するように構成される。
「コミュニケーション装置」なる用語は、ユーザー特定クエリを管理するように構成されるデバイス、サーバ、又は他の演算ハードウェアコンポーネントを指す。一実施形態では、コミュニケーション装置は、グループベースコミュニケーションシステムにおいて1つ以上のクライアントデバイスから発信されたユーザー特定クエリを管理するように構成されるユーザー特定モジュールを有する特殊構成グループベースキャッシュサービスである。
「ユーザー特定クエリ(user identification query、ユーザー識別クエリ)」なる用語は、クライアントデバイスにより(例えば、携帯デバイスで起動されるグループベースコミュニケーションアプリにより)生成され、ユーザー特定モジュール(例えば、グループベースキャッシュサービスで動作するユーザー特定モジュール)に提供される電子データ要求を指す。ユーザー特定クエリは、要求ユーザー識別子及び対象ユーザー識別子を含む。ユーザー特定クエリは、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたユーザーステータスキャッシュと比較して対象ユーザー識別子の既知ステータス、未知ステータス、又は保留ステータスのうちの1つを判定するようにコミュニケーション装置(例えば、グループベースキャッシュサービスのユーザー特定モジュール)に促す。
「要求ユーザー識別子」なる用語は、操作ユーザー又は操作ユーザープロファイルをグループベースコミュニケーションシステムで特定することができる1つ以上のデータ項目を指す。すべてのユーザー特定クエリは、要求ユーザー識別子の観点に基づいて解決される。対象ユーザー識別子が関連付けられた既知ユーザーか、未知のユーザーかをコミュニケーション装置が判定するのはこの観点からである。要求ユーザー識別子は、情報交換標準コード(ASCII)テキスト、ポインタ、メモリアドレス、又は他の一意な識別子により具現化されてよい。
「対象ユーザー識別子」なる用語は、操作ユーザー以外のユーザー又は操作ユーザープロファイル以外のプロファイル(本明細書では対象ユーザー又は対象ユーザープロファイルと称する)を特定する1つ以上のデータ項目を指す。対象ユーザー識別子は、コミュニケーション装置が対象ユーザー識別子の既知ステータスを判定したことに応答して、コミュニケーション装置によりグループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングさせるために用いられる。対象ユーザー識別子は、コミュニケーション装置が対象ユーザー識別子の未知ステータスを判定したことに応答して、コミュニケーション装置によりグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングさせるためにも用いられる。対象ユーザー識別子は、情報交換標準コード(ASCII)テキスト、ポインタ、メモリアドレス、又は他の一意な識別子として具現化されてよい。
「既知ステータス」なる用語は、認証システム又は認定システムの関係が操作ユーザーと対象ユーザーとの間に存在する状況で対象ユーザー識別子に割り当てられるシステム指定を指す。例えば、操作ユーザーグループの認定メンバに関連付けられた対象ユーザー識別子(すなわち、対象ユーザー識別子及び要求ユーザー識別子は共通のグループ識別子に関連付けられている)は、コミュニケーション装置により既知ステータスを有するものとして指定される。
「未知ステータス」なる用語は、認証システム又は認定システムの関係が操作ユーザーと対象ユーザーとの間に存在しない状況で対象ユーザー識別子に割り当てられるシステム指定を指す。例えば、操作ユーザーグループの認定メンバでない対象ユーザーに関連付けられた対象ユーザー識別子(すなわち、対象ユーザー識別子及び要求ユーザー識別子は共通のグループ識別子に関連付けられている)は、コミュニケーション装置により未知ステータスを有するものとして指定されてよい。これは例えば、グループベースコミュニケーションインターフェイスが複数の参加グループ又は組織識別子(本明細書では外部共有チャネルと称される)を含むメッセージを有するグループベースコミュニケーションチャネルを含む状況で行われてよい。換言すると、このような「外部共有」グループベースコミュニケーションチャネルのメンバは、組織識別子は異なるが、共通のチャネル識別子を有するチャネルメンバからのメッセージを含む。これは例えば、外部組織(例えば、ACME Corp.)のメンバがホスト組織(例えば、Slack Corp.)のグループベースコミュニケーションチャネルへの参加を招待されている状況で行われてよい。
「保留ステータス」なる用語は、システムの関係(例えば、認定済み/既知、又は未認定/未知)がまだ判定されていないか、又はこのような判定が進行中の状況で対象ユーザー識別子に割り当てられるシステム指定を指す。例えば、操作ユーザーグループの認定メンバでない対象ユーザーに関連付けられた対象ユーザー識別子(すなわち、対象ユーザー識別子及び要求ユーザー識別子は共通のグループ識別子に関連付けられていない)は、コミュニケーション装置により保留ステータスを有するものとして指定されてよい。これは例えば、グループベースコミュニケーションインターフェイスが複数の参加グループ又は組織の識別子(本明細書では外部共有チャネルと称する)を含むメッセージを有するグループベースコミュニケーションチャネルを含む上述のような状況で行われてよい。
「制限付きユーザー特定インターフェイス(limited user identification interface、制限付きユーザー識別インターフェイス)」なる用語は、グループベースコミュニケーションインターフェイスにレンダリングされ、かつ要求ユーザーの立場で考えた場合の非認定ユーザー(すなわち、対象ユーザー)を表すグラフィックユーザーインターフェイス(GUI)のコンポーネント、モーダル、又はウインドウを指す。対象ユーザーが要求ユーザーに対して認定又は認証されておらず、制限付きユーザー特定インターフェイスを含むグループベースコミュニケーションインターフェイスの対象閲覧者であることを考慮して、制限付きユーザー特定インターフェイスは、対象ユーザープロファイルから引き出されたプライベート情報、秘密情報、又は内部情報を除外するように構成される。実施形態では、制限付きユーザー特定インターフェイスは、(1)アバターもしくは画像、(2)氏名、ユーザー名、ディスプレイ名、もしくはこれらの組み合わせ、及び(3)オンラインプレゼンスの表示を含む。
「既知ユーザー特定インターフェイス(known user identification interface、既知ユーザー識別インターフェイス)」なる用語は、グループベースコミュニケーションインターフェイスにレンダリングされ、かつ要求ユーザーの立場で考えた場合の認定ユーザー(validated user)(すなわち、対象ユーザー(targeted user))を表すGUIのコンポーネント、モーダル、又はウインドウを指す。対象ユーザーが要求ユーザーに対して認定又は認証されており、既知ユーザー特定インターフェイスを含むグループベースコミュニケーションインターフェイスの対象閲覧者であることを考慮して、既知ユーザー特定インターフェイスは、対象ユーザープロファイルから引き出されたプライベート情報、秘密情報、又は内部情報を含むように構成される。幾つかの実施形態では、既知ユーザーの特定は、制限付きユーザー特定インターフェイス及びカスタムプロファイルフィールド、対象ユーザー位置情報、カスタムステータス、カレンダ情報、監督者情報、チャネル関与履歴情報等に関連付けられたすべてのユーザープロファイルフィールドを含む。
「クライアントデバイス停止命令」なる用語は、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたユーザーステータスキャッシュと比較した際に保留ステータスの判定に応答してコミュニケーション装置(例えば、ユーザー特定モジュール)により生成された電子コマンド/コンピュータコマンド又は制御信号を指す。クライアントデバイス停止命令は、要求ユーザー識別子に関連付けられたユーザー特定クエリを発信したクライアントデバイスへ送信され、少なくとも停止期間中又はコミュニケーション装置が要求クライアントデバイスに対象ユーザー識別子の解決済み既知ステータス又は解決済み未知ステータスのうちの1つを返すことが可能になるまで、クライアントデバイスにグループベースキャッシュサービス又はグループベースコミュニケーションサーバのさらなる対象ユーザー識別子関連クエリを控えさせる。
「制限付きユーザー特定オブジェクト」なる用語は、要求ユーザー識別子に関連して考えた場合に、コミュニケーション装置が対象ユーザー識別子の未知ステータスを判定したことに応答して、グループベースコミュニケーションリポジトリから取り出される電子データ及び命令を指す。制限付きユーザー特定オブジェクトは、コミュニケーション装置(例えば、ユーザー特定モジュール)により取り出され、制限付きユーザー特定インターフェイスのレンダリングに用いるために、要求ユーザー識別子に関連付けられたクライアントデバイスへ送信される。単純に表現すれば、制限付きユーザー特定オブジェクトは、クライアントデバイスがグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングするのに必要とされるデータ及び命令を含む。
「既知ユーザー特定オブジェクト」なる用語は、要求ユーザー識別子に関連して考えた場合に、コミュニケーション装置が対象ユーザー識別子の既知ステータスを判定したことに応答してグループベースコミュニケーションリポジトリから取り出される電子データ及び命令を指す。既知ユーザー特定オブジェクトは、コミュニケーション装置(例えば、ユーザー特定モジュール)により取り出され、既知ユーザー特定インターフェイスのレンダリングに用いるために要求ユーザー識別子に関連付けられたクライアントデバイスへ送信される。単純に表現すれば、既知ユーザー特定オブジェクトは、クライアントデバイスがグループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングするのに必要とされるデータ及び命令を含む。
「グループベースコミュニケーションリポジトリ」なる用語は、データが格納され、アクセスされ、修正され、かつグループベースコミュニケーションシステムにより別の方法で保持されるメモリデバイス等の演算位置を指す。格納されたデータは、グループベースコミュニケーションシステムの動作を容易にする情報を含む。グループベースコミュニケーションリポジトリは、1つ以上のデータストレージデバイス、別個の1つ以上のデータベースサーバ、又はデータストレージデバイス及び別個のデータベースサーバの組み合わせとして具現化されてよい。グループベースコミュニケーションリポジトリは、専用デバイス及び/又はより大きなリポジトリの一部であってよい。実施形態では、グループベースコミュニケーションリポジトリは、対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを少なくとも含む。他の実施形態では、グループベースコミュニケーションリポジトリは、対象ユーザー識別子に関連付けられた既知ユーザー特定オブジェクトを含む。
「グループ接続アレイ」なる用語は、グループベースコミュニケーションシステムに既知のさまざまなグループ(すなわち、チーム及び/又は組織)のユーザー(例えば、ユーザー識別子)の間の関連付け、リンク、及び/又は優先度スコアを格納するグループベースコミュニケーションサーバがアクセス可能なグループベースコミュニケーションシステムのデータベース又はリポジトリを指す。グループ接続アレイは、ユーザープロファイル情報(例えば、ユーザー勤務地、ユーザー組織情報、組織識別子、ユーザー任務情報等)、及びグループベースコミュニケーションシステムのグループベースコミュニケーションインターフェイスを介して行われるユーザーインタラクションに基づくソーシャルグラフ及び/又はネットワークグラフとして具現化されてよい。このようなインタラクションは、組織又はグループのメンバシップデータ、チャネルメンバシップデータ、チャネル関与データ、ファイル関与データ等を含んでよい。グループ接続アレイがワークグラフデータ構造としてアセンブルされる実施形態では、グループ接続アレイは、要求ユーザー識別子及び対象ユーザー識別子の所定ペアの解決済み既知ステータス又は解決済み未知ステータスの判定を生成する機械学習及び/又は人工知能の構成及び/又はモデルにより活用されてよい。
他の実施形態では、グループ接続アレイはグループとグループの接続が格納される表であってもよい。例えば、グループA~Nがグループベースコミュニケーションシステムに既知であると仮定すると、グループ接続アレイは、グループ(すなわち、グループA)毎に他のすべてのグループ(すなわち、グループB~N)に対して「接続」ステータス又は「切断」ステータスを含むことになるであろう。
「解決済み既知ステータス」なる用語は、グループ接続アレイへのクエリに基づいて操作ユーザーと対象ユーザーとの間に認証システム又は認定システムの関係が存在するとコミュニケーション装置が判定した状況で、対象ユーザー識別子に対する第1の「保留ステータス」のシステム指定に続いて、当該対象ユーザー識別子に割り当てられる第2のシステム指定を指す。例えば、操作ユーザーグループのメンバではない(すなわち、対象ユーザー識別子及び要求ユーザー識別子が共通のグループ識別子で関連付けられていない)が、操作ユーザーが以前に直接のメッセージングコミュニケーションを送信した対象ユーザーに関連付けられている対象ユーザー識別子は、解決済み既知ステータスに基づいて指定するのに十分な認定を受けているとみなされてよい。
「解決済み未知ステータス」なる用語は、グループ接続アレイへのクエリに基づいて操作ユーザーと対象ユーザーとの間に認証システム又は認定システムの関係が存在しないとコミュニケーション装置が判定する状況で、対象ユーザー識別子に対する第1の「保留ステータス」のシステム指定に続いて、当該対象ユーザー識別子に割り当てられる第2のシステム指定を指す。例えば、操作ユーザーグループではなく(すなわち、対象ユーザー識別子及び要求ユーザー識別子が共通のグループ識別子で関連付けられていない)、かつ操作ユーザーが以前にインタラクトしなかった(例えば、以前に直接のメッセージングコミュニケーションがない、共通のグループベースコミュニケーションチャネルのメンバシップがない等)対象ユーザーに関連付けられた対象ユーザー識別子は、解決済み未知ステータスに基づいて指定するのに十分な認定を受けていないとみなされてよい。例えば、グループ接続アレイは、要求ユーザー識別子に関連付けられたグループAが対象ユーザー識別子に関連付けられたグループBから切断されていることを示してよい。
「ユーザーステータスキャッシュ」なる用語は、要求ユーザー識別子及び対象ユーザー識別子の各ペアの既知ステータス、未知ステータス、保留ステータス、解決済み既知ステータス、及び解決済み未知ステータス等のシステムステータス指定を格納するように構成され、グループベースキャッシュサービスがアクセス可能なデータベース又はリポジトリを指す。
本明細書で用いるように、「データ」、「コンテンツ」、「デジタルコンテンツ」、「デジタルコンテンツオブジェクト」、「情報」なる用語及び類似の用語は、同義で用いられ、本発明の実施形態により送信され、受信され、かつ/又は保存されうるデータを指す。したがって、このような用語を用いても、本発明の実施形態の趣旨及び範囲を限定するものと解釈されるべきではない。さらに、本明細書において他方の演算デバイスからデータを受信する演算デバイスを説明する場合、データは他方の演算デバイスから直接的に受信されてよく、又は本明細書で「ネットワーク」と称する場合がある1つ以上の中間演算デバイス、例えば1つ以上のサーバ、中継装置、ルータ、ネットワークアクセスポイント、基地局、ホスト、リピータ等を介して間接的に受信されてよいことが理解されるであろう。同様に、本明細書において他方の演算デバイスへデータを送信する演算デバイスを説明する場合、データは他方の演算デバイスへ直接的に送信されてよく、又は1つ以上の中間演算デバイス、例えば1つ以上のサーバ、中継装置、ルータ、ネットワークアクセスポイント、基地局、ホスト、リピータ等を介して間接的に送信されてよいことが理解されるであろう。
「ユーザー」なる用語は、グループベースコミュニケーションシステムの少なくとも1つのグループベースコミュニケーションインターフェイスにアクセスする資格を有する個人を指すものと理解されたい。本明細書で言及するユーザーは、グループベースコミュニケーションシステムのグループベースコミュニケーションインターフェイス(又はグループベースコミュニケーションインターフェイスの集合)にアクセスするためにクライアントデバイスで可能になるアクティビティに関連して主に考察される。すなわち、幾つかの実施形態では、ユーザーはクライアントデバイスを用いてグループベースコミュニケーションメッセージングシステムにアクセスする。グループベースコミュニケーションシステムの各ユーザーは、少なくとも1つの「グループ識別子」に関連付けられる。
「ユーザープロファイル」、「ユーザーアカウント」、「ユーザープロファイルデータ」、及び「ユーザーアカウント詳細」なる用語は、例えば、ユーザー識別子、ユーザーがアクセスを許諾されたグループベースコミュニケーションチャネルに関連付けられた1つ以上のグループベースコミュニケーションチャネル識別子、ユーザーが関連付けられたグループの1つ以上のグループ識別子、ユーザーが任意のグループベースコミュニケーションチャネルの所有者かについての表示、ユーザーが任意のグループベースコミュニケーションチャネル制限を有するかについての表示、複数のメッセージ、複数の絵文字、複数の会話、複数の会話トピック、アバター、電子メールアドレス、実名(例えば、John Doe)、ユーザー名(例えば、jdoe)、パスワード、時差帯、ステータス等を含む、ユーザーに関連付けられたグループベースコミュニケーションシステムのデータ、ファイル、及び他の情報を指す。ユーザーアカウント詳細は、ユーザークレデンシャルの下位集合の指定、例えばユーザーのユーザー名及びパスワードを含むユーザーのログイン情報を含みうる。
「クライアントデバイス」なる用語は、サーバにより利用可能となるサービスにアクセスするように構成されるコンピュータハードウェア及び/又はコンピュータソフトウェアを指す。サーバは多くの場合(しかし常にではない)、別のコンピュータシステムに設けられ、この場合、クライアントデバイスはネットワークによりサービスにアクセスする。クライアントデバイスとしては、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、ウェラブルコンピュータ、パーソナルコンピュータ、エンタープライズコンピュータ等が挙げられるが、これらに限定されない。幾つかの実施形態では、クライアントデバイスは、ユーザー及び/又は特定の組織に関連付けられる。特定の実施形態では、関連付けは、ユーザーの登録情報をグループベースコミュニケーションサーバへ送信するクライアントデバイスにより作成される。幾つかの例では、クライアントデバイスは(例えば、ユーザーがグループベースコミュニケーションシステムアプリにログオンした場合のみ)ユーザーに一時的に関連付けられる。
「ユーザー関与」なる用語は、グラフィックユーザーインターフェイス(すなわち、グループベースコミュニケーションインターフェイス)を介したグループベースコミュニケーションシステム又はそのコンポーネントとのユーザーインタラクションを指す。グループベースコミュニケーションインターフェイス又はそのコンポーネントとのこのようなユーザー関与は、「非キーストローク関与」又は「キーストローク関与」等の大量のインタラクションを用いうるが、これに限定されない。非キーストローク関与は、当該ユーザーインタラクションがグループベースコミュニケーションインターフェイスに1つ以上の(例えば、キーストローク)文字の入力を含まない(すなわち、除外する)ユーザーインタラクションである。例えば、タッチスクリーン又はマウスクリックによる関与は、非キーストローク関与の例である。「キーストローク関与」なる用語は、グループベースコミュニケーションインターフェイスのコンポーネントへの1つ以上のキーストロークの入力を指す。例えば、グループベースコミュニケーションインターフェイスのコンポーネントへの1つ以上の文字(例えば、英数字又は絵文字)の入力はキーストローク関与の一例である。
「ユーザー識別子」なる用語は、グループベースコミュニケーションシステムにおいてユーザー、ユーザープロファイル、又はユーザーに対応するユーザーアカウントを一意に特定する1つ以上のデータ項目を指す。例えばユーザー識別子は、情報交換標準コード(ASCII)テキスト、ポインタ、メモリアドレス、又は他の一意な識別子を含む。
「グループ識別子」、「ワークスペース識別子」、及び「チーム識別子」なる用語は、グループベースコミュニケーションシステムにおけるグループベースコミュニケーションワークスペースを一意に特定する1つ以上のデータ項目を指す。例えばグループ識別子は、ASCIIテキスト、ポインタ、メモリアドレス、又は他の一意な識別子を含む。グループ識別子は、あるグループベースコミュニケーションワークスペースに関連付けられたグループベースコミュニケーションチャネル、メッセージ、ファイル、メンバ等を別のグループベースコミュニケーションワークスペースから区別するために用いられる。
「組織識別子」なる用語は、グループベースコミュニケーションシステムにおける組織、又は組織に関連付けられたユーザーを一意に特定する1つ以上のデータ項目を指す。例えば幾つかの実施形態では、組織識別子は、ASCIIテキスト、ポインタ、メモリアドレス、及び/又は他の一意な識別子を含む。幾つかの実施形態では、組織識別子は事業体、企業、又は組織の従業員のグループ等、ユーザーの選択されたグループに関連付けられる(例えば、Slack Corp.従業員に関連付けられた組織識別子は、ACME Corporationに関連付けられた組織識別子とは異なるであろう)。Slack Corp.の組織識別子に関連付けられたグループベースコミュニケーションワークスペース及びチャネルに、ACME Corporationの組織識別子に関連付けられたユーザーはアクセス可能又は閲覧可能にはならないであろう。特定の実施形態では、組織識別子は、本明細書で定義する複数のグループベースコミュニケーションワークスペース(例えば、マーケティンググループ、販売グループ、特許グループ等)に関連付けられる。
「外部リソース」又は「外部アプリケーション」なる用語は、グループベースコミュニケーションインターフェイス及び/又はグループベースコミュニケーションワークスペースを介してクライアントデバイスに外部サービス(すなわち、グループベースコミュニケーションシステムにネイティブでない)を提供するグループベースコミュニケーションシステムと通信するように構成されたソフトウェアプログラム、アプリケーション、プラットフォーム、又はサービスを指す。外部アプリケーションは、ユーザーがアクセス可能なさまざまな機能をサービス提供し、管理し、及び/又は実行してよい。外部アプリケーションは、グループベースコミュニケーションシステムを支援するものとは別個の異なるコンパイル済みコードベース又はリポジトリで動作する。幾つかの実施形態では、1つ以上のアプリケーションプログラムインターフェイス(API)を介して外部アプリケーションがグループベースコミュニケーションシステムと通信し、その逆もあてはまる。さまざまな例として、外部アプリケーションは、カレンダ/スケジュールアプリ、ToDoリストアプリ、サービスプロバイダアプリ、コードビルディングアプリ、ソフトウェアテストアプリ、ストレージリポジトリアプリ等を実行するように構成されてよい。幾つかの実施形態では、外部アプリケーションは、グループベースコミュニケーションシステムで開始する演算シーケンスの集合に関連付けられた演算シーケンスステップを実施又は実行するように構成される。
「備える(comprising)」なる用語は、含むが、限定されないことを意味し、かつ特許の文脈で典型的に用いられるように理解されたい。「備える(comprise)」、「含む(include)」、及び「有する(having)」等のより広い用語を用いると、「からなる(consisting of)」、「から本質的になる」、及び「から実質的に構成される」等のより狭い用語のサポートを提供するものと理解されたい。
一般に、「一実施形態では」、「一実施形態によれば」等の文言は、当該文言に続く特定の特徴、構造、又は特性が本発明の少なくとも1つの実施形態に含まれ、かつ本発明の2つ以上の実施形態に含まれてよいことを意味する(このような文言が必ずしも同じ実施形態を指すものではないことが重要である)。
「例示的な(illustrative)」、「例示的な(example)」、「例示的な(exemplary)」等の用語は、質の水準を示すことなく「例、実例、又は例示として機能する」ことを意味するために本明細書で用いられる。本明細書で「例示的な」として説明される任意の実装形態は、他の実装形態と比較して好ましいか、又は有利なものとして必ずしも解釈されるものではない。
当業者が理解するように、「約(about)」、「およそ(approximately)」等の用語は、数とともに用いられる場合、特定の数、あるいは当該特定の数における近接度の範囲を意味する場合がある。
本明細書に、構成要素又は特徴が含まれて「よい(may)」、含まれ「うる(can)」、含まれ「うるであろう(could)」、含まれる「べきである(should)」、含まれる「ことになるであろう(would)」、「好ましくは(preferably)」含まれる、含まれる「可能性がある(possibly)」、「典型的には(typically)」含まれる、「任意に(optionally)」含まれる、「例えば(for example)」含まれる、「多くの場合(often)」含まれる、もしくは含まれ「うるであろう(might)」、又は特性を有して「よい」、有し「うる」、有し「うるであろう」、有する「べきである」、有する「ことになるであろう」、「好ましくは」有する、有する「可能性がある」、「典型的には」有する、「任意に」有する、「例えば」有する、「多くの場合」有する、もしくは有し「うるであろう」(又は他のこのような言語)ことを記載する場合、当該特定の構成要素又は特徴が含まれ、又は特性を有することを必要とはしない。幾つかの実施形態では、このような特定の構成要素又は特徴が任意で含まれてよく、又は除外されてよい。
「集合」なる用語は、1つ以上の項目の群を指す。
「複数」なる用語は、2つ以上の項目を指す。
別途の指示がない限り、「又は(or)」なる用語は、本明細書では代替及び接続の両方の意味で用いられる。
例示的なシステムアーキテクチャ
本開示の方法、装置、及びコンピュータプログラム製品は、さまざまなデバイスのいずれかにより具現化されてよい。例えば、例示的な実施形態の方法、装置、及びコンピュータプログラム製品は、1つ以上のクライアントデバイス及び1つ以上のグループベースコミュニケーションサーバ等、1つ以上のデバイスと通信するように構成される、サーバ又は他のネットワークエンティティ等のネットワーク化デバイス(例えば、グループベースキャッシュサービス)により具現化されてよい。これに加えて又はこれに代えて、演算デバイスは、パーソナルコンピュータ又はコンピュータワークステーション等の固定演算デバイスを含んでよい。さらに、例示的な実施形態は、携帯型情報端末(PDA)、携帯電話、スマートフォン、ラップトップコンピュータ、タブレットコンピュータ、ウェラブルコンピュータ、又は上記のデバイスのいずれかの組み合わせ等、さまざまな携帯デバイスのいずれかにより具現化されてよい。
図1に本開示の実施形態により構築される例示的なグループベースコミュニケーションネットワークアーキテクチャ100を示す。図示したグループベースコミュニケーションネットワークアーキテクチャ100は、グループベースコミュニケーションシステム102、グループベースキャッシュサービス104、複数のクライアントデバイス108A~108F、及び複数の外部リソースを備え、すべてがコミュニケーションネットワーク106を介して通信する。
図示したグループベースコミュニケーションシステム102は、少なくとも1つのグループベースコミュニケーションリポジトリ103及び少なくとも1つのグループ接続アレイ105と通信するグループベースコミュニケーションサーバ200を備える。
ユーザーは、クライアントデバイス108A~108Fを用いてコミュニケーションネットワーク106を介してグループベースコミュニケーションシステム102にアクセスする。図示したクライアントデバイス108A~108Fは、2つの異なる組織のユーザーに関連付けられる。クライアントデバイス108A~108Cは組織A(例えば、Slack Corporation)のユーザーに関連付けられ、かつクライアントデバイス108D~108Fは組織B(例えば、ACME Corporation)のユーザーに関連付けられる。組織A及びBを図1に破線により概略的に表す。
クライアントデバイス108C及び108Dに関連付けられたユーザーは、グループベースコミュニケーションシステムにより外部共有チャネル内のメンバシップを認定されている。例えば、組織Aは給与問題に注力するグループベースコミュニケーションチャネル(すなわち、#HR-payroll-issues)を人材グループベースコミュニケーションワークスペース内に作成して給与サービス供給業者である組織Bのクライアントデバイス108Dに関連付けられたユーザーに参加するように招待済みであってよい。クライアントデバイス108C及び108Dの外部共有チャネルメンバシップを図1に点線により概略的に示す。
コミュニケーションネットワーク106は、例えば有線又は無線のローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)等を含む任意の有線又は無線のコミュニケーションネットワーク、並びにコミュニケーションネットワークを実装するのに必要な任意のハードウェア、ソフトウェア、及び/又はファームウェア(例えば、ネットワークルータ等)を備えてよい。例えば、コミュニケーションネットワーク106は、セルラーフォンの802.11、802.16、802.20、及び/又はWiMaxネットワークを含んでよい。さらに、コミュニケーションネットワーク106は、インターネット等の公共ネットワーク、イントラネット等のプライベートネットワーク、又はこれらの組み合わせを含んでよく、かつTCP/IPに基づくネットワークプロトコルを含むがこれに限定されない現在利用可能か、又は後に開発されるさまざまなネットワークプロトコルを利用してよい。例えば、ネットワークプロトコルはグループベースコミュニケーションシステムの必要性に適合するためにカスタマイズされてよい。幾つかの実施形態では、プロトコルは、ウェブソケット(Websocket)チャネルを介して送信されるJSON(ジャバスクリプトオブジェクトノーテーション、JavaScript Object Notation)オブジェクトのカスタムプロトコルである。幾つかの実施形態では、プロトコルは、JSONオーバーRPC(「遠隔手続き呼び出し」)、JSONオーバーREST(「Representational State Transfer」)/HTTP(「ハイパーテキスト転送プロトコル」等である。
グループベースコミュニケーションサーバ200は、1つ以上のコンピュータとして具現化されてよい。グループベースコミュニケーションサーバ200は、クライアントデバイス108A~108F及びグループベースキャッシュサービス104を含むが、これらに必ずしも限定されないさまざまなソースからの電子データの受信を提供する。
グループベースコミュニケーションリポジトリ103は、1つ以上のネットワーク接続ストレージ(NAS)デバイス又は1つ以上の別個のデータベースサーバ等、データストレージデバイスとして具現化されてよい。グループベースコミュニケーションリポジトリ103は、グループベースコミュニケーションシステム102の動作を容易にするためにグループベースコミュニケーションサーバ200及び/又はグループベースキャッシュサービス104によりアクセスされ、かつ格納される情報を含む。例えば、グループベースコミュニケーションリポジトリ103は、複数のユーザー特定オブジェクト(例えば、既知ユーザー特定オブジェクト、制限付きユーザー特定オブジェクト)を含んでよいが、これらに限定されない。グループベースコミュニケーションリポジトリは、限定することなく複数のグループベースコミュニケーションチャネル間で編成された複数のメッセージングコミュニケーション等も含む。
グループ接続アレイ105は、1つ以上のネットワーク接続ストレージ(NAS)デバイス又は1つ以上の別個のデータベースサーバ等、データストレージデバイスとして具現化されてよい。グループ接続アレイ105は、グループベースコミュニケーションシステム102の動作を容易にするためにグループベースコミュニケーションサーバ200及び/又はグループベースキャッシュサービス104によりアクセスされ、かつ格納される情報を含む。例えば、グループ接続アレイ105は、グループベースコミュニケーションシステム102の複数のユーザー(例えば、ユーザー識別子)の間の関連付け、リンク、及び/又は優先度スコアを格納する。
図示したグループベースコミュニケーションネットワークアーキテクチャ100は、グループベースキャッシュサービス104をさらに含む。グループベースキャッシュサービス104は、1つ以上のコンピュータとして具現化されてよい。図示したグループベースキャッシュサービス104は、個別のクライアントデバイス108A~108Fと1つ以上のグループベースコミュニケーションサーバ200との間の効率的なネットワークコミュニケーションを可能にするインターフェイスを提供するように構成される。図示したグループベースキャッシュサービス104はユーザー特定モジュール116を備え、少なくとも1つのユーザーステータスキャッシュ107と通信するように配置される。一実施形態では、グループベースキャッシュサービス104は、2018年5月18日に出願されたMethod, Apparatus, and Computer Program Product for a Scalable Group-Based Communication System with a Reduced Client Memory Footprintなる名称の共同所有の米国特許出願第15/983674号明細書に説明されるロードバランサ、エッジキャッシュホスト、ゲートウェイサーバ、及びステータスチェッカのうちの1つ以上により具現化されてよい。当該共同所有の特許出願の内容はその全体が参照により本明細書に組み込まれる。当業者には明らかなように、本明細書で考察するさまざまな実施形態はグループベースキャッシュサービスをエッジキャッシュとして示しているが、本明細書に説明する発明の概念に関連して他のキャッシュシステムが用いられてもよい。
ユーザーステータスキャッシュ107は、1つ以上のネットワーク接続ストレージ(NAS)デバイス又は1つ以上の別個のデータベースサーバ等、データストレージデバイスとして具現化されてよい。ユーザーステータスキャッシュ107は、グループベースコミュニケーションシステム102の動作を容易にするためにグループベースキャッシュサービス104によりアクセスされ、かつ格納される情報を含む。例えば、ユーザーステータスキャッシュ107は、限定することなく複数のユーザー固有システムステータス指定を格納する。
クライアントデバイス108A~108Fは、上記で定義した任意の演算デバイスであってよい。グループベースコミュニケーションサーバ200によりクライアントデバイス108A~108Fから受信される電子データは、さまざまな形式及びさまざまな方法により提供されてよい。例えば、クライアントデバイス108A~108Fはデスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、ネットブック、タブレットコンピュータ、ウェラブルコンピュータ等を含んでよい。
クライアントデバイス108A~108Fがスマートフォン又はタブレット等の携帯デバイスである実施形態では、クライアントデバイス108A~108Fは「アプリ」(例えば、上記で定義したグループベースコミュニケーションアプリケーション)を実行してグループベースコミュニケーションシステム102及びグループベースキャッシュサービス104とインタラクトしてよい。典型的には、このようなアプリはタブレット又はスマートフォン等の携帯デバイスで実行されるように設計される。例えば、iOS(登録商標)、Android(登録商標)、又はWindows(登録商標)等、携帯デバイスのオペレーティングシステムで実行されるアプリが提供されてよい。典型的には、これらのプラットフォームは、アプリが互いに、並びに携帯デバイスの特定のハードウェアコンポーネント及びソフトウェアコンポーネントと通信することを可能にする枠組みを提供する。例えば、上記の携帯オペレーティングシステムはそれぞれ、位置情報サービス回路、有線・無線ネットワークインターフェイス、ユーザー連絡先、及び他のアプリケーションとインタラクトする枠組みを提供する。典型的には、アプリの外部で実行されるハードウェアモジュール及びソフトウェアモジュールとの通信は、携帯デバイスのオペレーティングシステムにより提供されるアプリケーションプログラミングインターフェイス(API)を介して提供される。
これに加えて又はこれに代えて、クライアントデバイス108A~108Fは、ウェブブラウザを介してグループベースコミュニケーションシステム102及びグループベースキャッシュサービス104とインタラクトしてよい。さらに別の例として、クライアントデバイス108A~108Fは、グループベースコミュニケーションシステム102及びグループベースキャッシュサービス104をインターフェイス接続するように設計されたさまざまなハードウェア又はファームウェアを含んでよい。
例示的なグループベースコミュニケーションシステム102の幾つかの実施形態では、メッセージ又はメッセージングコミュニケーションは、クライアントデバイス108A~108Fからグループベースコミュニケーションシステム102へ送信されてよい。さまざまな実装形態では、メッセージは、コミュニケーションネットワーク106経由でクライアントデバイス108A~108Fにより直接にグループベースコミュニケーションシステム102へ送信されることがあり、メッセージは、メッセージサーバ(図示せず)等の手段を介してグループベースコミュニケーションシステム102へ送信されることもある。例えば、クライアントデバイス108A~108Fは、クライアントアプリケーション(例えば、グループベースコミュニケーションアプリケーション)を実行するデスクトップ、ラップトップ、タブレット、スマートフォン等であってよい。一実装形態では、メッセージは、メッセージ識別子、送信ユーザー識別子、グループ識別子、グループベースコミュニケーションチャネル識別子、メッセージコンテンツ(例えば、テキスト、絵文字、画像、リンク)、添付書類(例えば、ファイル)、メッセージヒエラルキデータ(例えば、メッセージは別のメッセージへの返信であってよい)、スレッド識別子、サードパーティメタデータ等のデータを含んでよい。一実施形態では、クライアントデバイス108A~108Fは、以下に提供するエクステンシブルマークアップランゲージ(eXtensible Markup Language、「XML」)書式付きデータを含む、実質的に(セキュア)ハイパーテキスト転送プロトコル(「HTTP(S)」)POSTメッセージの形式の次のような例示的なメッセージを提供してよい。
グループベースコミュニケーションシステム102は、受信したメッセージに基づいてストレージメッセージを作成することができる少なくとも1つのグループベースコミュニケーションサーバ200を備え、メッセージのインデクス化及びグループベースコミュニケーションリポジトリ103への格納を容易にする。一実装形態では、ストレージメッセージは、メッセージ識別子、グループ識別子、グループベースコミュニケーションチャネル識別子、送信ユーザー識別子、トピック、応答、メッセージコンテンツ、添付書類、メッセージヒエラルキデータ、スレッド識別子、サードパーティメタデータ、会話プリミティブデータ等のデータを含んでよい。例えば、グループベースコミュニケーションサーバ200は、以下に提供するXML書式データを含む、実質的にHTTP(S)POSTメッセージの形式の次のような例示的なストレージメッセージを提供してよい。
実施形態では、上記で定義したグループベースコミュニケーションチャネル識別子はメッセージに関連付けられてよい。実施形態では、上記で定義した送信ユーザー識別子がメッセージに関連付けられてよい。一実装形態では、グループベースコミュニケーションインターフェイスへメッセージを送信し、又は投稿したユーザーの送信ユーザー識別子を判定するために、(例えば、PHPコマンドを用いて)メッセージがパースされてよい。幾つかの実施形態では、このような送信ユーザー識別子は、操作ユーザーが別のユーザーにより投稿された一連のメッセージを閲覧することを意図する状況では、対象ユーザー識別子に相関してよい。以下でより詳細に考察するように、本発明の実施形態は、(例えば、PHPコマンドを用いて)各メッセージをパースしてメッセージ内で言及されたユーザー(例えば、@mentionユーザー)及び当該送信ユーザーを、ユーザー特定クエリの対象ユーザー識別子の考えられるソースとして特定することになる。
実施形態では、トピックがメッセージに関連付けられてよい。一実装形態では、(例えば、PHPコマンドを用いて)メッセージコンテンツがパースされ、メッセージ中で議論されたトピックを判定してよい。例えば、メッセージ中のハッシュタグがメッセージに関連付けられたトピックを示してよい。別の例では、トピックモデリング等の機械学習技術を用いてメッセージが(例えば、メッセージ単独、会話プリミティブ中の他のメッセージとともに)分析され、又はパースされ、メッセージに関連付けられたトピックを判定してよい。
実施形態では、応答を示すデータがメッセージに関連付けられてよい。例えば、他のユーザーによるメッセージへの応答は、反応(例えば、メッセージに関連付けられた絵文字の選択、メッセージに関連付けられた「いいね」ボタンの選択)、メッセージに埋め込まれたパイパリンクのクリック、メッセージへの返信(例えば、メッセージに応答してのグループベースコミュニケーションチャネルへのメッセージ投稿)、メッセージに関連付けられたファイルのダウンロード、あるグループベースコミュニケーションチャネルから別のグループベースコミュニケーションチャネルへのメッセージの共有、メッセージのピン留め、メッセージの星付け等を含んでよい。一実装形態では、他のユーザーによるメッセージへの応答に関するデータはメッセージ中に含まれてよく、かつ(例えば、PHPコマンドを用いて)メッセージがパースされ、応答を判定してよい。別の実装形態では、メッセージへの応答に関するデータはデータベースから取り出されてよい。例えば、メッセージへの応答に関するデータは、以下と類似するMySQLデータベースコマンドにより取り出されてよい。
SELECT messageResponses
FROM MSM_Message
WHERE messageID = ID_message_10
例えば、メッセージへの応答に関するデータは、メッセージのコンテキスト(例えば、操作ユーザーの立場でのメッセージのソーシャルスコア)を判定するために用いられうる。別の例では、メッセージへの応答に関するデータが分析されて、ユーザーに関するコンテキストが判定されてよい(例えば、トピックに関するユーザーメッセージへの応答に基づいて、トピックにおけるユーザーの専門知識が判定されてよい)。
実施形態では、添付書類がメッセージとともに含まれてよい。添付書類がある場合、ファイルがメッセージに関連付けられてよい。一実装形態では、(例えば、PHPコマンドを用いて)メッセージがパースされ、添付書類のファイル名を判定してよい。例えば、ファイルコンテンツが分析され、メッセージのコンテキストを判定してよい(例えば、メッセージが「特許」というトピックに関連付けられていることを特許ポリシー文書が示してよい)。
実施形態では、サードパーティメタデータがメッセージに関連付けられてよい。例えば、サードパーティメタデータは会社、グループ、グループベースコミュニケーションチャネル等に固有のメッセージ又はユーザーに関する追加のコンテキストを提供してよい。一実装形態では、(例えば、PHPコマンドを用いて)メッセージがパースされ、サードパーティメタデータを判定してよい。
実施形態では、会話プリミティブがメッセージに関連付けられてよい。一実装形態では、会話プリミティブはメッセージの分析、インデクス化、格納等を行うために用いられる要素である。例えば、メッセージ単独で分析されてよく、かつそれ自身の会話プリミティブを形成してよい。別の例では、メッセージは会話を構成する他のメッセージとともに分析されてよく、会話を構成するメッセージが会話プリミティブを形成してよい。一実装形態では、会話プリミティブは、メッセージ、特定の数(例えば、2つ)の先行するメッセージ、及び特定の数(例えば、2つ)の後続のメッセージとして判定されてよい。別の実装形態では、会話プリミティブは、(例えば、グループベースコミュニケーションチャネルにおける)当該メッセージ及び他のメッセージ中で議論されたトピック並びに/又はメッセージの近接度(例えば、メッセージ送信順の近接度、メッセージ送信時間の近接度)の分析に基づいて判定されてよい。
実施形態では、(例えば、会話プリミティブを用いて)メッセージをインデクス化し、検索のさまざまなファセット(すなわち、グループベースコミュニケーションリポジトリ103から検索結果を返す検索クエリ)を容易にするために、上記で説明したように判定されるさまざまなメタデータ及び/又はメッセージコンテンツが用いられてよい。一実装形態では、グループベースコミュニケーションリポジトリ103でのインデクス化を容易にするために、ストレージメッセージはグループベースコミュニケーションサーバ200から送信されてよい。別の実装形態では、メッセージに関連付けられたメタデータが判定されてよく、かつメッセージはグループベースコミュニケーションリポジトリ103内でインデクス化されてよい。一実施形態では、会社又はグループのメッセージが別々に(例えば、他のグループ及び/又は会社と共有されていない、グループ及び/又は会社に関連付けられた別個のインデクスで)インデクス化されるように、メッセージがインデクス化されてよい。一実装形態では、メッセージは(例えば、セキュリティ目的でデータ分離を容易にするために)別個の分散リポジトリでインデクス化されてよい。
メッセージに関連付けられた添付書類がある場合、関連ファイルのファイルコンテンツはグループベースコミュニケーションリポジトリ103内でこのようなファイルをインデクス化し、検索を容易にするために用いられてよい。一実施形態では、会社又はグループのファイルが別個の分散リポジトリでインデクス化されるように、ファイルがインデクス化されてよい。
本開示の実施形態を実装する例示的な装置
例示的なグループベースコミュニケーションサーバ
グループベースコミュニケーションサーバ200は、図2Aに示すグループベースコミュニケーションサーバ200等、1つ以上の演算システムにより具現化されてよい。グループベースコミュニケーションサーバ200は、プロセッサ202、メモリ201、入力/出力回路203、コミュニケーション回路205、及びグループベースコミュニケーション回路209を含んでよい。グループベースコミュニケーションサーバ200は、回路203、205、又は209のうちの1つ以上を用いて本明細書に説明する動作を実行するように構成されてよい。
コンポーネントを機能的限定に関連して説明しているが、特定の実装形態は特定のハードウェアの使用を必ず含むことを理解されたい。また、本明細書で説明するコンポーネントの特定のものは類似又は共通のハードウェアを含んでよいことも理解されたい。例えば、回路の集合毎に重複するハードウェアが必要とならないように、回路の2つの集合の両方が同じプロセッサ、ネットワークインターフェイス、ストレージ媒体等の使用を活用して関連機能を実行することができる。したがって、装置のコンポーネントに関連して本明細書で用いるように「回路」なる用語を用いる場合、本明細書で説明する特定の回路の機能を実行するように構成される特定のハードウェアを含むものと理解されたい。
「回路」なる用語は、ハードウェアを含み、幾つかの実施形態ではハードウェアを設定するソフトウェアを含むものと広く理解されたい。例えば幾つかの実施形態では、「回路」は処理回路、ストレージ媒体、ネットワークインターフェイス、入力/出力デバイス等を含んでよい。幾つかの実施形態では、グループベースサービス210の他の要素が特定の回路の機能を提供し、又は補完してよい。例えば、プロセッサ202は処理機能を提供してよく、メモリ201はストレージ機能を提供してよく、コミュニケーション回路205はネットワークインターフェイス機能を提供してよい、等々である。
幾つかの実施形態では、プロセッサ202(及び/又はプロセッサを補助し、もしくは他の方法でプロセッサに関連付けられたコプロセッサもしくは任意の他の処理回路)が装置のコンポーネント間で情報を渡すためにバスを介してメモリ201と通信してよい。メモリ201は非一時的であってよく、かつ例えば1つ以上の揮発性メモリ及び/又は不揮発性メモリを含んでよい。換言すると、例えばメモリは、電子ストレージデバイス(例えば、コンピュータ可読ストレージ媒体)であってよい。メモリ201は、グループベースコミュニケーションサーバ200が本開示の例示的な実施形態によるさまざまな機能を実行することを可能にする情報、データ、コンテンツ、アプリケーション、命令等を格納するように構成されてよい。
プロセッサ202は複数の異なる方法で具現化されてよく、かつ例えば、独立して実行されるように構成される1つ以上の処理デバイスを含んでよい。これに加えて又はこれに代えて、プロセッサ202は、バスを介して協働して命令、連続送信、及び/又はマルチスレッディングの独立した実行を可能にするように構成される1つ以上のプロセッサを含んでよい。「処理回路」なる用語を用いる場合、シングルコアプロセッサ、マルチコアプロセッサ、装置内部の複数のプロセッサ、及び/又は遠隔すなわち「クラウド」プロセッサを含むものと理解されてよい。
例示的な実施形態では、プロセッサ202はメモリ201内に格納され、又は他の方法によりプロセッサがアクセス可能な命令を実行するように構成されてよい。これに代えて又はこれに加えて、プロセッサ202はハードコード機能を実行するように構成されてよい。したがって、ハードウェアの方法もしくはソフトウェアの方法、又はこれらの組み合わせにより構成されるか否かにかかわらず、プロセッサ202は本開示の実施形態による動作を実行することができる(例えば、回路の形で物理的に具現化された)エンティティを表し、これに応じて構成されてよい。あるいは別の例として、プロセッサ202がソフトウェア命令の実行部として具現化される場合、命令の実行時に本明細書で説明するアルゴリズム及び/又は演算を実行するように、命令はプロセッサ202を具体的に設定してよい。
単なる一例として、プロセッサ202は複数のクライアントデバイス108A~108F(図1に示す)を接続する1つ以上のグループベースコミュニケーションチャネルを保持してこれらの間のメッセージ共有を可能にするように構成されてよい。プロセッサ202は、特定のコミュニケーションチャネル内でクライアントデバイス108A~108Fの間のやり取りの対象となるメッセージが当該クライアントデバイス108A~108Fに適切に発信され、クライアントデバイス108A~108Fを介して提供されるそれぞれのディスプレイウインドウ内に表示されることを確実にする。
さらに、プロセッサ202は、データベース(例えば、グループベースコミュニケーションリポジトリ)内の特定のグループベースコミュニケーションチャネルでやり取りされたメッセージを同期させ、データベース内にメッセージを格納及び/又はインデクス化するように構成されてよい。特定の実施形態では、プロセッサ202は格納メッセージ及び/又はインデクス化メッセージを提供してクライアントデバイス108A~108Fに発信してよい。また、プロセッサ202は、本明細書で考察するさまざまなグループベースコミュニケーションワークスペース及び関連するグループベースコミュニケーションチャネルの間にこのような格納メッセージ及び/又はインデクス化メッセージを提供して分散させてよい。
幾つかの実施形態では、グループベースコミュニケーションサーバ200は、プロセッサ202と通信してユーザーへの出力を提供し、かつ幾つかの実施形態では、ユーザー入力の表示を受信することができる入力/出力回路203を備えてよい。入力/出力回路203は、ユーザーインターフェイス(例えば、グループベースコミュニケーションインターフェイス)を備えてよく、かつディスプレイを備えてよく、かつウェブユーザーインターフェイス、携帯アプリケーション、クライアントデバイス等を備えてよい。幾つかの実施形態では、入力/出力回路203は、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチエリア、ソフトキー、マイク、スピーカ、又は他の入力/出力メカニズムも備えてよい。プロセッサ及び/又はプロセッサを備えるユーザーインターフェイス回路は、プロセッサがアクセス可能なメモリ(例えば、メモリ201等)に格納されたコンピュータプログラム命令(例えば、ソフトウェア及び/又はファームウェア)により1つ以上のユーザーインターフェイス要素の1つ以上の機能を制御するように構成されてよい。
コミュニケーション回路205は、グループベースコミュニケーションサーバ200と通信するネットワーク及び/又は任意の他のデバイス、回路、もしくはモジュールとの間でデータを受信し、かつ/又は送信するように構成されたハードウェア又はハードウェア及びソフトウェアの組み合わせのいずれかで具現化されるデバイス又は回路等の任意の手段であってよい。これに関連して、コミュニケーション回路205は、例えば有線通信ネットワーク又は無線通信ネットワークとの通信を可能にするネットワークインターフェイスを備えてよい。例えば、コミュニケーション回路205は1つ以上のネットワークインターフェイスカード、アンテナ、バス、スイッチ、ルータ、モデム、並びに支援ハードウェア及び/もしくは支援ソフトウェア、又はネットワークを介した通信を可能にすることに適した任意の他のデバイスを含んでよい。これに加えて又はこれに代えて、コミュニケーションインターフェイスは、アンテナとインタラクトしてアンテナを介して信号を送信させ、又はアンテナを介して受信した信号を処理する回路を含んでよい。
例示的なグループベースキャッシュサービス
グループベースキャッシュサービス104は、図2Bに示すグループベースキャッシュサービス210等、1つ以上の演算システムにより具現化されてよい。グループベースキャッシュサービス210は、プロセッサ212、メモリ211、入力/出力回路213、グループベースキャッシュサービス回路214、コミュニケーション回路215、及びユーザー特定モジュール回路216を備えてよい。
幾つかの実施形態では、プロセッサ212(及び/又はプロセッサを補助し、又は他の方法でプロセッサに関連付けられたコプロセッサもしくは任意の他の処理回路)がグループベースキャッシュサービス210のコンポーネント間で情報を渡すためにバスを介してメモリ211と通信してよい。メモリ211は非一時的であってよく、かつ例えば1つ以上の揮発性メモリ及び/又は不揮発性メモリを含んでよい。換言すると、例えばメモリは、電子ストレージデバイス(例えば、コンピュータ可読ストレージ媒体)であってよい。メモリ211は、グループベースキャッシュサービス210が本開示の例示的な実施形態によるさまざまな機能を実行することを可能にする情報、データ、コンテンツ、アプリケーション、命令等を格納するように構成されてよい。
プロセッサ212は複数の異なる方法で具現化されてよく、かつ例えば、独立して実行されるように構成される1つ以上の処理デバイスを含んでよい。これに加えて又はこれに代えて、プロセッサ212は、バスを介して協働して命令、連続送信、及び/又はマルチスレッディングの独立した実行を可能にするように構成される1つ以上のプロセッサを含んでよい。「処理回路」なる用語を用いる場合、シングルコアプロセッサ、マルチコアプロセッサ、装置内部の複数のプロセッサ、及び/又は遠隔すなわち「クラウド」プロセッサを含むものと理解されてよい。
例示的な実施形態では、プロセッサ212はメモリ211内に格納され、又は他の方法によりプロセッサ212がアクセス可能な命令を実行するように構成されてよい。これに代えて又はこれに加えて、プロセッサ212はハードコード機能を実行するように構成されてよい。したがって、ハードウェアの方法もしくはソフトウェアの方法、又はこれらの組み合わせにより構成されるか否かにかかわらず、プロセッサ212は本開示の実施形態による動作を実行することができる(例えば、回路の形で物理的に具現化された)エンティティを表し、これに応じて構成されてよい。あるいは別の例として、プロセッサ212がソフトウェア命令の実行部として具現化される場合、命令の実行時に本明細書で説明するアルゴリズム及び/又は演算を実行するように、プロセッサ202を具体的に設定してよい。
単なる一例として、プロセッサ212はクライアントデバイス108A~108F(図1に示す)から複数のユーザー特定クエリを取り出し、ユーザー特定クエリの解決を可能にするように構成されてよい。プロセッサ212は、特定のクライアントデバイス108A~108Fを対象とするユーザーステータスの判定が当該クライアントデバイス108A~108Fに適切に発信され、クライアントデバイス108A~108Fを介して提供されるそれぞれのディスプレイウインドウ内にグループベースコミュニケーションインターフェイスをレンダリングすることを確実にする。より具体的には、幾つかの実施形態では、既知ユーザー特定インターフェイス又は制限付きユーザー特定インターフェイスのうちの1つが表示されたグループベースコミュニケーションインターフェイスにレンダリングされ、クライアントデバイス108A~108Fのウインドウが表示されるように、ユーザーステータスの判定が発信される。
図示したグループベースキャッシュサービス210は、プロセッサ212と通信してユーザーへの出力を提供し、かつ幾つかの実施形態では、ユーザー入力の表示を受信することができる入力/出力回路213を備える。入力/出力回路213は、ユーザーインターフェイス(例えば、グループベースコミュニケーションインターフェイス)を備えてよく、かつディスプレイを備えてよく、かつウェブユーザーインターフェイス、携帯アプリケーション、クライアントデバイス等を備えてよい。幾つかの実施形態では、入力/出力回路213は、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチエリア、ソフトキー、マイク、スピーカ、又は他の入力/出力メカニズムも備えてよい。プロセッサ及び/又はプロセッサを備えるユーザーインターフェイス回路は、プロセッサがアクセス可能なメモリ(例えば、メモリ211等)に格納されたコンピュータプログラム命令(例えば、ソフトウェア及び/又はファームウェア)により1つ以上のユーザーインターフェイス要素の1つ以上の機能を制御するように構成されてよい。
コミュニケーション回路215は、グループベースキャッシュサービス210と通信するネットワーク及び/又は任意の他のデバイス、回路、もしくはモジュールとの間でデータを受信し、かつ/又は送信するように構成されるハードウェア又はハードウェア及びソフトウェアの組み合わせのいずれかで具現化されるデバイス又は回路等の任意の手段であってよい。これに関連して、コミュニケーション回路215は、例えば有線通信ネットワーク又は無線通信ネットワークとの通信を可能にするネットワークインターフェイスを備えてよい。例えば、コミュニケーション回路215は1つ以上のネットワークインターフェイスカード、アンテナ、バス、スイッチ、ルータ、モデム、並びに支援ハードウェア及び/もしくは支援ソフトウェア、又はネットワークを介した通信を可能にすることに適した任意の他のデバイスを含んでよい。これに加えて又はこれに代えて、コミュニケーションインターフェイスは、アンテナとインタラクトしてアンテナを介して信号を送信させ、又はアンテナを介して受信した信号を処理する回路を含んでよい。
ユーザー特定モジュール回路216は、ユーザー特定クエリを受信し、対象ユーザー識別子をユーザーステータスキャッシュと比較し、クライアント停止命令を送信し、対象ユーザー識別子をグループ接続アレイと比較させ、かつ任意の対象ユーザー識別子について既知ステータス、未知ステータス、保留ステータス、解決済み既知ステータス、又は解決済み未知ステータスのうちのいずれか1つを判定するように構成されるハードウェア又はハードウェア及びソフトウェアの組み合わせのいずれかで組み合わされるデバイス又は回路等の任意の手段であってよい。ユーザー特定モジュール回路は、要求クライアントデバイスで、既知ユーザーステータスインターフェイス及び/又は制限付きユーザーステータスインターフェイスを含むグループベースコミュニケーションインターフェイスをレンダリングさせるようにさらに構成される。ユーザー特定回路216は、ネットワーク106(図1に示す)、グループベースコミュニケーションシステム102(図1に示す)、及びクライアントデバイス108A~108F(図1に示す)と通信して本明細書で考察するコミュニケーション装置、ユーザー特定モジュール116(図1に示す)、及びグループベースキャッシュサービス210に起因する動作を実行するようにさらに構成される。
グループベースキャッシュサービス回路214は、クライアントデバイスにレンダリングされたグループベースコミュニケーションインターフェイスへのサービス提供を支援する際に当該クライアントデバイスのネットワーク通信用に低いレイテンシのキャッシュサービスを提供するように構成されるハードウェア又はハードウェア及びソフトウェアの組み合わせのいずれかで組み合わされるデバイス又は回路等の任意の手段であってよい。グループベースキャシュ回路は、2018年5月18日に出願されたMethod, Apparatus, and Computer Program Product for a Scalable Group-Based Communication System with a Reduced Client Memory Footprintなる名称の共同所有の米国特許出願第15/983674号明細書に説明されるグループベースコミュニケーションロードバランス回路、グループベースコミュニケーションエッジキャッシュ回路、グループベースコミュニケーションゲートウェイ回路、及びグループベースコミュニケーションステータスチェッカ回路のうちの1つ以上により具現化されてよい。当該共同所有の特許出願の内容はその全体が参照により本明細書に組み込まれる。
例示的なクライアントデバイス
クライアントデバイス108A~108Fは、図2Cに示すクライアントデバイス220等、1つ以上の演算コンポーネントにより具現化されてよい。クライアントデバイス220は上記で定義した任意の演算デバイスであってよい。図示したクライアントデバイス220は、プロセッサ222、メモリ221、入力/出力回路223、コミュニケーション回路225、及びグループベースコミュニケーションアプリ226を備える。
幾つかの実施形態では、プロセッサ222(及び/又はプロセッサを補助し、又は他の方法でプロセッサに関連付けられたコプロセッサもしくは任意の他の処理回路)が装置のコンポーネント間で情報を渡すためにバスを介してメモリ221と通信してよい。メモリ221は非一時的であってよく、かつ例えば1つ以上の揮発性メモリ及び/又は不揮発性メモリを含んでよい。換言すると、例えばメモリは、電子ストレージデバイス(例えば、コンピュータ可読ストレージ媒体)であってよい。メモリ221は、クライアントデバイス220が本開示の例示的な実施形態によるさまざまな機能を実行することを可能にする情報、データ、コンテンツ、アプリケーション、命令等を格納するように構成されてよい。
プロセッサ222は複数の異なる方法で具現化されてよく、かつ例えば、独立して実行されるように構成される1つ以上の処理デバイスを含んでよい。これに加えて又はこれに代えて、プロセッサ222は、バスを介して協働して命令、連続送信、及び/又はマルチスレッディングの独立した実行を可能にするように構成される1つ以上のプロセッサを含んでよい。「処理回路」なる用語を用いる場合、シングルコアプロセッサ、マルチコアプロセッサ、装置内部の複数のプロセッサ、及び/又は遠隔すなわち「クラウド」プロセッサを含むものと理解されてよい。
例示的な実施形態では、プロセッサ222はメモリ221内に格納され、又は他の方法によりプロセッサがアクセス可能な命令を実行するように構成されてよい。これに代えて又はこれに加えて、プロセッサ222はハードコード機能を実行するように構成されてよい。したがって、ハードウェアの方法もしくはソフトウェアの方法、又はこれらの組み合わせにより構成されるか否かにかかわらず、プロセッサ222は本開示の実施形態による動作を実行することができる(例えば、回路の形で物理的に具現化された)エンティティを表し、これに応じて構成されてよい。あるいは別の例として、プロセッサ222がソフトウェア命令の実行部として具現化される場合、命令の実行時に本明細書で説明するアルゴリズム及び/又は演算を実行するように、命令はプロセッサ222を具体的に設定してよい。
単なる一例として、プロセッサ222はクライアントデバイス108A~108F(図1に示す)から複数のユーザー特定クエリを取り出し、ユーザー特定クエリの解決を可能にするように構成されてよい。
コミュニケーション回路225は、グループベースキャッシュサービス210と通信するネットワーク及び/又は任意の他のデバイス、回路、もしくはモジュールとの間でデータを受信し、かつ/又は送信するように構成されたハードウェア又はハードウェア及びソフトウェアの組み合わせのいずれかで具現化されたデバイス又は回路等の任意の手段であってよい。これに関連して、コミュニケーション回路225は、例えば有線通信ネットワーク又は無線通信ネットワークとの通信を可能にするネットワークインターフェイスを備えてよい。例えば、コミュニケーション回路225は1つ以上のネットワークインターフェイスカード、アンテナ、バス、スイッチ、ルータ、モデム、並びに支援ハードウェア及び/もしくは支援ソフトウェア、又はネットワークを介した通信を可能にすることに適した任意の他のデバイスを含んでよい。これに加えて又はこれに代えて、コミュニケーションインターフェイスは、アンテナとインタラクトしてアンテナを介して信号を送信させ、又はアンテナを介して受信した信号を処理する回路を含んでよい。
グループベースコミュニケーションサーバ200及び/又はグループベースキャッシュサービス210によりクライアントデバイス220から取り出された電子データは、さまざまな形態及びさまざまな方法により提供されてよい。例えば、クライアントデバイス220はデスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、ネットブック、タブレットコンピュータ、ウェラブルコンピュータ等を含んでよい。
クライアントデバイス220がスマートフォン又はタブレット等の携帯デバイスである実施形態では、クライアントデバイス220は「グループベースコミュニケーションアプリ」226を実行してグループベースコミュニケーションシステム102(図1に示す)とインタラクトしてよい。典型的には、このようなアプリはタブレット又はスマートフォン等の携帯デバイスで実行するように設計される。例えば、iOS(登録商標)、Android(登録商標)、又はWindows(登録商標)等、携帯デバイスのオペレーティングシステムで実行されるアプリが提供されてよい。典型的には、これらのプラットフォームは、アプリが互いに、並びに携帯デバイスの特定のハードウェアコンポーネント及びソフトウェアコンポーネントと通信することを可能にする枠組みを提供する。例えば、上記の携帯オペレーティングシステムはそれぞれ、位置情報サービス回路、有線・無線ネットワークインターフェイス、ユーザー連絡先、及び他のアプリケーションとインタラクトする枠組みを提供する。典型的には、アプリの外部で実行されるハードウェアモジュール及びソフトウェアモジュールとの通信は、携帯デバイスのオペレーティングシステムにより提供されるアプリケーションプログラミングインターフェイス(API)を介して提供される。
これに加えて又はこれに代えて、クライアントデバイス220は、ウェブブラウザを介してグループベースコミュニケーションシステム102とインタラクトしてよい。さらに別の例として、クライアントデバイス220は、グループベースコミュニケーションシステム102をインターフェイス接続するように設計されたさまざまなハードウェア又はファームウェアを含んでよい。
図示した実施形態では、クライアントデバイス220は、プロセッサを介し、かつグループベースコミュニケーションアプリ226により提供されたデータ及び命令を用いて1つ以上のユーザー特定クエリを生成し、グループベースキャッシュサービス104(図1に示す)のユーザー特定モジュール116(図1に示す)へ送信するように構成される。さまざまな実装形態では、ユーザー特定クエリはコミュニケーションネットワーク106経由でクライアントデバイス220により直接にグループベースキャッシュサービス104に提供されてよく、又はユーザー特定クエリはメッセージサーバ(不図示)等の手段を介してグループベースコミュニケーションシステム102に送信されてよい。
一実装形態では、ユーザー特定クエリは、要求ユーザー識別子、対象ユーザー識別子、グループ識別子、メッセージコンテンツ(例えば、テキスト、絵文字、画像、リンク)、添付書類(例えば、ファイル)、メッセージヒエラルキデータ(例えば、メッセージは別のメッセージへの返信であってよい)、サードパーティメタデータ等のデータを含む。対象ユーザー識別子は、対象ユーザーの予想ユーザーステータスを規定するバイナリ有効性インジケータ(例えば、既知ステータスを有すると予想される対象ユーザーについては正数、かつ未知ステータスを有すると予想される対象ユーザーについては負の数)を含んでよい。
実施形態では、クライアントデバイス220は、以下に提供するジャバスクリプトオブジェクトノーテーション(「JSON」)書式付きデータを含む、実質的に(セキュア)ハイパーテキスト転送プロトコル(「HTTP(S)」)POSTメッセージの形式の次のような例示的なユーザー特定クエリを提供してもよい。
特に、上記で提供した例示的なユーザー特定クエリは、実際には2つの要求を含む。第1の要求は、要求ユーザー識別子と対象ユーザー識別子とのインタラクトが認定されているかの判定を対象とする。第2の要求は、クライアントデバイスによるローカルプロファイルの更新と、クライアントデバイスがローカルキャッシュ内に有していない対象ユーザー識別子に関するユーザープロファイル情報のフェッチとを対象とする。
実施形態では、グループベースキャッシュサービス104(例えば、ユーザー特定モジュール116)が、ユーザー特定クエリに応答して以下に提供するエクステンシブルマークアップランゲージ(「XML」)書式付きデータを含む、実質的に(セキュア)ハイパーテキスト転送プロトコル(「HTTP(S)」)POSTメッセージの形式の次のような例示的なユーザーステータス判定を提供してよい。
クライアントデバイス220は、既知ユーザー特定インターフェイス及び制限付きユーザー特定インターフェイスを含むグループベースコミュニケーションインターフェイスをレンダリングすることに適したディスプレイを含んでよい。ディスプレイは、視覚的及び/又は触覚的形態の情報を提示するように構成される出力部であってよい。これには、アクティブディスプレイ(例えば、LCDスクリーン、ウォッチフェイス、及びコンピュータモニタ、ELD、LED、OLED、QLED、TFT)等の電子的視覚ディスプレイが含まれるが、これらに限定されない。例えば、クライアントデバイス220のディスプレイは入力・出力回路223と通信して上記で考察したもの等のユーザー特定インターフェイスを含むグループベースコミュニケーションインターフェイスをレンダリングさせるように構成されてよい。
上記にように、かつ本開示に基づいて理解されるように、本開示の実施形態は、方法、携帯デバイス、フロントエンドグラフィックユーザーインターフェイス、バックエンドネットワークデバイス等として構成されてよい。したがって、実施形態は、全体がハードウェアであるか、又はソフトウェア及びハードウェアの任意の組み合わせを含むさまざまな手段を備えてよい。さらに、実施形態は、少なくとも1つの非一時的コンピュータ可読ストレージ媒体内にコンピュータ可読プログラム命令(例えば、コンピュータソフトウェア)を具現化させる、当該ストレージ媒体に格納されたコンピュータプログラム製品の形態を取ってよい。同様に、実施形態は少なくとも1つの非一時的コンピュータ可読ストレージ媒体に格納されたコンピュータプログラムコードの形態を取ってよい。非一時的ハードディスク、CD-ROM、フラッシュメモリ、光ストレージデバイス、又は磁気ストレージデバイスを含む任意の適したコンピュータ可読ストレージ媒体が利用されてよい。
理解されるように、機械を製造するために任意のこのようなコンピュータプログラム命令及び/又は他の種類のコードがコンピュータ、プロセッサ、又は他のプログラマブル装置回路に読み込まれ、これにより機械に格納されたコードを実行するコンピュータ、プロセッサ、又は他のプログラマブル回路が本明細書に説明するものを含むさまざまな機能を実装する手段を形成してよい。
本明細書に説明する演算システムは、クライアント及びサーバを含んでよい。一般に、クライアント及びサーバは互いに遠く離れており、典型的にはコミュニケーションネットワークを介してインタラクトする。クライアント及びサーバの関係は、それぞれのコンピュータで起動され、互いにクライアントとサーバの関係を有するコンピュータプログラムにより生じる。幾つかの実施形態では、サーバは(例えば、クライアントデバイスとインタラクトするユーザーに情報/データを表示し、かつユーザーからユーザー入力を受信する目的で)情報/データ(例えば、HTMLページ)をクライアントデバイスへ送信する。クライアントデバイスで生成された情報/データ(例えば、ユーザーインタラクションの結果)を、サーバでクライアントデバイスから受信することができる。
本明細書は多くの具体的な実装形態の詳細を含むが、これらは主張することができる任意の発明の範囲に対する限定ではなく、特定の発明の特定の実施形態に固有な特徴の説明として解釈されるべきである。別個の実施形態の文脈で本明細書において説明する特定の特徴を、単一の実施形態で組み合わせて実装することもできる。これとは逆に、単一の実施形態の文脈で説明するさまざまな特徴を、複数の実施形態で別々に又は任意の適した下位の組み合わせでも実行することができる。さらに、特徴は特定の組み合わせで機能するものとして上記で説明し、しかも最初にこのようなものとして主張する場合があるが、幾つかの場合には、主張する組み合わせの1つ以上の特徴を当該組み合わせから削除し、かつ主張する組み合わせが下位の組み合わせ又は下位の組み合わせの改変を対象とする場合がある。
同様に、図面に特定の順序で動作を図示しているが、これは、別途の記載がない限り、望ましい結果を達成するためにこのような動作を、示した特定の順序又はシーケンス順で実行し、又は示した動作のすべてを実行することを要求するものと理解されるべきではない。一定の状況では、多重タスク処理及び並列処理が有利な場合がある。さらに、上記の実施形態のさまざまなシステムコンポーネントを分離したとしても、すべての実施形態でこのような分離を要求するものと理解されるべきではなく、説明するプログラムコンポーネント及びシステムを単一のソフトウェア製品に全体として統合し、又は複数のソフトウェア製品にパッケージ化することができるものと理解されたい。本明細書で示す1つ以上の流れ図において折れ線で示す任意の動作ステップは、図示する実施形態を目的とする任意のものである。
このように、主題の具体的な実施形態を説明している。他の実施形態がこの後の特許請求の範囲内に包含される。幾つかの場合、特許請求の範囲で列挙される動作を、異なる順序で実行して望ましい結果を達成することができる。さらに、添付の図面に図示する処理は、別途の記載がない限り、望ましい結果を達成するために、示した特定の順序又はシーケンス順を必ずしも要求するものではない。特定の実装形態では、多重タスク処理及び並列処理が有利な場合がある。
例示的な動作
本開示の実施形態を含むグループベースコミュニケーション装置及び例示的な回路をしたが、例示的なコミュニケーション装置としてのユーザー特定モジュール116(図1に示す)は、グループベースコミュニケーションシステムにおいて複数の方法で動作シーケンスの集合を継続的に実行してもよいことを理解されたい。
図3Aは、本開示の一実施形態により、グループベースコミュニケーションインターフェイスに関連付けられたユーザー特定クエリを取り出し、かつ対象ユーザー識別子を、要求ユーザー識別子に関連付けられたユーザーステータスキャッシュと比較して既知ステータス、未知ステータス、又は保留ステータスのうちの1つを判定するために実行され、又は実施される処理300の一連の動作又は処理ブロックを大まかに示す流れ図である。
図3Aに示す実施形態では、図示した処理は、グループベースコミュニケーションインターフェイスに関連付けられたユーザー特定クエリを取り出すことを含むブロック302で開始する。当該ユーザー特定クエリは、グループベースコミュニケーションインターフェイスのグループベースコミュニケーションチャネル内で対象ユーザーにより投稿されたメッセージのレンダリングを試みるクライアントデバイスで起動されるグループベースコミュニケーションアプリで生成されてよい。ユーザー特定クエリは、とりわけ、要求ユーザー識別子及び対象ユーザー識別子を含む。要求ユーザー識別子は、レンダリングされるグループベースコミュニケーションインターフェイスの閲覧対象となるクライアントデバイスの操作ユーザーに関連付けられる。対象ユーザー識別子は、対象のメッセージを投稿した対象ユーザーに関連付けられる。
ブロック304で、図示した処理300は、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたユーザーステータスキャッシュと比較して対象ユーザー識別子の既知ステータス、未知ステータス、又は保留ステータスのうちの1つを判定することをさらに含む。
図3B-1~図3B-3は、方法300により表される例示的なデータフローの信号図である。すなわち、図3B-1~図3B-3は、一実施形態により、ユーザー特定照会を取り出して対象ユーザー識別子を、要求ユーザー識別子に関連付けられたユーザーステータスキャッシュと比較し、対象ユーザー識別子の既知ステータス、未知ステータス、又は保留ステータスのうちの1つを判定する際のクライアントデバイス、グループベースキャッシュサービス、及びユーザーステータスキャッシュの間のデータフローインタラクションを示す。
図3B-1に図示した例では、方法300を、クライアントデバイス108C、グループベースキャッシュサービス104(より具体的には、グループベースキャッシュサービス104のユーザー特定モジュール116)、及びユーザーステータスキャッシュ107により実行されるものとして説明している。図1に関連して上述したように、クライアントデバイス108Cは組織A(例えば、Slack Corporation)のユーザーに関連付けられており、かつクライアントデバイス108Dは組織B(例えば、ACME Corporation)のユーザーに関連付けられている。クライアントデバイス108C及び108Dに関連付けられたユーザーは、グループベースコミュニケーションシステムにより外部共有チャネルのメンバシップを認定されている。例えば、組織Aは人材グループベースコミュニケーションワークスペース内に給与問題に注力するグループベースコミュニケーションチャネル(すなわち、#HR-payroll-issues)を作成し、給与サービス供給業者である組織Bのクライアントデバイス108Dに関連付けられたユーザーに参加の招待をしてよい。
グループベースコミュニケーションシステムにおけるユーザー間の関係に関して本明細書で言及される「認定される」なる用語は、それぞれのユーザー、例えばクライアントデバイス108C及び108Dに関連付けられたユーザーがグループベースコミュニケーションシステムにより(例えば、メンバ又はゲストのプロファイル登録処理により)認証され、かつそれぞれのユーザーが共通のグループベースコミュニケーションチャネル、共通のグループベースコミュニケーションワークスペースに参加し、又はグループベースコミュニケーションシステムを介して直接のメッセージコミュニケーションに関与することにより互いに情報を共有し、又は別の方法でインタラクトすることに同意した状況を指す。
以下に考察するように、図示したグループベースキャッシュサービス104は、動作302で例えば、クライアントデバイス108Dに関連付けられたユーザーが図5C-1~図5C-3に示す#HR-payroll-issuesグループベースコミュニケーションチャネルにメッセージを投稿する際に生成されたユーザー特定クエリをクライアントデバイス108Cから取り出し、又は受信する。次に動作304で、グループベースキャッシュサービス104のユーザー特定モジュール116は、対象ユーザー識別子(すなわち、クライアントデバイス108Dにより投稿されたメッセージに関連付けられたユーザー識別子)を、要求ユーザー識別子(すなわち、クライアントデバイス108Cに関連付けられたユーザー識別子)に関連付けられたユーザーステータスキャッシュ107と比較させてよい。図3B-1に図示するように、処理300は、動作306でグループベースキャッシュサービス104のユーザー特定モジュール116が対象ユーザー識別子の既知ステータスを判定したことに伴い終了する。これは、クライアントデバイス108Dを操作する対象ユーザーがグループベースシステムにより、#HR-payroll-issuesグループベースコミュニケーションチャネルのメンバシップを認定され、したがってクライアントデバイス108Cの操作ユーザーに「既知」であることを考えれば当然のことである。
以下に考察するように、図3B-2に図示した例では、図示したグループベースキャッシュサービス104は、動作302で例えば、クライアントデバイス108Dに関連付けられたユーザーが、#HR-payroll-issuesグループベースコミュニケーションチャネルに、図5C-1及び図5C-4に示すクライアントデバイス108Eに関連付けられたユーザー等、組織Bの同僚をタグ付けしたメッセージを投稿する際に生成されたユーザー特定クエリを、クライアントデバイス108Cから取り出し、又は受信する。次に動作304で、グループベースキャッシュサービス104のユーザー特定モジュール116は、対象ユーザー識別子(すなわち、クライアントデバイス108Eに関連付けられたタグ付きの同僚に関連付けられたユーザー識別子)を、要求ユーザー識別子(すなわち、クライアントデバイス108Cに関連付けられたユーザー識別子)に関連付けられたユーザーステータスキャッシュ107と比較させてよい。図3B-2に図示するように、処理300は、動作308でグループベースキャッシュサービス104のユーザー特定モジュール116が対象ユーザー識別子の未知ステータスを判定したことに伴い終了してよい。これは、クライアントデバイス108Eを操作する対象ユーザー(すなわち、クライアントデバイス108Dに関連付けられたユーザーにより投稿されたメッセージ中で言及されたユーザー)がグループベースシステムにより#HR-payroll-issuesグループベースコミュニケーションチャネルのメンバシップを認定されておらず、したがってグループベースコミュニケーションシステムにより以前に、クライアントデバイス108Cの操作ユーザーに「未知」として指定されたことを考えれば当然のことである。
図3B-3に図示した例では、図示したグループベースキャッシュサービス104は、動作302で、例えば、クライアントデバイス108Dに関連付けられたユーザーが、#HR-payroll-issuesグループベースコミュニケーションチャネルに、クライアントデバイス108Fに関連付けられたユーザー等、組織Bの同僚をタグ付けしたメッセージを投稿する際に生成されたユーザー特定クエリをクライアントデバイス108Cから取り出し、又は受信する。次に動作304で、グループベースキャッシュサービス104のユーザー特定モジュール116は、対象ユーザー識別子(すなわち、クライアントデバイス108Fに関連付けられたタグ付きの同僚に関連付けられたユーザー識別子)を、要求ユーザー識別子(すなわち、クライアントデバイス108Cに関連付けられたユーザー識別子)に関連付けられたユーザーステータスキャッシュ107と比較させてよい。図3B-3に図示するように、処理300は、動作310でグループベースキャッシュサービス104のユーザー特定モジュール116が対象ユーザー識別子の保留ステータスを判定したことに伴い終了してよい。この例では、保留ステータスが判定される。なぜなら、ユーザーステータスキャッシュ107が、要求ユーザー識別子(例えば、クライアントデバイス108Cに関連付けられた操作ユーザー)に関して対象ユーザー識別子(例えば、クライアントデバイス108Fに関連付けられたユーザー)の既知又は未知のシステムステータス指定を含まないからである。幾つかの実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は、ユーザーステータスキャッシュ107に対象ユーザー識別子の保留ステータスを格納させうる(図示せず)。
図4Aは、本開示の一実施形態により、対象ユーザー識別子の既知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングさせるために図3B-1の処理300の後に実行され、又は実施される処理400の動作を大まかに示す流れ図である。図示した処理は、上記の処理300のブロック304による対象ユーザー識別子の既知ステータスの判定後にブロック402で開始する。
図4Bは方法400により表される例示的なデータフローの信号図である。すなわち、図4Bは、対象ユーザー識別子の既知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングさせる際のグループベースキャッシュサービスのユーザー特定モジュール及びクライアントデバイスのデータフロー動作を示す。方法400を、グループベースキャッシュサービス104のユーザー特定モジュール116及びクライアントデバイス108Cにより実行されるものとして説明する。図示した実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は、動作402でグループベースキャッシュサービスのメモリにおいて対象ユーザー識別子に関連付けられた既知ユーザー特定オブジェクトを検査する。幾つかの実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は任意の動作404により示すように、グループベースコミュニケーションシステム102のグループベースコミュニケーションリポジトリ103において対象ユーザー識別子に関連付けられた既知ユーザー特定オブジェクトを検査することができる。以下に考察するように、既知ユーザー特定オブジェクトが取り出されると、動作406で既知ユーザー特定オブジェクトはクライアントデバイス108Cへ送信され、例えば図5C-2及び図5C-3に示すようにグループベースコミュニケーションインターフェイス内に対象ユーザー識別子の既知ユーザー特定インターフェイスをレンダリングさせる。
図5Aは、本開示の一実施形態により、対象ユーザー識別子の未知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングさせるために図3B-2の処理300の後に実行され、又は実施される処理500の動作を大まかに示す流れ図である。図示する処理は、上記の処理300のブロック304による対象ユーザー識別子の未知ステータスの判定後にブロック502で開始する。
図5Bは方法500により表される例示的なデータフローの信号図である。すなわち、図5Bは、対象ユーザー識別子の未知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングさせる際のグループベースキャッシュサービスのユーザー特定モジュール及びクライアントデバイスのデータフロー動作を示す。方法500を、グループベースキャッシュサービス104のユーザー特定モジュール116及びクライアントデバイス108Cにより実行されるものとして説明する。図示した実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は、動作502でグループベースキャッシュサービス104のメモリにおいて対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを検査する。幾つかの実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は任意の動作504により示すように、グループベースコミュニケーションシステム102のグループベースコミュニケーションリポジトリ103において対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを検査することができる。以下に考察するように、制限付きユーザー特定オブジェクトが取り出されると、動作506でクライアントデバイス108Cへ送信され、例えば図5C-4に示すようにグループベースコミュニケーションインターフェイス内に対象ユーザー識別子の制限付きユーザー特定インターフェイスをレンダリングさせる。
図5C-1~図5C-4に本開示の実施形態により構成される例示的なグループベースコミュニケーションインターフェイスを図示する。図5C-1には、図示する#HR-payroll-issuesグループベースコミュニケーションチャネル560等の外部共有チャネルにおいてユーザー間の通信及び協力を容易にするように構成される例示的なグループベースコミュニケーションインターフェイス550を図示する。図示したグループベースコミュニケーションインターフェイス550は、チャネルリストペイン552及びメッセージングペイン554を含む。図示した実施形態では、#HR-payroll-issuesチャネルに投稿されたグループベースコミュニケーションメッセージ562及び564がメッセージングペイン554にレンダリングされる。
図示した例では、操作ユーザーは“Kevin Flannery”という名前であり、グループベースコミュニケーションインターフェイス550はこのユーザーの立場でレンダリングされる。上記で考察した例の文脈では、Kevin FlanneryはSlack Corporationの従業員であり、かつクライアントデバイス108Cに関連付けられている。Flannery氏は、クライアントデバイス108Cを用いてグループベースメッセージングコミュニケーション562を#HR-payroll-issuesグループベースコミュニケーションチャネル560に投稿した。
クライアントデバイス108Dに関連付けられている“Jacob Warren”という名前のユーザーにより返信のグループベースコミュニケーションメッセージ564が投稿された。上記で考察したように、クライアントデバイス108DはACME Corporationにより雇用されているユーザー(すなわち、Jacob Warren)に関連付けられている。図示したグループベースコミュニケーションメッセージ564はクライアントデバイス108Eに関連付けられたユーザー(例えば、@jon)の@mentionを含む。本発明の一実施形態では、グループベースコミュニケーションメッセージ564のヘッダ(すなわち、示したようにJacob Warrenの名前を含むハイパーリンク)の操作ユーザー(すなわち、Flannery氏)によるユーザー関与(例えば、非キーストローク関与)により、クライアントデバイス108Cはグループベースコミュニケーションインターフェイス550に関連付けられたユーザー特定クエリを生成するように動作する。この場合、ユーザー特定クエリはKevin Flanneryに関連付けられた要求ユーザー識別子と、Jacob Warrenに関連付けられた対象ユーザー識別子とを含む。別の実施形態では、以下で図5C-4に関連して考察するように、操作ユーザー(すなわち、Flannery氏)によるグループベースコミュニケーションメッセージ564の@mention(すなわち、示したように@jonを含むハイパーリンク)のユーザー関与(例えば、非キーストローク関与)により、クライアントデバイス108Cはグループベースコミュニケーションインターフェイス550に関連付けられたユーザー特定クエリを生成するように動作する。この場合、ユーザー特定クエリはKevin Flanneryに関連付けられた要求ユーザー識別子と、Jon Kittle(すなわち、クライアントデバイス108Eに関連付けられたユーザー)に関連付けられた対象ユーザー識別子とを含む。
図5C-2及び図5C-3に、本開示の実施形態により図4Bの処理400の後にレンダリングされる例示的な既知ユーザー特定インターフェイス570,570’を図示する例示的なグループベースコミュニケーションインターフェイスを示す。まず、図5C-2に図示した実施形態を見ると、グループベースコミュニケーションメッセージ564に対する、ヘッダ内に配置されたハイパーリンク名“Jacob Warren”という操作ユーザーによるユーザー関与により、上記の処理300に関連して考察したように、ユーザー特定クエリを生成させ、クライアントデバイス108Cによりグループベースキャッシュサービスのユーザー特定モジュールへ送信された。示したように、Flannery氏に関連付けられた要求ユーザー識別子の立場でJacob Warrenに関連付けられた対象ユーザー識別子の既知ステータスを特定すると、クライアントデバイス108Cは、対象ユーザー識別子に関連付けられた既知ユーザー特定オブジェクトを取り出し、図示した既知ユーザー特定インターフェイス570をグループベースコミュニケーションインターフェイス550に表示する。
図示した既知ユーザー特定インターフェイス570は、モーダル要素又はポップアップ要素としてのグラフィックユーザーインターフェイスのスタイルになっており、かつユーザー写真もしくはアバターコンポーネント576、既知ユーザープロファイルコンポーネント574、及び直接通信要素578を含む。図示した既知ユーザー特定インターフェイス570は、事務所の位置、監督者名、直通電話番号、及び共通のプロジェクト(すなわち、対象ユーザーと操作ユーザーとの間で共有されるプロジェクト)等、図示した既知ユーザープロファイルコンポーネント574において対象ユーザープロファイルから引き出されたプライベート情報、秘密情報、又は内部情報を含む。図示した既知ユーザー特定インターフェイスは、操作ユーザー(すなわち、Flannery氏)が対象ユーザー(すなわち、Jacob Warren)と即時の直接通信を開始することを可能にする直接通信要素578(すなわち、直接メッセージング開始ボタン及び直通通話開始ボタン)も含む。
図5C-3に本発明の別の実施形態により構築されるグループベースコミュニケーションインターフェイス550’の既知ユーザー特定インターフェイス570’を図示する。図示したグループベースコミュニケーションインターフェイス550’は、チャネルリストペイン552、メッセージングペイン554、及びフレックスペイン556を備える。図示した既知ユーザー特定インターフェイス570’は、図5C-2に関連して示したモーダル又はポップアップとしてではなくフレックスペイン556内にレンダリングされる。図示した既知ユーザー特定インターフェイス570’は、ユーザー写真又はアバターコンポーネント576’、既知ユーザープロファイルコンポーネント574’、及び直接通信要素578’を備える。図示した既知ユーザー特定インターフェイス570’は、図示した既知ユーザープロファイルコンポーネント574’において対象ユーザープロファイルから引き出されたプライベート情報、秘密情報、又は内部情報、例えばユーザーのショートネーム又はハンドルネーム、タイトル、現地時間、事務所の位置、監督者名、直通電話番号、電子メールアドレス、部署、共通のプロジェクト(すなわち、対象ユーザーと操作ユーザーとの間で共有されるプロジェクト)、共有ワークスペース(すなわち、対象ユーザーと操作ユーザーとの間で共有されるワークスペース)、及び本開示を念頭にして当業者には明らかな他の内部情報を含む。図示した既知ユーザー特定インターフェイスは、操作ユーザー(すなわち、Flannery氏)が対象ユーザー(すなわち、Jacob Warren)と即時の直接通信を開始することを可能にする直接通信要素578’(すなわち、直接メッセージング開始ボタン及び直通通話開始ボタン)も含む。
幾つかの実施形態では、既知ユーザー特定インターフェイス570(図5C-2に示す)及び既知ユーザー特定インターフェイス570’(図5C-3に示す)は互いの代替形態として機能することができる。例えば、クライアントデバイス108Cは一方又は他方のみをグループベースコミュニケーションインターフェイスに表示するように構成されてよい。しかし、他の実施形態では、既知ユーザー特定インターフェイス570は一次的インターフェイスとして機能することができるが、既知ユーザー特定インターフェイス570’は二次的インターフェイスとして機能する。例えば、図5C-1におけるグループベースコミュニケーションメッセージ564に対する、ヘッダ内に配置されたハイパーリンク名「Jacob Warren」の初期的操作ユーザー関与により、クライアントデバイス108Cに既知ユーザー特定インターフェイス570のモーダルフォームをレンダリングさせてよい。図5C-3に示すように、既知ユーザー特定インターフェイス570のアバターコンポーネント576又は既知ユーザープロファイルコンポーネント574のさらなる操作ユーザー関与により、クライアントデバイス108Cに既知ユーザー特定インターフェイス570を閉じさせ、かつフレックスペイン内に既知ユーザー特定インターフェイス570’をレンダリングさせてよい。このように、グループベースコミュニケーションインターフェイスは、操作ユーザーが既知ユーザー特定インターフェイス570を「掘り下げて」対象ユーザーに関するより詳細な情報を得ることを可能にするように構成される。
図5C-4に図示した実施形態を見ると、グループベースコミュニケーションメッセージ564の@mention(すなわち、示したように@jonを含むハイパーリンク)の操作ユーザーによるユーザー関与により、クライアントデバイス108Cは、上記の処理300に関連して考察したように、グループベースキャッシュサービスのユーザー特定モジュールに対するユーザー特定クエリを生成するように動作する。示したように、Flannery氏に関連付けられた要求ユーザー識別子の立場でJon Kittleに関連付けられた対象ユーザー識別子の未知ステータスを特定すると、クライアントデバイス108Cは対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを取り出し、かつ図示した制限付きユーザー特定インターフェイス580をグループベースコミュニケーションインターフェイス550に表示する。
図示した制限付きユーザー特定インターフェイス580は、モーダル要素又はポップアップ要素としてのグラフィックユーザーインターフェイスのスタイルになっており、かつユーザー写真又はアバターコンポーネント586及び制限付きユーザーメッセージ584を含む。図示した制限付きユーザー特定インターフェイス580は、対象ユーザープロファイルから引き出されたプライベート情報、秘密情報、又は内部情報を除外する。これに代えて、図示した制限付きユーザー特定インターフェイス580は、操作ユーザー(すなわち、Flannery氏)に、対象ユーザー(すなわち、Kittle氏)が直接通信及び/又は情報共有の認定を受けていないことを通知する制限付きユーザーメッセージ584を含む。特に、図示した制限付きユーザー特定インターフェイスは、図5C-2及び図5C-3に関連して上記で考察した直接通信要素も含まない。
図6Aは本開示の一実施形態により、対象ユーザー識別子の保留ステータスの判定に応答してクライアントデバイス停止命令を送信させるために図3B-3の処理300の後に実行され、又は実施される処理600の動作を大まかに示す流れ図である。図示した処理は、上記の処理300のブロック304による対象ユーザー識別子の保留ステータスの判定後にブロック602で開始する。
図6Bは方法600により表される例示的なデータフローの信号図である。すなわち、図6Bは、対象ユーザー識別子の保留ステータスの判定に応答してクライアントデバイス停止命令を送信させる際のグループベースキャッシュサービスのユーザー特定モジュール及びクライアントデバイスのデータフロー動作を示す。方法600を、グループベースキャッシュサービス104のユーザー特定モジュール116及びクライアントデバイス108Cにより実行されるものとして説明する。図示した実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は、動作602でユーザーステータスキャッシュ107において対象ユーザー識別子に関連付けられた既知システムステータス又は対象ユーザー識別子に関連付けられた未知システムステータスのいずれかを検査する。
対象ユーザー識別子に関連付けられた既知システムステータス指定又は未知システムステータス指定のいずれもユーザーステータスキャッシュ内に格納されていないと判定すると、グループベースキャッシュサービスのユーザー特定モジュールは、動作610で対象ユーザー識別子の保留ステータスを判定する。他の実施形態では、対象ユーザー識別子の保留ステータスはユーザーステータスキャッシュに以前に格納された場合があり、したがってユーザー特定モジュールは新たなステータス判定を行う必要が一切なく、以前に格納された保留ステータス指定を返す必要があるだけである。動作604で、グループベースキャッシュサービス104のユーザー特定モジュール116によりクライアントデバイス停止命令がクライアントデバイス108Cへ送信される。以下に考察するように、クライアントデバイス停止命令は、少なくとも停止期間中又はコミュニケーション装置(例えば、グループベースキャッシュサービスのユーザー特定モジュール)がクライアントデバイス108Cに対象ユーザー識別子の解決済み既知ステータス又は解決済み未知ステータスのうちの1つを返すことが可能になるまで、クライアントデバイス108Cにグループベースキャッシュサービス又はグループベースコミュニケーションサーバのさらなる対象ユーザー識別子関連クエリを控えさせる。
図7Aは、本開示の一実施形態により、対象ユーザー識別子の保留ステータスの判定に応答して、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較させて解決済み既知ステータス又は解決済み未知ステータスを判定するために図3B-3の処理300の後に実行され、又は実施される処理700の動作を大まかに示す流れ図である。図示した処理は、上記の処理300のブロック304による対象ユーザー識別子の保留ステータスの判定後にブロック702で開始する。幾つかの実施形態では、図示した処理は、図6Aのブロック602によるクライアント停止命令の送信直後にブロック702で開始する。図示した処理700は、ブロック704で要求ユーザー識別子に関連付けられたユーザーステータスキャッシュを更新させ、対象ユーザー識別子の保留ステータスを、判定された解決済み既知ステータス又は解決済み未知ステータスで置換させて終了する。
図7B-1~図7B-2は方法700により表される例示的なデータフローの信号図である。すなわち、図7B-1~図7B-2には、対象ユーザー識別子の保留ステータスの判定に応答して対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較させて解決済み既知ステータスを判定する際のグループベースキャッシュサービスのユーザー特定モジュール及びグループベースコミュニケーションシステムのグループ接続アレイのデータフロー動作を示す。
図7B-1に図示する例では、方法700を、グループベースキャッシュサービス104のユーザー特定モジュール116及びグループベースコミュニケーションシステム102のグループ接続アレイ105により実行されるものとして説明する。図示した実施形態では、図示したグループベースキャッシュサービス104のユーザー特定モジュール116は、上記の処理300のブロック304によりクライアントデバイス108Fに関連付けられたタグ付きの同僚に関連付けられたユーザー識別子の保留ステータスを判定済みである。動作704で、グループベースキャッシュサービス104のユーザー特定モジュール116は、対象ユーザー識別子(すなわち、クライアントデバイス108Fに関連付けられたタグ付きの同僚に関連付けられたユーザー識別子)を、要求ユーザー識別子(すなわち、クライアントデバイス108Cに関連付けられたユーザー識別子)に関連付けられたグループ接続アレイ105と比較させる。この例では動作706で、クライアントデバイス108Cに関連付けられた操作ユーザーは、ユーザー特定モジュールが対象ユーザー識別子の解決済み既知ステータスを指定するのに十分なリンク、接続、及び/又は関連付けを、クライアントデバイス108Fに関連付けられ、グループ接続アレイ内に格納された対象ユーザーに対して有していた(例えば、既知の閾値が満たされている)。次に動作720で、この解決済み既知ステータスはユーザーステータスキャッシュに格納され、前の保留ステータスを置換する。
図7B-2に図示する例では、方法700を、グループベースキャッシュサービス104のユーザー特定モジュール116及びグループベースコミュニケーションシステム102のグループ接続アレイ105により実行されるものとして説明する。グループベースキャッシュサービス104のユーザー特定モジュール116は、上記の処理300のブロック304によりクライアントデバイス108Fに関連付けられたタグ付きの同僚に関連付けられたユーザー識別子の保留ステータスを判定済みである。動作704で、グループベースキャッシュサービス104のユーザー特定モジュール116は、対象ユーザー識別子(すなわち、クライアントデバイス108Fに関連付けられたタグ付きの同僚に関連付けられたユーザー識別子)を、要求ユーザー識別子(すなわち、クライアントデバイス108Cに関連付けられたユーザー識別子)に関連付けられたグループ接続アレイ105と比較させる。しかし、この例ではクライアントデバイス108Cに関連付けられた操作ユーザーは、ユーザー特定モジュールが対象ユーザー識別子の解決済み既知ステータスを指定するのに十分なリンク、接続、及び/又は関連付けを、クライアントデバイス108Fに関連付けられ、グループ接続アレイ内に格納された対象ユーザーに対して有していない(例えば、既知の閾値が満たされていない)。したがって、動作708でユーザー特定モジュールは解決済み未知ステータスを指定する。次に動作725で、この解決済み未知ステータスはユーザーステータスキャッシュに格納され、前の保留ステータスを置換する。
図8Aは、本開示の一実施形態により、対象ユーザー識別子の解決済み既知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングさせるために図7B-1の処理700の後に実行され、又は実施される処理800の動作を大まかに示す流れ図である。図示した処理は、上記の処理700のブロック702による対象ユーザー識別子の解決済み既知ステータスの判定後にブロック802で開始する。
図8Bは方法800により表される例示的なデータフローの信号図である。すなわち、図8Bは、対象ユーザー識別子の解決済み既知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに既知ユーザー特定インターフェイスをレンダリングさせる際のグループベースキャッシュサービスのユーザー特定モジュール及びクライアントデバイスのデータフロー動作を示す。方法800を、グループベースキャッシュサービス104のユーザー特定モジュール116及びクライアントデバイス108Cにより実行されるものとして説明する。図示した実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は、動作802でグループベースキャッシュサービスのメモリにおいて対象ユーザー識別子に関連付けられた既知ユーザー特定オブジェクトを検査する。幾つかの実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は任意の動作804により示すように、グループベースコミュニケーションシステム102のグループベースコミュニケーションリポジトリ103において対象ユーザー識別子に関連付けられた既知ユーザー特定オブジェクトを検査することができる。既知ユーザー特定オブジェクトが取り出されると、動作806でクライアントデバイス108Cへ送信され、グループベースコミュニケーションインターフェイス内に既知ユーザー特定インターフェイスをレンダリングさせる。
図9Aは、本開示の一実施形態により、対象ユーザー識別子の解決済み未知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングさせるために図7B-2の処理700の後に実行され、又は実施される処理900の動作を大まかに示す流れ図である。図示した処理は、上記の処理700のブロック702による対象ユーザー識別子の解決済み未知ステータスの判定後にブロック902で開始する。
図9Bは方法900により表される例示的なデータフローの信号図である。すなわち、図9Bは、対象ユーザー識別子の解決済み未知ステータスの判定に応答してグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングさせる際のグループベースキャッシュサービスのユーザー特定モジュール及びクライアントデバイスのデータフロー動作を示す。方法900を、グループベースキャッシュサービス104のユーザー特定モジュール116及びクライアントデバイス108Cにより実行されるものとして説明する。図示した実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は、動作902でグループベースキャッシュサービスのメモリにおいて対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを検査する。幾つかの実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は任意の動作904により示すように、グループベースコミュニケーションシステム102のグループベースコミュニケーションリポジトリ103において対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを検査することができる。制限付きユーザー特定オブジェクトが取り出されると、動作906でクライアントデバイス108Cへ送信され、グループベースコミュニケーションインターフェイス内に制限付きユーザー特定インターフェイスをレンダリングさせる。
図10Aは、図6Bの動作604及び図7B-2の動作708の後に実行され、又は実施される処理1000の動作又は処理ブロックを大まかに示す流れ図である。処理1000は、対象ユーザー識別子の解決済み未知ステータスの判定に応答してグループベースリポジトリから対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを取り出させるために実行され、又は実施される。処理1000はクライアント停止命令の送信後に行われ、かつ本開示の一実施形態により、制限付きユーザー特定オブジェクトをクライアントデバイスへ送信し、クライアントデバイスのディスプレイにより、制限付きユーザー特定オブジェクトに基づいてグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングすることを含む。
図示した処理は、上記のブロック602によるクライアント停止命令の送信に続いて、かつ処理700のブロック702による対象ユーザー識別子の解決済み未知ステータスの判定に応答して、ブロック1004で開始する。ブロック1004は、グループベースコミュニケーションシステムのグループベースコミュニケーションリポジトリから対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを取り出させることを含む。
ブロック1006で、図示した処理1000は、制限付きユーザー特定オブジェクトをクライアントデバイスへ送信し、クライアントデバイスのディスプレイにより、制限付きユーザー特定オブジェクトに基づいてグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングすることをさらに含む。
図10Bは方法1000により表される例示的なデータフローの信号図である。すなわち、図10Bは、クライアントデバイス、グループベースキャッシュサービスのユーザー特定モジュール、及びグループベースコミュニケーションシステムのグループベースコミュニケーションリポジトリの間のデータフローインタラクションを示す。図示した実施形態では、方法1000を、クライアントデバイス108C、グループベースキャッシュサービス104のユーザー特定モジュール116、及びグループベースコミュニケーションリポジトリ103により実行されるものとして説明する。グループベースキャッシュサービス104のユーザー特定モジュール116は動作1104により示すように、グループベースコミュニケーションシステム102のグループベースコミュニケーションリポジトリ103において対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを検査する。制限付きユーザー特定オブジェクトがグループベースキャッシュサービス104のユーザー特定モジュール116によりグループベースコミュニケーションシステム102のグループベースコミュニケーションリポジトリ103から取り出されると、動作1006でグループベースキャッシュサービス104のユーザー特定モジュール116によりクライアントデバイス108Cへ送信され、グループベースコミュニケーションインターフェイス内に既知ユーザー特定インターフェイスをレンダリングさせる。
図11Aは、本開示の好ましい実施形態により、クライアントデバイスへクライアントデバイス停止命令を送信させ、グループベースコミュニケーションインターフェイスに関連付けられた第2のユーザー特定クエリを受信し、第2の要求ユーザー識別子に関連付けられた第2のクライアントデバイスへ第2のクライアントデバイス停止命令を送信させ、かつ対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較して対象ユーザー識別子の解決済み既知ステータス又は解決済み未知ステータスを判定するために図3B-3の処理310の後に実行され、又は実施される処理1100の動作又は処理ブロックを大まかに示す流れ図である。このように、処理1100は、以下に詳細に説明するように同一の対象ユーザーに関する複数の要求ユーザーからの複数のユーザー特定要求の管理を説明する。
図11Aに示す実施形態では、図示した処理は、上記の図3Aで示した処理300のブロック304による対象ユーザー識別子の保留ステータスの判定に応答して要求ユーザー識別子に関連付けられたクライアントデバイスへクライアントデバイス停止命令を送信させることを含むブロック1102で開始する。
ブロック1104で、図示した処理1100はグループベースコミュニケーションインターフェイスに関連付けられた第2のユーザー特定クエリを取り出すことをさらに含む。第2のユーザー特定クエリは第2の要求ユーザー識別子及び対象ユーザー識別子を含む。例えば、クライアントデバイス108Dに関連付けられたユーザーが、クライアントデバイス108Cに関連付けられたユーザーと共有する#HR-payroll-issuesグループベースコミュニケーションチャネルに投稿されたメッセージに、クライアントデバイス108Fに関連付けられた同僚をタグ付けする、上記で考察した例に戻ると、ユーザー特定モジュールがクライアントデバイス108Dに関連付けられたユーザー識別子に関連付けられた保留ステータスを判定し、かつクライアントデバイス108Cにクライアントデバイス停止命令を発行したことが想起される。ブロック1104の処理は、第2のクライアントデバイス、例えばクライアントデバイス108Aがグループベースキャッシュサービスのユーザー特定モジュールへ第2のユーザー特定クエリを送信する状況で行われる。この例では、第2のユーザー特定クエリは、クライアントデバイス108Aの操作ユーザーに関連付けられた要求ユーザー識別子と、クライアントデバイス108Fのユーザーに関連付けられた対象ユーザー識別子とを含む。
ブロック1106で、図示した処理1100は第2の要求ユーザー識別子に関連付けられた第2のクライアントデバイスへ第2のクライアントデバイス停止命令を送信させることをさらに含む。本例では、これはクライアントデバイス108Aへ第2のクライアントデバイス停止命令を送信することを含む。
ブロック1108で、図示した処理1100は、対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較して対象ユーザー識別子の解決済み既知ステータス又は解決済み未知ステータスを判定することをさらに含む。
図11B-1~図11B-2は処理1100により表されるデータフロー動作を示す例示的な信号図である。すなわち、図11B-1~図11B-2は、好ましい実施形態により、クライアントデバイスへクライアントデバイス停止命令を送信させ、グループベースコミュニケーションインターフェイスに関連付けられた第2のユーザー特定クエリを受信し、第2の要求ユーザー識別子に関連付けられた第2のクライアントデバイスへ第2のクライアントデバイス停止命令を送信させ、かつ対象ユーザー識別子を、要求ユーザー識別子に関連付けられたグループ接続アレイと比較させて対象ユーザー識別子の解決済み既知ステータスを判定する際のクライアントデバイス、第2のクライアントデバイス、グループベースキャッシュサービスのユーザー特定モジュール、及びグループベースコミュニケーションシステムのグループ接続アレイのデータフローインタラクションを示す。
図11B-1に図示した例では、方法1100を、クライアントデバイス108C、第2のクライアントデバイス108A、グループベースキャッシュサービス104のユーザー特定モジュール116、及びグループベースコミュニケーションシステム102のグループ接続アレイ105により実行されるものとして説明する。図示したグループベースキャッシュサービス104のユーザー特定モジュール116は、クライアントデバイス108Cからユーザー特定クエリを取り出し、又は受信する。図示した例では、クライアントデバイス108Fが、クライアントデバイス108Cから発行されたユーザー特定クエリの対象ユーザー識別子に関連付けられている。上記で考察したように、グループベースキャッシュサービス104のユーザー特定モジュール116は、クライアントデバイス108Fを操作する対象ユーザーの保留ステータスを判定した。したがって、動作1102で、グループベースキャッシュサービス104のユーザー特定モジュール116は、停止期間中又は少なくとも保留ステータスが解決されるまで(すなわち、解決済み既知ステータス又は解決済み未知ステータスが判定されるまで)クライアントデバイス108Cへクライアントデバイス停止命令を送信させる。
グループベースキャッシュサービス104のユーザー特定モジュール116によりクライアントデバイス108Cから受信されたユーザー特定クエリの保留ステータスが未解決状態のままである間は、第2のクライアントデバイス(クライアントデバイス108A)からの第2のユーザー特定クエリは、動作1104でグループベースキャッシュサービスのユーザー特定モジュール116により受信される。第2のユーザー特定クエリは、第2の要求ユーザー識別子(例えば、クライアントデバイス108Aの操作ユーザーに関連付けられたユーザー識別子)と、クライアントデバイス108Fの操作ユーザーに関連付けられた対象ユーザー識別子とを含む。
グループベースコミュニケーションサーバに対する演算ストレスと、比較的程度は低いがグループベースキャッシュサービスに対する演算ストレスとを回避することが望ましい。数百人又は数千人のメンバを有する大きなグループベースコミュニケーションチャネルでは、本明細書で考察する複数の実施形態のうちの1つ以上を実装しない場合、一人の外部ユーザー(すなわち、外部対象ユーザー識別子)について言及したために数百台又は数千台のクライアントデバイスがグループベースコミュニケーションサーバ又はグループベースキャッシュサービスに絶えずクエリすることになりかねないリスクが存在する。これにより、予期しないネットワークリソースの負担又は計画外のシステム停止を生じる可能性がある。また、これは上記で考察したように潜在的なDDOSの脆弱性を示す。
本発明のさまざまな実施形態は、計画外のユーザー特定クエリの波がグループベースコミュニケーションサーバに与える衝撃を抑制することにより演算リソースを保全し、かつDDOSの脆弱性を軽減するように機能する。したがって、動作1106で、グループベースキャッシュサービス104のユーザー特定モジュール116は、第2の要求ユーザー識別子に関連付けられた第2のクライアントデバイス108Aへ第2のクライアントデバイス停止命令を送信させる。
動作1108で、グループベースキャッシュサービス104のユーザー特定モジュール116は、対象ユーザー識別子を、それぞれの要求ユーザー識別子に関連付けられたグループ接続アレイと比較させることにより保留中のユーザー特定クエリを解決してよい。例えば、グループベースキャッシュサービス104のユーザー特定モジュール116は、クライアントデバイス108Fに関連付けられた対象ユーザー識別子を、クライアントデバイス108Cに関連付けられた要求ユーザー識別子に関連付けられたグループ接続アレイと比較させてよい。同様に、グループベースキャッシュサービス104のユーザー特定モジュール116は、クライアントデバイス108Fに関連付けられた対象ユーザー識別子を、クライアントデバイス108Aに関連付けられた要求ユーザー識別子に関連付けられたグループ接続アレイと比較させてよい。
この例では、クライアントデバイス108Cに関連付けられた操作ユーザー及びクライアントデバイス108Aに関連付けられた操作ユーザーは、それぞれ、動作1110でユーザー特定モジュールが両方の要求識別子に対して対象ユーザー識別子の解決済み既知ステータスを指定するのに十分なリンク、接続、及び/又は関連付けを、クライアントデバイス108Fに関連付けられ、グループ接続アレイ内に格納された対象ユーザーに対して有していた(例えば、既知の閾値が満たされている)。次に動作1120で、この解決済み既知ステータスはユーザーステータスキャッシュに格納され、前の保留ステータスを置換する。
図1に図示したように、クライアントデバイス108C及び108Dは、グループベースコミュニケーションシステムにより両方とも、#HR-payroll-issuesグループベースコミュニケーションチャネルのメンバシップを認定されているユーザーに関連付けられている。さらに図1に図示したように、クライアントデバイス108D及び108Eが組織B(例えば、ACME Corporation)のユーザーに関連付けられている。したがって、対象ユーザー識別子をそれぞれのグループ接続アレイと比較すれば、両方のユーザー特定クエリが既知ステータスを有すると判定されるはずである。したがって、処理1200は、動作1210でグループベースキャッシュサービス104のユーザー特定モジュール116がクライアントデバイス108Dに関連付けられた対象ユーザー識別子の解決済み既知ステータスを判定したことに伴い終了してよい。
図11B-2に図示した例では、方法1100を、クライアントデバイス108C、第2のクライアントデバイス108B、グループベースキャッシュサービス104のユーザー特定モジュール116、及びグループベースコミュニケーションシステム102のグループ接続アレイ105により実行されるものとして説明する。図示した例では、クライアントデバイス108Fに関連付けられた操作ユーザーは、クライアントデバイス108C及び108Bからのユーザー特定クエリの対象ユーザーである。図示したグループベースキャッシュサービス104のユーザー特定モジュール116は、クライアントデバイス108Cからユーザー特定クエリを取り出し、又は受信済みである。図示した実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は、クライアントデバイス108Fに関連付けられた対象ユーザー識別子の保留ステータスを判定した。したがって、グループベースキャッシュサービス104のユーザー特定モジュール116は、動作1102で保留ステータスが解決されるまでクライアントデバイス108Cへクライアントデバイス停止命令を送信させる。
グループベースキャッシュサービス104のユーザー特定モジュール116によりクライアントデバイス108Cから取り出されたユーザー特定クエリの保留ステータスが未解決状態のままである間は、第2のクライアントデバイス(クライアントデバイス108B)からの第2のユーザー特定クエリは、動作1104でグループベースキャッシュサービスのユーザー特定モジュール116により受信される。第2のユーザー特定クエリは、第2の要求ユーザー識別子(例えば、クライアントデバイス108Aの操作ユーザーに関連付けられたユーザー識別子)と、クライアントデバイス108Fの操作ユーザーに関連付けられた対象ユーザー識別子とを含む。
図示した実施形態では、グループベースキャッシュサービス104のユーザー特定モジュール116は、動作1106で第2の要求ユーザー識別子に関連付けられた第2のクライアントデバイス108Bへ第2のクライアントデバイス停止命令を送信させる。
動作1108で、グループベースキャッシュサービス104のユーザー特定モジュール116は、受信したユーザー特定クエリの対象ユーザー識別子を、それぞれの要求ユーザー識別子に関連付けられたグループ接続アレイと比較することにより当該クエリに関連付けられた保留ステータスを解決する。例えば、グループベースキャッシュサービス104のユーザー特定モジュール116は、クライアントデバイス108Fに関連付けられた対象ユーザー識別子を、クライアントデバイス108Cに関連付けられた要求ユーザー識別子に関連付けられたグループ接続アレイと比較させてよい。同様に、グループベースキャッシュサービス104のユーザー特定モジュール116は、クライアントデバイス108Fに関連付けられた対象ユーザー識別子を、クライアントデバイス108Bに関連付けられた要求ユーザー識別子に関連付けられたグループ接続アレイと比較させてよい。幾つかの実施形態では、当業者には明らかなように、グループ接続アレイは、各対象ユーザー識別子にマッピングされた複数の要求ユーザー識別子を格納する単一のデータベース又はリポジトリ(すなわち、1つのデータベース構造に多くがマッピングされる)として具現化されてよい。
この例では、クライアントデバイス108Cに関連付けられた操作ユーザーと、クライアントデバイス108Bに関連付けられた操作ユーザーがそれぞれクライアントデバイス108Fに関連付けられ、グループ接続アレイ内に格納された対象ユーザーに対して十分なリンク、接続、及び/又は関連付けを有しない(例えば、既知の閾値が満たされていない)ので、ユーザー特定モジュールは、動作1112で両方の要求識別子に対して対象ユーザー識別子の解決済み未知ステータスを指定する。次に動作1125で、この解決済み未知ステータスはユーザーステータスキャッシュに格納され、前の保留ステータスを置換する。
図12Aは、対象ユーザー識別子の解決済み未知ステータスの判定に応答してグループベースコミュニケーションリポジトリから対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを取り出させ、かつクライアントデバイス及び第2のクライアントデバイスへ制限付きユーザー特定オブジェクトを送信し、制限付きユーザー特定オブジェクトに基づいてグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングするために、図11B-2の処理1100の後に実行され、又は実施される処理1200の動作を大まかに示す流れ図である。図示した処理は、上記の処理1100のブロック1108による対象ユーザー識別子の解決済み未知ステータスの判定後にグループベースコミュニケーションリポジトリから対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを取り出すことにより、ブロック1202で開始する。
ブロック1204で、図示した処理1200は、クライアントデバイス及び第2のクライアントデバイスへ制限付きユーザー特定オブジェクトを送信し、クライアントデバイス及び第2のクライアントデバイスのディスプレイにより、制限付きユーザー特定オブジェクトに基づいてグループベースコミュニケーションインターフェイスに制限付きユーザー特定インターフェイスをレンダリングすることをさらに含む。
図12Bは方法1200により表される例示的なデータフローの信号図である。すなわち、図12Bは、クライアントデバイス、第2のクライアントデバイス、グループベースキャッシュサービスのユーザー特定モジュール、及びグループベースコミュニケーションシステムのグループベースコミュニケーションリポジトリのデータフロー動作を示す。より具体的には、方法1200を、図1に示したクライアントデバイス108C、第2のクライアントデバイス108B、グループベースキャッシュサービス104のユーザー特定モジュール116、及びグループベースコミュニケーションシステム102のグループベースコミュニケーションリポジトリ103により実行されるものとして図12Bで説明する。図示した実施形態において、グループベースキャッシュサービス104のユーザー特定モジュール116は、動作1202でグループベースコミュニケーションリポジトリ103において対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクト(すなわち、クライアントデバイス108Fを操作しているユーザーに関連付けられたユーザー識別子)を検査する。図示した実施形態の動作1204で、グループベースキャッシュサービス104のユーザー特定モジュール116は、対象ユーザー識別子に関連付けられた制限付きユーザー特定オブジェクトを取り出す。
制限付きユーザー特定オブジェクトは、対象ユーザー識別子の制限付きユーザー特定インターフェイスをレンダリングするために必須のデータ及び命令を含む。方法1200は、グループベースキャッシュサービス104のユーザー特定モジュール116が、クライアントデバイス108C(動作1206Aとして図示)及び第2のクライアントデバイス108B(動作1206Bとして図示)へ、クライアントデバイス108Fを操作するユーザーに関連付けられた制限付きユーザー特定オブジェクトを送信して、クライアントデバイス108C及び108Bのディスプレイにそれぞれレンダリングされたグループベースコミュニケーションインターフェイスに、対象ユーザー識別子(すなわち、クライアントデバイス108Fを操作するユーザー)の制限付きユーザー特定インターフェイスをレンダリングする動作1206で終了する。
結論
上記の説明及び関連する図面で提示した教示の利益を有し、本開示が関係する技術分野の当業者は、多くの変形例及び他の実施形態に想到するであろう。したがって、開示した具体的な実施形態に本開示は限定されず、変形例及び他の実施形態は添付の特許請求の範囲に包含されることが意図されるものと理解されたい。具体的な用語を本明細書で使用しているが、これらの用語は、限定目的ではなく一般的かつ説明上の意味でのみ用いている。