(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-10-30
(45)【発行日】2023-11-08
(54)【発明の名称】グループベース通信システムにおいてプッシュベース通信コネクションが存在しない場合の最小のインタフェース機能の維持
(51)【国際特許分類】
H04L 51/224 20220101AFI20231031BHJP
H04L 67/55 20220101ALI20231031BHJP
【FI】
H04L51/224
H04L67/55
(21)【出願番号】P 2021179998
(22)【出願日】2021-11-04
(62)【分割の表示】P 2020558434の分割
【原出願日】2019-10-31
【審査請求日】2022-07-07
(32)【優先日】2018-11-05
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506332063
【氏名又は名称】セールスフォース インコーポレイテッド
(74)【代理人】
【識別番号】110001427
【氏名又は名称】弁理士法人前田特許事務所
(72)【発明者】
【氏名】シャインブラム ジェームズ
(72)【発明者】
【氏名】クリム ジェイソン
【審査官】木村 雅也
(56)【参考文献】
【文献】米国特許第09460180(US,B2)
【文献】欧州特許出願公開第01944944(EP,A1)
【文献】米国特許第06263360(US,B1)
【文献】特開2007-074413(JP,A)
【文献】特開2014-146876(JP,A)
【文献】特開2015-103125(JP,A)
【文献】特表2010-515988(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 51/224
H04L 67/55
(57)【特許請求の範囲】
【請求項1】
リアルタイムメッセージング通信コネクションがインタラプトされていると判定した時に
、リアルタイムの
インタフェース機能をグループベース
通信システムに提供する方法であって、前記方法は、
グループベース通信インタフェースオブジェクトに関連付けられた前記リアルタイムメッセージング通信コネクションを介して、前記グループベース
通信システムについてのリアルタイムで更新されたオブジェクトデータを、第1リモートサーバーから、クライアントデバイスによって受信することと、
前記グループベース通信インタフェースオブジェクトに関連付けられたクライアントプルベースの通信コネクションを介して、テールデータペイロードを要求するため
の要求を、第2リモートサーバーへ前記クライアントデバイスによって送信することと、
前記グループベース通信インタフェースオブジェクトに関連付けられた、1つ以上のオブジェクト識別子のそれぞれについてのテールデータペイロードを、前記第2リモートサーバーから前記クライアントデバイスによって受信することと、
前記リアルタイムメッセージング通信コネクションのインタラプトを検出したことに応答して、前記テールデータペイロードのうちの少なくとも部分集合を用いて、前記クライアントデバイス上に後続のグループベース
通信インタフェースをレンダリングすることと
を含む方法。
【請求項2】
前記後続のグループベース
通信インタフェースは、前記更新されたオブジェクトデータに基づいて前記テールデータペイロードから選択された第1テールデータペイロード部分集合を用いて、表示のためにレンダリングされる、
請求項1に記載の方法。
【請求項3】
前記後続のグループベース
通信インタフェース内に、第2テールデータペイロード部分集合を利用して、更新コンテンツ識別子に関連付けられた更新されたオブジェクトデータのセットを表示のためにレンダリングすること
をさらに含む請求項2に記載の方法。
【請求項4】
前記後続のグループベース
通信インタフェースは、グループベース
通信インタフェースオブジェクトとのユーザーインタラクションに基づき、
前記グループベース
通信インタフェースオブジェクトは、グループベース
通信チャネルを示す
請求項3に記載の方法。
【請求項5】
ポーリング要求を前記第2リモートサーバーに送信すること
をさらに含む請求項1-4のいずれか1項に記載の方法であって、
前記ポーリング要求は、前記1つ以上のオブジェクト識別子を含む
方法。
【請求項6】
前記ポーリング要求は、クライアントデバイス識別子及びタイムスタンプをさらに含む請求項5に記載の方法。
【請求項7】
前記1つ以上のオブジェクト識別子のそれぞれについての前記テールデータペイロードは、N個の最新のレコードを含む更新されたオブジェクトデータの集合を含み、
前記最新のレコードのそれぞれは、前記最新のレコードのそれぞれが前記タイムスタンプより以前に作成されたことを示す更新コンテンツ識別子を含む、
請求項6に記載の方法。
【請求項8】
前記更新コンテンツ識別子は、更新されたタイムスタンプと、単調に増加する改訂番号と、コンテンツ及びコンテンツハッシュのうちの1つから導出された識別子とのうちの1つ以上を含む、
請求項7に記載の方法。
【請求項9】
前記1つ以上のオブジェクト識別子に関連付けられた前記更新されたオブジェクトデータが、前記クライアントデバイスのローカルデータストレージで利用可能ではなく、かつ前記1つ以上のオブジェクト識別子に関連付けられた前記更新されたオブジェクトデータも前記第1リモートサーバーから受信されていないとの判定に基づいて、前記リアルタイムメッセージング通信コネクションにおけるインタラプトを検出すること
をさらに含む、請求項5-8のいずれか1項に記載の方法。
【請求項10】
前記1つ以上のオブジェクト識別子は、グループベース
通信チャネル識別子であり、
前記1つ以上のオブジェクト識別子は、前記更新されたオブジェクトデータに関連付けられたメタデータとして送信される、
請求項1に記載の方法。
【請求項11】
イベントが発生した時に前記更新されたオブジェクトデータが前記クライアントデバイスにプッシュされるよう、前記クライアントデバイスは、前記1つ以上のオブジェクト識別子に関連付けられたイベントにサブスクライブされる
請求項1に記載の方法。
【請求項12】
前記リアルタイムメッセージング通信コネクションは、アクティブなウェブソケットイベントのサブスクリプションである、
請求項1に記載の方法。
【請求項13】
前記ポーリング要求は、ウェブアプリケーションプログラミング
インタフェースへの要求メッセージの送信であり、
前記要求メッセージは、ハイパーテキスト転送プロトコル要求である、
請求項5に記載の方法。
【請求項14】
リアルタイムの
インタフェース機能をグループベース
通信システムに提供する、請求項1-13のいずれか1項に記載の方法を、プロセッサによって実行される時に実行する、コンピュータで実行可能な命令を記憶する1つ以上の非一時的コンピュータ読み取り可能な媒体。
【請求項15】
リアルタイムメッセージング通信コネクションがインタラプトされている時に、リアルタイムの
インタフェースを提供するシステムであって、
メモリと、
プロセッサと、
リアルタイムの
インタフェース機能をグループベース
通信システムに提供する、請求項1-13のいずれか1項に記載の方法を、プロセッサによって実行される時に実行する、コンピュータで実行可能な命令を記憶する1つ以上の非一時的コンピュータ読み取り可能な媒体と
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願の相互参照]
本願は、2018年11月5日に出願された「(グループベース通信システムにおいてプッシュベース通信コネクションが存在しない場合の最小のインタフェース機能の維持)MAINTAINING MINIMUM INTERFACE FUNCTIONALITY IN AN ABSENCE OF A PUSH-BASED COMMUNICATIONS CONNECTION IN A GROUP-BASED COMMUNICATION SYSTEM」と題する米国仮出願第
62/755,691号に対する優先権を主張し、その内容全体を参照によって本明細書に援用するものとする。
【背景技術】
【0002】
プッシュベース通信コネクションによってクライアントデバイスとサーバとの間でインタラクションするためのシステムが提供されている。応用的な努力、創意工夫、および革新により、そのようなシステムの多くの欠陥が、本発明の実施形態による解決手段を開発することによって解決されてきており、その多くの例が、本明細書に詳述される。
【発明の概要】
【0003】
様々な実施形態が、グループベース通信サーバへのリアルタイムメッセージング通信コネクション(例えば、アクティブなウェブソケットコネクション)のインタラプトにもかかわらず、クライアントデバイスにてグループベース通信インタフェースオブジェクトをほぼリアルタイムで表現する役割を果たす。様々な実施形態は、リアルタイムのメッセージング通信コネクションが存在しない場合に、グループベース通信インタフェースが最小レベルの機能またはサービス品質を維持することを保証する。グループベース通信サーバは、(グループベース通信プラットフォームまたは他の集中型データ分散コンピューティングプラットフォームなどの)リモートコンピューティングプラットフォームに関連付けられる。実施形態では、クライアントデバイスが、グループベース通信インタフェースオブジェクトに関連付けられたイベントをサブスクライブし、それにより、リアルタイムメッセージング通信用に構成されたグループベース通信サーバが、クライアントデバイスによってサブスクライブされたグループベース通信インタフェースオブジェクトに関連付けられた更新オブジェクトデータが利用可能になるとすぐに、更新オブジェクトデータを送信するようになっている。
【0004】
第1のグループベース通信サーバとのリアルタイムメッセージング通信コネクションの確立に加えて、クライアントデバイスは、テールデータペイロードを要求するポーリングのために、異なるグループベース通信サーバ(例えば、ウェブAPI)との第2の通信コネクションを確立する。リアルタイムメッセージング通信コネクションのインタラプトの期間が不明であるため、クライアントデバイスが、通常であればクライアントデバイスにプッシュされたであろうよりも多くの更新オブジェクトデータを異なるグループベース通信サーバに要求すること、よってテールデータペイロードを要求することが好ましい。リアルタイムメッセージング通信コネクションが維持されている間、テールデータペイロードが破棄される。
【0005】
しかし、クライアントデバイスと、リアルタイムメッセージング通信用に構成されたグループベース通信サーバとの間のリアルタイムメッセージング通信コネクションがインタラプトされた場合、様々な実施形態が、テールデータペイロードの全てまたは一部を使用して、後続のグループベース通信インタフェースをレンダリングする。後続のグループベース通信インタフェースは、更新オブジェクトデータが存在しない場合に、完全に機能を
失うのとは対照的に、テールデータペイロードを使用して最小レベルの機能をサポートし得る。最小レベルの機能(または最小のインタフェース機能)には、メッセージを送信する(すなわち、特定のグループベース通信チャネルインタフェースにおける表示を目的としたメッセージをグループベース通信プラットフォーム/システムに送信する)、グループベース通信チャネルを読み取る(すなわち、クライアントデバイスに表示するためにグループベース通信チャネルインタフェースをレンダリングするように構成されたグループベース通信インタフェースを受信する)、かつ未読のグループベース通信チャネルを閲覧する(すなわち、クライアントデバイスがまだアクセスしていないグループベース通信チャネルに関連付けられたメッセージを有するグループベース通信チャネルのデジタル表現を含むグループベース通信インタフェースを、クライアントデバイスに表示するためにレンダリングするように構成されたグループベース通信インタフェースを受信する)能力が含まれ得る。
【0006】
実施形態では、グループベース通信システムにおいて最小のインタフェース機能を維持するための装置が、少なくとも1つのプロセッサと、命令を記憶している少なくとも1つの非一時性ストレージ媒体とを備え、命令が、プロセッサによって実行されると、装置に、グループベース通信インタフェースオブジェクトとの電子インタラクションを表すユーザインタラクション入力を受けさせる。実施形態では、グループベース通信インタフェースオブジェクトとの電子インタラクションが、後続のグループベース通信インタフェースをレンダリングするための更新オブジェクトデータを必要とする。実施形態では、電子インタラクションが、1つ以上のオブジェクト識別子に関連付けられている。
【0007】
実施形態では、装置にさらに、第1のリモートサーバとの第1の通信コネクションを確立させる。実施形態では、第1のリモートサーバが、クライアントデバイスによってサブスクライブされ、グループベース通信インタフェースオブジェクトに関連付けられたイベントを表す更新オブジェクトデータをリアルタイムで送信するように構成されている。実施形態では、更新オブジェクトデータが、第1のリモートサーバからクライアントデバイスにプッシュされる。
【0008】
実施形態では、装置にさらに、第2のリモートサーバとの第2の通信コネクションを確立させる。実施形態では、第2の通信コネクションが、クライアントプルベースの通信コネクションであり、クライアントデバイスによって、第2のリモートサーバからテールデータペイロードを要求および受信するように構成されている。
【0009】
実施形態では、装置にさらに、第2のリモートサーバにポーリング要求を送信させる。実施形態では、ポーリング要求が、1つ以上のオブジェクト識別子を含む。実施形態では、ポーリング要求が、1つ以上のオブジェクト識別子それぞれのためのテールデータペイロードの要求を表している。
【0010】
実施形態では、装置にさらに、第2のリモートサーバから、1つ以上のオブジェクト識別子それぞれのためのテールデータペイロードを受信させる。
【0011】
実施形態では、装置にさらに、1つ以上のオブジェクト識別子に関連付けられた更新オブジェクトデータをクライアントデバイスのローカルデータストレージに照会させる。
【0012】
実施形態では、装置にさらに、1つ以上のオブジェクト識別子に関連付けられた更新オブジェクトデータが、クライアントデバイスのローカルデータストレージにおいて利用可能でなく、かつ1つ以上のオブジェクト識別子に関連付けられた更新オブジェクトデータが、第1のリモートサーバから受信されていないと判断すると、第1の通信コネクションのインタラプトを検出させる。
【0013】
実施形態では、装置にさらに、第1のテールデータペイロードの部分集合を使用して、後続のグループベース通信インタフェースを表示のためにレンダリングさせる。実施形態では、第1のテールデータペイロードの部分集合が、電子インタラクションに関連付けられた必要とされる更新オブジェクトデータに基づいてテールデータペイロードから選択される。
【図面の簡単な説明】
【0014】
ここで、必ずしも縮尺に従って描かれていない添付図面が参照される。
【
図1】本開示の実施形態による、クライアントデバイスと通信するグループベース通信プラットフォームの概略図である。
【
図2A】本開示の実施形態によって使用するための装置の概略図である。
【
図2B】本開示の実施形態によって使用するためのクライアントデバイスの概略図である。
【
図3A】本開示の実施形態による、クライアントデバイスとグループベース通信プラットフォームまたはシステムとの間のデータ伝送の概略図である。
【
図3B】本開示の実施形態による、クライアントデバイスとグループベース通信プラットフォームまたはシステムとの間のデータ伝送を示すフローチャートである。
【発明を実施するための形態】
【0015】
本開示は、添付図面を参照して様々な実施形態について、より十分に記述する。全てではなく、いくつかの実施形態について、本明細書に示し、記述することを理解されたい。したがって、実施形態は実際には多くの異なる形態をとり得るが、本開示は、本明細書に記載する実施形態に限定されるものと解釈されるべきではない。むしろ、これらの実施形態は、適用され得る法的要件を本開示が満たすように提示される。同様の数字が、全体を通して同様の要素を指す。
【0016】
[概略]
グループベース通信システムでは、クライアントデバイスが、グループベース通信サーバからのデータ伝送を受信し、受信されたデータに基づいてグループベース通信インタフェースをレンダリングする。グループベース通信インタフェース、したがってグループベース通信システムに関連付けられたオブジェクトが、急速に変化し、クライアントデバイスにおける任意のオブジェクトデータが直ぐに「古く」なったり「陳腐化」したりする場合がある。したがって、グループベース通信システムが、各クライアントデバイスによって更新が要求されたオブジェクトに基づいて、リアルタイムで更新されたオブジェクトデータをクライアントデバイスに提供するために、リアルタイムメッセージング(RTM)通信コネクションに依存する場合がある。
【0017】
リアルタイムメッセージング通信コネクションが何らかの理由でインタラプトされると、クライアントデバイスにおけるオブジェクトデータが、古くなったり、陳腐化したりする場合があり、クライアントデバイスは、グループベース通信インタフェースと積極的にインタラクトし得ない場合がある。本開示の実施形態は、この問題に対する解決手段を提供する。
【0018】
グループベース通信システムのクライアントデバイスによるポーリングは、リアルタイムメッセージングコネクションの代わりに恒常的に、理想的なパフォーマンス(すなわち待ち時間)を提供し得ないが、クライアントデバイスが、更新オブジェクトデータを受信し、かつクライアントデバイス上のグループベース通信インタフェースとの動作およびインタラクションをサポートし得る、信頼性の高いバックアップメカニズムを提示する。
【0019】
本発明者らは、グループベース通信システムに関連付けられた更新オブジェクトデータをクライアントデバイスによって受信するためにリアルタイムメッセージングコネクション(例えば、アクティブなウェブソケットコネクション)にのみ依存することにより、クライアントデバイス上で最新のオブジェクトデータが欠如し、結果としてアプリケーション機能の低下につながり(例えば、グループベース通信インタフェースが、意図されたように実行または機能しない場合があり)、クライアントデバイスによるコンピューティングリソースの効率的な使用を低減させる(すなわち、キャッシュ/メモリ内の過剰な古いデータ、インタフェースの過度なリフレッシュ、画面の場所の不適切な割り当てその他)と判断した。
【0020】
したがって、本明細書に提示するのは、グループベース通信サーバへのリアルタイムメッセージング通信コネクション(例えば、アクティブなウェブソケットコネクション)のインタラプトにもかかわらず、グループベース通信インタフェースオブジェクトをほぼリアルタイムでクライアントデバイスにて表現することに向けられた実施形態である。実施形態は、1つ以上のオブジェクト識別子に関連付けられた更新オブジェクトデータが、クライアントデバイスのローカルデータストレージにおいて利用可能でなく、かつ1つ以上のオブジェクト識別子に関連付けられた更新オブジェクトデータが第1のリモートサーバから受信されていないと判断すると、リアルタイムメッセージング通信コネクションのインタラプトを検出することを含む。クライアントデバイスはまた、(例えば、ウェブAPIを介して)異なるグループベース通信サーバとの第2の通信コネクションを確立し、1つ以上のオブジェクト識別子に関連付けられたオブジェクトそれぞれのためのテールデータペイロードを要求している。通常の動作条件では、クライアントデバイスが、更新オブジェクトデータがローカルデータストレージにおいて利用可能であること、および/または更新オブジェクトデータが第1のリモートサーバから受信されていることを確認すると、クライアントデバイスは、テールデータペイロードを破棄する。
【0021】
実施形態では、リアルタイムメッセージング通信コネクションがインタラプトされており、したがって、更新オブジェクトデータがリアルタイムメッセージング通信コネクションによって受信されていないと判断すると、クライアントデバイスは、テールデータペイロードを(破棄するのではなく)使用して後続のグループベース通信インタフェースをレンダリングする。テールデータペイロードは、リアルタイムメッセージング通信コネクションによって受信されたであろうデータ(すなわち、第1のリモートサーバからクライアントデバイスにプッシュされる更新オブジェクトデータ)よりも多くのデータを含むことが理解されよう。
【0022】
次いで、クライアントデバイスは、受信されたテールデータペイロードの全てまたは部分集合に基づいて、後続のグループベース通信インタフェースをレンダリングすることができる。したがって、グループベース通信インタフェースは、ほぼリアルタイムで更新されたオブジェクトデータによって最小の機能を提供し得る。
【0023】
[定義]
本明細書において、用語「データ」、「コンテンツ」、「情報」、および類似の用語は、本発明の実施形態によって送信、受信、および/または記憶できるデータを指すために交換可能に使用され得る。それゆえ、そのようないかなる用語の使用も、本発明の実施形態の趣旨および範囲を限定するものと解釈されるべきではない。さらに、コンピューティングデバイスが別のコンピューティングデバイスからデータを受信するように、本明細書で記述する場合、データは、別のコンピューティングデバイスから直接受信されてもよく、または例えば、1つ以上のサーバ、リレー、ルータ、ネットワークアクセスポイント、基地局、ホスト、および/もしくはその他の、1つ以上の中間コンピューティングデバイスを介して間接的に受信されてもよいことが理解されよう。同様に、コンピューティング
デバイスが別のコンピューティングデバイスにデータを送信するように、本明細書で記述する場合、データは、別のコンピューティングデバイスに直接送信されてもよく、または例えば、1つ以上のサーバ、リレー、プロキシ、ルータ、ネットワークアクセスポイント、基地局、ホスト、および/もしくはその他の、1つ以上の中間コンピューティングデバイスを介して間接的に送信されてもよいことが理解されよう。
【0024】
用語「ユーザ」は、個人、個人のグループ、事業所、組織その他を指すことを理解されたい。ユーザは、クライアントデバイスを使用してグループベース通信システムまたはメッセージングシステムにアクセスし得る。本明細書では、「グループベース」は、定義されたユーザグループのみがアクセスできるように十分なセキュリティを有する、システム、チャネル、メッセージ、または仮想環境を指すために使用される。グループは、組織または商業企業のアクセス資格情報などの共通のアクセス資格情報によって定義され得る。あるグループメンバーユーザによって別の非メンバーユーザに送信される、参加への検証済み要求または参加への招待により、アクセスがさらに容易となり得る。(以下で定義する)グループ識別子が、データ、情報、メッセージなどを特定のグループに関連付けるために使用される。
【0025】
用語「ユーザプロファイル」、「ユーザアカウント」、および「ユーザアカウント詳細」は、例えば、ユーザ識別子、ユーザがアクセスを許可された通信チャネル(例えばグループベース通信チャネル)に関連付けられた1つ以上の通信チャネル識別子(例えばグループベース通信チャネル識別子)、ユーザが関連付けられたグループの1つ以上のグループ識別子、ユーザが任意のグループベース通信チャネルの所有者であるかどうかの識別表示、ユーザが任意のグループベース通信チャネル制限を有しているかどうかの識別表示、複数のメッセージ、複数の絵文字、複数の会話、複数の会話トピック、アバター、電子メールアドレス、実名(例えば、John Doe)、ユーザ名(例えばjdoe)、パスワード、タイムゾーン、ステータスその他を含む、ユーザに関連付けられた情報を指す。ユーザアカウント詳細は、例えば、ユーザのユーザ名およびパスワードを含むユーザのログイン情報など、ユーザ資格情報の部分集合の指定を含むことができる。
【0026】
用語「クライアントデバイス」は、1つ以上のサーバによって利用可能とされた1つ以上のサービスにアクセスするように構成されたコンピュータハードウェアおよび/またはソフトウェアを指す。サーバは、(常にではないが)多くの場合に別のコンピュータシステム(例えば、グループベース通信プラットフォームなどのコンピューティングプラットフォーム)上にあり、この場合、クライアントデバイスは、ネットワークを介してサービスにアクセスする。クライアントデバイスが、ユーザが属するグループ(例えばユーザグループ)を示唆する電子的な識別表示であるグループ識別表示に関連付けられ得る。クライアントデバイスが、非限定的に、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、ウェアラブル機器、パーソナルコンピュータ、企業コンピュータその他を含み得る。
【0027】
コンピューティングプラットフォームのサービスにアクセスするために、クライアントデバイスおよび/またはコンピューティングプラットフォームは、個々の接続セッションとして実施されたネットワークコネクション(例えば「通信コネクション」)をそれらの間に確立する。単一のクライアントデバイスが、一定期間にわたるデータ転送のために、コンピューティングプラットフォームとの複数の接続セッションを利用し得る。本明細書で説明するように、特定のクライアントデバイスに関連するデータ(例えば、特定のオブジェクトの更新)は、(クライアントデバイスがコンピューティングプラットフォームから切断されている間に)接続セッション間でコンピューティングプラットフォームによって生成し(またはコンピューティングプラットフォームに提供し)続けることができ、そのようなデータは、後続の接続セッション中にクライアントデバイスに提供することがで
きる。
【0028】
実施形態では、通信コネクションが、アクティブなウェブソケットコネクション(例えば、「リアルタイムメッセージング」(RTM)コネクション、「プッシュ」コネクション、またはサーバによって開始されるコネクション)、非RTMコネクション(例えば、「プル」コネクション、またはクライアントによって開始されるコネクション)その他であり得る。クライアントデバイスが、アクティブなウェブソケットコネクションによってRTMサーバ(例えば、リアルタイムメッセージング通信用に構成されたグループベース通信サーバ)と通信し得る。クライアントデバイスが、加えてまたは代わりに、(例えば、HTTP要求メッセージの利用によって)非RTMコネクションによって非RTMサーバ(例えば、リアルタイムメッセージング通信用に構成されていないグループベース通信サーバ)と通信し得る。
【0029】
用語「グループベース通信システム」および「グループベース通信プラットフォーム」は、複数のグループベース通信インタフェースおよび全ての関連する機能をサポートおよび維持するように構成された、通信ソフトウェアプラットフォームおよび関連するハードウェアを指す。グループベース通信システムのユーザが、組織グループ(例えば、異なる会社の従業員が、別個の組織グループとなり得る)に編成され、各グループが、それぞれのグループベース通信インタフェースを介してシステムとインタラクトする。例えば、グループベース通信システムはとりわけ、Slack Corporation社のグループベース通信イン
タフェースおよびACME Corporation社のグループベース通信インタフェースをサポートし得る。グループベース通信システムの例が、支援サーバ、クライアントデバイス、および外部アプリケーションサーバを備える。
【0030】
用語「グループベース通信チャネル」は、チャネルメンバー(例えば、クライアントデバイスを使用して環境にアクセスしている検証済みユーザ)によって投稿された、グループのメンバーのみが閲覧可能なグループベースメッセージを表示するように構成された仮想の通信環境またはフィードを指す。グループベース通信チャネルの形式は、グループベース通信チャネルの異なるメンバーにとって異なるように見える場合があるが、グループベース通信チャネルのコンテンツ(すなわちグループベースメッセージ)は、グループベース通信チャネルの各メンバーに対して表示される。例えば、グループベース通信チャネルインタフェースのコンテンツ(すなわち、グループベースのメッセージ)が、グループベース通信チャネルのメンバーごとに変化しないように、それぞれのグループベース通信チャネルの各メンバーに対して共通のグループベースメッセージセットが表示される。しかし、実施形態では、グループベース通信チャネルインタフェースのコンテンツは、各メンバーに関連付けられた様々な権限に基づいてグループベース通信チャネルのメンバーごとに異なる場合がある(例えば、第1のメンバーが、ファイルと共にメッセージをチャネルに投稿することができ、メッセージは第2のメンバーに対して表示することができるが、ファイルには第2のメンバーによってアクセスすることができない場合があり、この場合、ファイルの表示は、第1のメンバーに対するファイルの表示とは異なり得る)。
【0031】
複数の通信チャネルは、1つ以上のコンピューティングデバイスのそれぞれで機能することができ、したがって、通信チャネル識別子を通信チャネルに割り当てることができ、通信チャネル識別子は、その通信チャネルの関連するデータが記憶されているデータベース内の物理アドレスを示すとともに、通信チャネル上で交換されるデータを受信するために通信チャネルに参加するクライアントデバイスを識別するために利用される。したがって、通信チャネル識別子は、複数の通信チャネルに関連付けられたコンピューティングデバイス上でも通信チャネルが個別かつ別個のままであることを保証する。
【0032】
通信チャネルは「パブリック」であってよく、この通信チャネルは、任意のクライアン
トデバイスが通信チャネルを介して情報共有に参加および関与することを可能にし得る。通信チャネルは「プライベート」であってよく、この通信チャネルは、通信チャネル内のデータ通信を特定のクライアントデバイスおよび/またはユーザに制限し得る。
【0033】
用語「グループベース通信チャネルインタフェース」は、チャネルメンバー(例えば、クライアントデバイスを使用して環境にアクセスしている検証済みユーザ)によって投稿された、グループのメンバーのみが閲覧可能なメッセージング通信を表示するように構成された仮想の通信環境またはフィードを指す。グループベース通信チャネルインタフェースの形式は、グループベース通信チャネルの異なるメンバーにとって異なるように見える場合があるが、グループベース通信チャネルインタフェースのコンテンツ(すなわちメッセージング通信)は、グループベース通信チャネルの各メンバーに対して表示される。例えば、グループベース通信チャネルインタフェースのコンテンツ(すなわちメッセージング通信)が、グループベース通信チャネルのメンバーごとに変化しないように、共通のグループベースメッセージング通信セットが、それぞれのグループベース通信チャネルの各メンバーに対して表示される。
【0034】
特定の実施形態では、グループベース通信インタフェースは、例えば、表示ウィンドウ内に複数の可視ペインを含み得る。特定の実施形態では、各表示ペインが、特定のデータ形式を表示するように構成され得る。例えば、左端のペインが、ユーザが利用可能なチャネルおよび/または直接メッセージの一覧を提示することができ、右端の(または3ペイン構成の中央ペイン)が、メッセージが交換される特定のチャネルのコンテンツを表示することができる(それらの表示されたメッセージを全て表示することを含む)。中央ペインのコンテンツは、特定の実施形態ではスクロール可能なフィードとして提示され得る。メイン表示ウィンドウが3つのペインを備える実施形態では、右端のペインは、特定の選択されたメッセージ、チャネル、および/またはその他に関する追加データを含み得る。
【0035】
本明細書において、用語「メッセージング通信」および「メッセージ」は、クライアントデバイスを使用するユーザによって提供され、かつグループベース通信インタフェース内に表示するように構成された、電子的に生成された任意のデジタルコンテンツオブジェクトを指す。メッセージ通信が、(クライアントデバイスを使用する)ユーザによって提供される任意のテキスト、画像、ビデオ、オーディオ、またはそれらの組み合わせを含み得る。例えば、ユーザは、メッセージのコンテンツとしてテキストならびに画像およびビデオをメッセージ内に含むメッセージング通信を提供し得る。そのような場合、テキスト、画像、およびビデオは、メッセージング通信またはデジタルコンテンツオブジェクトを構成する。グループベース通信システムの通信チャネル(例えばグループベース通信チャネル)に送信または投稿された各メッセージは、送信側ユーザ識別子、メッセージ識別子、メッセージコンテンツ、オブジェクト識別子、グループ識別子、および/またはグループベース通信チャネル識別子を含む、メタデータを含む。前述の識別子のそれぞれは、ASCIIテキスト、ポインタ、メモリアドレスその他を含み得る。メッセージは、グループベース通信インタフェースの個々のペイン(単一のペインが特定の表示ウィンドウ内で視認可能である)内で生成および/または編集することができ、かつ/またはメッセージは、別個の表示ウィンドウ内で生成および/または編集することができる(例えば、別個の表示ウィンドウが、通信チャネル内で共有される投稿を生成するために、かつ/または他のユーザとの通話を開始するために、利用され得る)。
【0036】
本明細書で使用される用語「オブジェクト」は、そのための更新が1つ以上のクライアントデバイスに提供および発信され得る、任意のコンテンツソースを指し得る。特定のユーザを他のユーザにとってのオブジェクトと見なすことができ、特定のユーザの特性および/または活動に関する更新を他のクライアントデバイスに発信できるようになっている。特定の実施形態では、オブジェクトをファイルとしても実施することができ、ファイル
に対する更新を個々のクライアントデバイスに発信できるようになっている。特定の実施形態では、オブジェクトをチャネルとしても実施することができ、チャネルに対する更新を個々のクライアントデバイスに発信できるようになっている。特定のオブジェクトに関連する更新が、更新に関連する特定のオブジェクトを識別する追加のメタデータ(本明細書ではオブジェクト識別子と呼ばれる)を含み得るメッセージとしてグループベース通信プラットフォームから個々のクライアントデバイスに発信され得る。これらのオブジェクト識別子により、クライアントデバイスが、適切なオブジェクトに関連して更新を表示すること、および/または適切なオブジェクトに関連してクライアントデバイス上のローカルデータストレージ内に更新を記憶することが可能になる。特定の実施形態では、オブジェクト識別子は、オブジェクトに関連するオブジェクト形式(例えば、ユーザオブジェクト、ファイルオブジェクト、および/またはその他)を示すデータを含み、加えてまたは代わりに、(例えば、全てのオブジェクトから、または特定のオブジェクト形式の全てのオブジェクトから)オブジェクトを一意に識別する一意の文字列(例えば、一意の数値、一意の英数文字列、および/またはその他)を示すデータを含み得る。実施形態では、グループベース通信インタフェースが、オブジェクトの表現のグラフィカルユーザインタフェース(GUI)におけるレンダリングとなるように、グループベース通信インタフェースオブジェクトが、オブジェクトに関連付けられる。
【0037】
オブジェクト更新(または「更新オブジェクトデータ」)が、クライアントデバイスに提供され得る。クライアントデバイスのローカルデータストレージ内に記憶されたデータを、グループベース通信プラットフォームなどのコンピューティングプラットフォームから受信されたオブジェクト更新を反映した新しいデータによって置換および/または補足することにより、クライアントデバイス上のローカルデータストレージ内にローカルに記憶されたオブジェクト(例えば、コンピューティングプラットフォームに反映されたローカルに記憶されたオブジェクトのコピー)が更新される。例えば、更新オブジェクトデータが、グループベース通信インタフェースオブジェクト(例えばチャネル)に関連付けられ、クライアントデバイスがサブスクライブしたイベント(例えば、ウェブソケットイベントのサブスクリプション)を表し得る。
【0038】
データストレージ内にローカルに記憶されたオブジェクトは、クライアントデバイスで実行される1つ以上のアプリケーション、コンピュータプログラム、または他のローカル処理インスタンスによって利用され得る。これらのローカル処理インスタンスは、オブジェクトを表示するための1つ以上のグラフィカルユーザインタフェース、オブジェクトを入力として取り込むように構成された1つ以上の実行可能プログラム、および/またはその他を含み得る。ローカルに記憶されたオブジェクトは、ローカルデータストレージからオブジェクトを取得して1つ以上のローカル処理インスタンスに渡す「get」プロセスにより、ローカルデータストレージから取得され得る。例では、ローカルに記憶されたオブジェクトは、クライアントデバイス上のグループベース通信インタフェースを表示のために生成する際に利用される。
【0039】
用語「グループ識別子」または「チーム識別子」は、グループベース通信システム内のグループを識別し得る1つ以上のデータ項目を指す。例えば、グループ識別子が、ASCIIテキスト、ポインタ、メモリアドレスその他を含み得る。
【0040】
用語「グループベース通信チャネル識別子」または「チャネル識別子」は、グループベース通信チャネルを識別し得る1つ以上のデータ項目を指す。例えば、グループベース通信チャネル識別子が、ASCIIテキスト、ポインタ、メモリアドレスその他を含み得る。特定の実施形態では、(パブリックかプライベートかにかかわらず)通信チャネルが共通のグループ/チームのユーザ(およびそれらの関連するクライアントデバイス)間での使用に利用可能であり得るが、グループ間の通信チャネルが、別個のチームのユーザに関
連付けられたクライアントデバイス間で利用可能であり得る。それゆえ、チャネル識別子が、特定の通信チャネルに関連するデータ/メッセージが記憶されている場所を具体的に特定するために1つ以上のグループ識別子と共に提供され得る。
【0041】
用語「グループベース通信インタフェース」は、グループベース通信システムとのユーザインタラクションを容易にするように構成された仮想通信環境を指す。各グループベース通信インタフェースは、事業所または組織の従業員グループなど、選択されたユーザグループにとってアクセス可能かつ閲覧可能である(例えば、Slack Corp.社のインタフェ
ースは、Slack社の従業員にとってアクセス可能かつ閲覧可能であるが、ACME Corporation社のグループベース通信インタフェースは、インタフェースが共有指定されていない限
り、Slack社の従業員にとってアクセス可能でも閲覧可能でもない)。グループベース通
信インタフェースは、以下に定義する複数のグループベース通信チャネル(例えば、営業チャネル、販売チャネル、会計チャネルなど)を含む。
【0042】
「送信側ユーザ識別子」が、特定のユーザ(すなわち、特定のユーザに関連付けられたクライアントデバイス)によって送信されるメッセージの集合に関連付けられる。これらのメッセージは、ユーザに関するコンテキストを決定するために分析され得る(例えば、トピックにおけるユーザの専門知識または関心は、そのようなメッセージ内でのトピックまたはトピックに関連付けられたキーワードについての言及の頻度に基づいて決定され得る)。
【0043】
グループベース通信システムのユーザが、組織グループ(例えば、各会社の従業員が、別個の組織グループとなり得る)に編成され、各組織グループは、ユーザが割り当てられ得るか、またはユーザが参加し得る、1つ以上の通信チャネル(例えばグループベース通信チャネル)を有し得る(例えば、グループベース通信チャネルが、部門、オフィスなどの地理的位置、製品ライン、ユーザの関心、トピック、案件、および/またはその他を表し得る)。グループ識別子が、メッセージに対するアクセス制御を容易にするために使用され得る(例えば、検索クエリに応答する検索結果の一部としてメッセージ返信を有するなど、メッセージへのアクセスが、ユーザプロファイルに関連付けられたグループ識別子を有するユーザに制限され得る)。グループ識別子は、メッセージのコンテキストを決定するために使用され得る(例えば、組織の名称および/または組織の簡単な説明などのグループの説明が、グループ識別子に関連付けられ得る)。
【0044】
グループベース通信システムのユーザが、通信チャネル(例えばグループベース通信チャネル)に参加することができ、または通信チャネルを作成することができる。いくつかのグループベース通信チャネルが、ユーザプロファイルに関連付けられた特定の組織グループ識別子を有するユーザ(すなわち、組織のメンバーであるユーザ)にとってグローバルにアクセス可能であり得る。いくつかのグループベース通信チャネルへのアクセスは、指定されたグループのメンバーに制限することができ、それにより、グループベース通信チャネルは、ユーザプロファイルに関連付けられた特定のグループ識別子を有するユーザにとってアクセス可能である。グループベース通信チャネル識別子は、メッセージに対するアクセス制御を容易にするために使用され得る(例えば、検索クエリに応答する検索結果の一部としてメッセージ返信を有するなど、メッセージへのアクセスが、ユーザプロファイルに関連付けられたグループベース通信チャネル識別子を有するユーザ、またはグループベース通信チャネルに参加する能力を有するユーザに制限され得る)。グループベース通信チャネル識別子は、メッセージのコンテキストを決定するために使用され得る(例えば、グループベース通信チャネルにおいて議論されるプロジェクトの説明など、グループベース通信チャネルの説明が、グループベース通信チャネル識別子に関連付けられ得る)。グループベース通信チャネルが、グループベース通信インタフェースに表示され得る、グループベース通信チャネルに関連付けられた名称(グループベース通信チャネル名)
を有することができ、それにより、クライアントデバイスを有するユーザが、表示された名称を選択するためにインタフェースとインタラクトし得るようになっている。
【0045】
用語「プライベートグループベース通信チャネル」は、一般的にグループベース通信システムの他のメンバーによってアクセス可能および/または検索可能とならないようにアクセスが制限されたグループベース通信チャネルを指す。例えば、プライベートグループベース通信チャネルの情報およびプライベートグループベース通信チャネルにアクセスする権限(例えば、ユーザが検証/認証された後にプライベートグループベース通信チャネル用のグループベース通信チャネル識別子が、ユーザプロファイルに関連付けられる)を有するユーザまたは管理者のみが、プライベートグループベース通信チャネルのコンテンツを閲覧し得る。
【0046】
特定の実施形態を参照して本明細書で説明する「グループベース通信サーバ」または「リモートサーバ」は、(例えば、インタフェースコンピューティングエンティティを介して)クライアントデバイス間でオブジェクト更新および/または他のメッセージを受信および/または発信するために、様々なクライアントデバイスとインタラクトするように構成されたコンピューティングデバイスである。グループベース通信サーバが、(例えば、関連するクライアントデバイスを介して)ユーザから受信されたメッセージおよび/またはユーザに発信されたメッセージを受信、生成、(関連するデータベースに)記憶、および/または誘導するように構成され得る。グループベース通信サーバの機能は、共通の機能を有する単一のサーバまたはサーバ群によって提供されてもよく、またはグループベース通信サーバの機能は、グループベース通信サーバの記述した機能の部分集合を実行する複数のサーバまたはサーバ群の間でセグメント化されてもよい。
【0047】
グループベース通信サーバまたはリモートサーバは、様々なクライアントデバイスとの接続セッションを維持するように構成され得る。具体的には、1つ以上のサーバが、グループベース通信プラットフォームのグループベース通信サーバとそれぞれのクライアントデバイスとの間でメッセージ(例えばオブジェクト更新)および対応するメタデータ(例えば、オブジェクト識別子を含む)をリアルタイムで送信するために、複数のクライアントデバイスのそれぞれによって開始されたウェブソケットコネクション(例えば、アクティブなウェブソケットコネクション)を維持するように構成され得る。
【0048】
用語「サーバプッシュベースの通信コネクション」は、情報の送信要求がサーバまたはパブリッシャによって開始されるネットワークコネクションを指す。実施形態では、「サーバプッシュベースの通信コネクション」が、クライアントデバイスによって事前にサーバに対して表明された情報選好に基づくものであり得る。実施形態では、サーバプッシュベースの通信コネクションがまた、クライアントデバイスに関連付けられたユーザ識別子に関連付けられた情報に基づくものであり得る。実施形態では、クライアントデバイスが、特定のオブジェクト識別子に関連付けられたイベントをサブスクライブし、それにより、特定のオブジェクト識別子のための更新オブジェクトデータが利用可能である(すなわち、イベントが発生した)場合に常に、サーバが更新オブジェクトデータをクライアントデバイスにプッシュする。
【0049】
用語「クライアントプルベースの通信コネクション」は、情報の送信要求がクライアントデバイスまたは要求者によって開始され、サーバまたはパブリッシャによって応答される、ネットワークコネクションを指す。
【0050】
用語「リアルタイム」は、コンピューティングアプリケーションにアクセスしているユーザによって要求されると迅速に応答するコンピューティングアプリケーションを記述するために使用される。例えば、リアルタイムメッセージングが、送信側クライアントデバ
イスから受信側クライアントデバイスへのメッセージのリアルタイムまたはライブ送信を提供するグループベース通信インタフェースを備え得る。「リアルタイム」が、コンピューティングの制約内で「過度の遅延なしに」または「可能な限り瞬時に」と見なされ得ることが理解されよう。
【0051】
用語「ユーザインタラクション入力」は、クライアントデバイスに通信可能に結合された入力デバイスとのユーザインタラクションの結果としてクライアントデバイスによって受けられる入力を指す。例えば、ユーザインタラクション入力が、マウスクリックおよび/またはタッチスクリーン選択を含み得る。
【0052】
用語「電子インタラクション」は、ユーザインタラクション入力の電子的な表現を指す。例えば、マウスクリックの形式のユーザインタラクションが、タイムスタンプ、オブジェクト識別子、およびインタラクション形式(例えば、選択/クリック)によって表され得る。
【0053】
用語「テールデータペイロード」は、オブジェクト識別子に関連付けられ、かつテールデータペイロードのポーリング要求に関連付けられたタイムスタンプよりも前のタイムスタンプに関連付けられた、複数のデータレコードを指す。例えば、テールデータペイロードが、オブジェクト識別子(例えばグループベース通信チャネル識別子)に関連付けられた、既定数(例えば、N、20など)の「最近の」オブジェクトイベント(例えば、メッセージ、リアクション、編集、削除)を表し得る。
【0054】
用語「インタラプト」は、ネットワーク/通信コネクションの障害を指す。
【0055】
用語「ポーリング要求」は、クライアントデバイスによってグループベース通信サーバからデータを取得するための、クライアントデバイスからグループベース通信サーバに送信されるメッセージを指す。例では、ポーリング要求が、オブジェクト識別子、クライアントデバイス識別子、およびタイムスタンプを含み得る。
【0056】
用語「テールデータペイロードの部分集合」は、テールデータペイロードに含まれるデータの部分集合を指す。
【0057】
用語「更新コンテンツ識別子」は、更新コンテンツのインスタンスのデジタル表現を指す。例えば、更新コンテンツ識別子が、タイムスタンプ、単調に増分される修正番号、およびコンテンツまたはコンテンツハッシュの一方から導出された識別子であり得る。更新コンテンツ識別子は、コンテンツの変更が生じたことをクライアントデバイスに示すことが理解されよう。
【0058】
用語「タイムスタンプ」は、特定の発生に関連付けられたネットワーク時間における、ポーリング要求またはメッセージ送信などのインスタンスのデジタル表現を指す。例えば、タイムスタンプが以下:「<timestamp+2020-12-31 23:59:59+</timestamp>」のように
なり得る。実施形態では、タイムスタンプがウォールクロック(例えば、2020-12-31)に関連する。実施形態では、タイムスタンプが、変更の比較(すなわち、より古い変更またはより新しい変更)をサポートする単調に増加する識別子(例えば、インスタンスが一意に識別され得る1つ以上のデータ項目)である。実施形態では、タイムスタンプが、インスタンスまたはコンテンツの発生が以前のインスタンスまたは発生とは異なることを表すコンテンツアドレス識別子(例えば、コンテンツの変更が一意に識別され得る1つ以上のデータ項目)である。
【0059】
ウォールクロックに関連するタイムスタンプ、および単調に増加する識別子であるタイ
ムスタンプが、時間の経過によってデータが更新されたことをクライアントデバイスに示すことが理解されよう。コンテンツアドレス識別子としてのタイムスタンプは、時間の経過によってデータが異なっていることをクライアントデバイスに示すことがさらに理解されよう。上述のタイムスタンプの全ての例の1つまたは組み合わせが、任意の時点または任意のモジュールにて本開示の実施形態に使用され得ることが理解されよう。
【0060】
用語「ポーリング要求タイムスタンプ」は、特定のポーリング要求がクライアントデバイスによって送信された時、またはグループベース通信サーバによって受信された時に関連付けられたタイムスタンプを指す。
【0061】
用語「レコード」は、特定のオブジェクト識別子に関連付けられたオブジェクトデータを含むデータ構造を指す。実施形態では、オブジェクトデータは、タイムスタンプに関連付けられる。実施形態では、レコードは、タイムスタンプに関連付けられる。
【0062】
用語「マウスクリック」は、通信可能に結合されたハンドヘルド式ポインティングデバイスからクライアントデバイスによって受けられた入力を指す。実施形態では、マウスクリックが、グループベース通信インタフェースに表示された複数のオブジェクトのうちの1つの電子的選択を示す。実施形態では、マウスクリックが、1つ以上のオブジェクト識別子に関連付けられる。
【0063】
用語「タッチスクリーン選択」は、クライアントデバイスの電子視覚表示装置に重ねられた入力デバイス(例えば画面)からクライアントデバイスによって受けられた入力を指す。実施形態では、タッチスクリーン選択が、グループベース通信インタフェースのオブジェクトが表示されている画面の「タッチ」を示す。実施形態では、タッチスクリーン選択が、1つ以上のオブジェクト識別子に関連付けられる。
【0064】
用語「ウェブAPI」は、グループベース通信プラットフォームと、グループベース通信プラットフォームにアクセスしているクライアントまたは他のデバイスとの間でインタラクションが生じる定義された一連のインタフェースを指す。例では、ウェブAPIが、ハイパーテキスト転送プロトコル(HTTP)要求メッセージなどの一連の仕様と、例えば、JavaScript Object Notation(JSON)形式の一連の応答メッセージである。
【0065】
用語「HTTP要求」は、クライアントデバイスによってグループベース通信サーバからデータを取得するための、クライアントデバイスからグループベース通信サーバに送信されるHTTPメッセージを指す。実施形態では、HTTP要求は、GETまたはPOST要求であり得る。
【0066】
特定の実施形態では、インタフェースコンピューティングエンティティおよび/またはメッセージ配信サーバの1つ以上が、例えば、1つ以上のコンピューティングエンティティに地理的に近接するクライアントデバイスにサービスを提供するために、地理的に分散され得る。しかし、特定の実施形態では、(インタフェースコンピューティングエンティティおよび/またはメッセージ配信サーバを含む)様々なコンピューティングエンティティが、一元的に配置され得る。
【0067】
[システムアーキテクチャの例]
本発明の方法、装置、およびコンピュータプログラム製品は、様々なデバイスのいずれかによって実施することができる。例えば、実施形態の例の方法、装置、およびコンピュータプログラム製品は、1つ以上のクライアントデバイスなどの1つ以上のデバイスと通信するように構成された、サーバまたは他のネットワークエンティティなどのネットワー
クデバイスによって実施することができる。いくつかの好ましい非限定的な実施形態では、コンピューティングデバイスは、パーソナルコンピュータまたはコンピュータワークステーションなどの固定型のコンピューティングデバイスを含み得る。またさらに、実施形態の例は、携帯型デジタルアシスタント(PDA)、携帯電話、スマートフォン、ラップトップコンピュータ、タブレットコンピュータ、ウェアラブル機器、または前述のデバイスの任意の組み合わせなど、様々なモバイルデバイスのいずれかによって実施することができる。
【0068】
図1は、本発明の実施形態が機能し得るコンピューティングシステムの例を示す。ユーザは、クライアントデバイス101A~101Nを用いて通信ネットワーク104を介してグループベース通信プラットフォーム105にアクセスし得る。
【0069】
通信ネットワーク104は、例えば、有線または無線のローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)その他を含む、有線または無線の通信ネットワークと、それを実装するために必要な任意のハードウェア、ソフトウェア、および/またはファームウェア(例えばネットワークルータなど)とを含み得る。例えば、通信ネットワーク104は、携帯電話、802.11、802.16、802.20、および/またはWiMaxのネットワークを含み得る。さらに、通信ネットワーク104は、インターネットなどのパブリックネットワーク、イントラネットなどのプライベートネットワーク、またはそれらの組み合わせを含むことができ、非限定的にTCP/IPベースのネットワークプロトコルを含む、現在利用可能であるか、または後に開発される、様々なネットワークプロトコルを利用し得る。本明細書で説明するように、ネットワークプロトコルは、ウェブソケット通信によってデータ伝送を可能にするように構成されている。例えば、ネットワークプロトコルは、グループベース通信システムのニーズに合わせてカスタマイズされ得る。いくつかの実施形態では、プロトコルは、ウェブソケットチャネルによって送信されるJSONオブジェクトのカスタムプロトコルである。いくつかの実施形態では、データが、JSON over RPC、JSON over REST/HTTPその他の複数のプロトコルによって伝送され得る。
【0070】
図示の実施形態では、グループベース通信プラットフォーム105は、複数のグループベース通信リポジトリ107と、通信ネットワーク103を介してアクセス可能な複数のグループベース通信サーバ106_1~106Nとを含む。集合的に、グループベース通信サーバ106_1~106Nは、1つ以上のクライアントデバイス101A~101Nから送信されたメッセージを受信し、(該当する場合に)オブジェクト更新を示すメッセージを生成および/または受信し、適切なクライアントデバイス101A~101Nにメッセージを送信するように構成されている。
【0071】
クライアントデバイス101A~101Nは、上で定義したような任意のコンピューティングデバイスであり得る。グループベース通信サーバ106_1~106Nとクライアントデバイス101A~101Nとの間で交換される電子メッセージデータが、様々な形式および様々な方法で提供され得る。
【0072】
いくつかの好ましい非限定的な実施形態では、クライアントデバイス101A~101Nの1つ以上が、スマートフォンまたはタブレットなどのモバイルデバイスである。1つ以上のクライアントデバイスは、「アプリ」または他の実行可能なローカル処理インスタンスを実行して、グループベース通信サーバ106_1~106Nとインタラクトし得る。そのようなアプリは典型的に、スマートフォンまたはタブレットなどのモバイルデバイス上で実行されるように設計されている。例えば、iOS(登録商標)、Android(登録商標)、またはWindows(登録商標)などのモバイルデバイスオペレーティ
ングシステム上で実行されるアプリが提供され得る。これらのプラットフォームは典型的に、アプリが互いに通信でき、またモバイルデバイスの特定のハードウェア構成要素およびソフトウェア構成要素と通信できるようにする、フレームワークを提供する。例えば、名前を挙げたモバイルオペレーティングシステムはそれぞれ、ロケーションサービス回路、有線および無線のネットワークインタフェース、ユーザの連絡先、ならびに他のアプリケーションとインタラクトするためのフレームワークを提供する。アプリの外部で実行されるハードウェアモジュールおよびソフトウェアモジュールとの通信が典型的に、モバイルデバイスオペレーティングシステムによって提供されるアプリケーションプログラミングインタフェース(API)を介して提供される。このように、クライアントデバイス101A~101N上で実行されるアプリによって、これらのクライアントデバイス101A~101Nは、1つ以上のウェブソケットコネクションまたは他の通信コネクションを介してグループベース通信プラットフォーム105と通信するように構成されている。
【0073】
いくつかの好ましい非限定的な実施形態では、クライアントデバイス101A~101Nは、ウェブブラウザによってグループベース通信サーバ106_1~106Nとインタラクトし得る。クライアントデバイス101A~101Nはまた、グループベース通信サーバ106_1~106Nとインタラクトするように設計された様々なハードウェアまたはファームウェアを含み得る。重ねて、クライアントデバイス101A~101Nのブラウザによって、クライアントデバイス101A~101Nは、1つ以上のウェブソケットコネクションまたは他の通信コネクションを介してグループベース通信プラットフォーム105と通信するように構成されている。
【0074】
例示的なグループベース通信プラットフォーム105のいくつかの実施形態では、メッセージまたはメッセージング通信が、クライアントデバイス101A~101Nからグループベース通信プラットフォーム105に送信され得る。様々な実装では、メッセージが、クライアントデバイス101A~101Nの1つによって直接、通信ネットワーク104を介してグループベース通信プラットフォーム105に送信され得る。メッセージは、メッセージサーバおよび/またはその他の中継を介してグループベース通信プラットフォーム105に送信され得る。例えば、クライアントデバイス101A~101Nは、クライアントアプリケーション(例えばグループベース通信アプリ)が実行されている、デスクトップ、ラップトップ、タブレット、スマートフォン、および/またはその他であり得る。一実装では、メッセージは、メッセージ識別子、送信側ユーザ識別子、グループ識別子、グループベース通信チャネル識別子、メッセージコンテンツ(例えば、テキスト、絵文字、画像、リンク)、添付ファイル(例えばファイル)、メッセージ階層データ(例えば、メッセージは、別のメッセージへの返信であり得る)、サードパーティメタデータ、および/またはその他などのデータを含み得る。一実施形態では、クライアントデバイス101A~101Nは、以下のメッセージの例を実質的に、以下に提示するような拡張マークアップ言語(「XML」)書式化データを含む(セキュアな)ハイパーテキスト転送プロトコル(「HTTP(S)」)POSTメッセージの形式で提供し得る。
【0075】
【0076】
【0077】
【0078】
図示の実施形態では、グループベース通信プラットフォーム105は、チャネル識別子および/またはグループ識別子によって識別されるチャネル内の複数のクライアントデバイス101A~101Nとの間で送信されるメッセージをおよび/または複数のクライアントデバイスに送信されるメッセージを受信および/または発信するように、かつ通信チャネルのメンバーシップを集合的に形成するクライアントデバイス101A~101Nの間でのそれらのメッセージの発信を容易にするように構成された、複数のグループベース通信サーバ106_1~106Nを備える。
【0079】
いくつかの実施形態では、上で定義したオブジェクト識別子が、特定のメッセージが特定のオブジェクトに関連するオブジェクト更新として実施されていることを示すためにメッセージに関連付けられ得る。
【0080】
いくつかの実施形態では、応答を示すデータが、メッセージに関連付けられ得る。例えば、メッセージへの他のユーザによる応答が、リアクション(例えば、メッセージに関連付けられた絵文字の選択、メッセージに関連付けられた「いいね」ボタンの選択)、メッセージに埋め込まれたハイパーリンクのクリック、メッセージへの返信(例えば、メッセージに応答してグループベース通信チャネルインタフェースにメッセージを投稿すること)、メッセージに関連付けられたファイルのダウンロード、あるグループベース通信チャネルから別のグループベース通信チャネルへのメッセージの共有、メッセージのピン止め、メッセージの星付け、および/またはその他を含み得る。一実装では、メッセージへの他のユーザによる応答に関するデータが、メッセージに含まれてよく、メッセージは、応答を決定するために(例えば、PHPコマンドを用いて)解析され得る。別の実装では、メッセージへの応答に関するデータが、データベースから取得され得る。例えば、メッセージへの応答に関するデータが、以下のようなMySQLデータベースコマンドによって取得され得る。
【0081】
例えば、メッセージへの応答に関するデータが、メッセージのコンテキスト(例えば、あるユーザの観点によるメッセージのソーシャルスコア)を決定するために使用され得る。別の例では、メッセージへの応答に関するデータが、ユーザに関するコンテキストを決定するために分析され得る(例えば、トピックにおけるユーザの専門知識が、トピックに関するユーザのメッセージへの応答に基づいて決定され得る)。
【0082】
実施形態では、添付ファイルが、メッセージに含まれ得る。添付ファイルがある場合には、ファイルをメッセージに関連付けることができ、これらのファイルは、特定の実施形態では、対応するオブジェクト識別子を有するオブジェクトとして別個に識別され得る。一実装では、メッセージは、添付ファイルのファイル名を決定するために(例えば、PHPコマンドを用いて)解析され得る。例えば、ファイルコンテンツが、メッセージのコンテキストを決定するために分析され得る(例えば、特許方針の文書が、メッセージがトピック「特許」に関連付けられることを示し得る)。
【0083】
実施形態では、会話プリミティブが、メッセージに関連付けられ得る。一実装では、会話プリミティブが、メッセージの分析、インデクス化、記憶、および/またはその他に使用される要素である。例えば、メッセージは、それ自体で分析することができ、それ独自の会話プリミティブを形成し得る。別の例では、メッセージは、会話を構成する他のメッセージと共に分析することができ、会話を構成するメッセージは、会話プリミティブを形
成し得る。一実装では、会話プリミティブは、メッセージ、指定された数(例えば2個)の前のメッセージ、および指定された数(例えば2個)の後のメッセージとして決定され得る。別の実装では、会話プリミティブは、メッセージおよび(例えばチャネル内の)他のメッセージにおいて議論されるトピック、ならびに/またはこれらのメッセージの近接性(例えば、メッセージ送信順序の近接性、メッセージ送信時間の近接性)の分析に基づいて決定され得る。
【0084】
実施形態では、上述のように決定された様々なメタデータ、および/またはメッセージコンテンツが、(例えば、会話プリミティブを用いて)メッセージをインデクス化するために、かつ/または様々な検索のファセット(すなわち、グループベース通信サーバ106_1~106Nから結果を返す検索クエリ)を容易にするために使用され得る。メッセージに関連付けられたメタデータを決定することができ、メッセージは、グループベース通信サーバ106_1~106Nにおいてインデクス化され得る。一実施形態では、メッセージは、会社のメッセージとグループのメッセージとが、(例えば、グループおよび/または会社に関連付けられ、他のグループおよび/または会社と共有されない別個のインデクスで)別個にインデクス化されるように、インデクス化され得る。一実装では、メッセージが、(例えば、セキュリティ目的のデータ分離を容易にするために)別個の分散リポジトリにてインデクス化され得る。メッセージに関連付けられた添付ファイルがある場合、関連付けられたファイルのファイルコンテンツが、そのようなファイルの検索を容易にするようにインデクス化するために、グループベース通信サーバ106_1~106Nにおいて使用され得る。一実施形態では、ファイルは、会社のファイルまたはグループのファイルが別個の分散リポジトリにてインデクス化されるように、インデクス化され得る。
【0085】
1つ以上のクライアントデバイス101A~101Nとグループベース通信プラットフォーム105との間における電子情報交換の例について、
図1を参照して以下に記述する。
【0086】
図1に示すように、グループベース通信プラットフォーム105は、個々のクライアントデバイス101A~101Nが、様々なメッセージを互いに交換すること、および/またはグループベース通信プラットフォーム105から発信されたオブジェクト更新を取得することを可能にする。そのようなメッセージを交換するために、個々のクライアントデバイス101A~101Nが、通信プロトコルによって(例えば、ウェブソケット、非RTM(非リアルタイムメッセージング)プロトコル、および/またはその他によって)メッセージ(例えば、テキストベースのメッセージ、ファイル、ビデオおよび/またはオーディオストリーム、および/またはその他)を送信する。それらのメッセージは、最終的に1つ以上のグループベース通信サーバ106_1~106Nに提供され、グループベース通信サーバは、メッセージをインデクス化し、それらのメッセージをメッセージの意図された受信者(例えばクライアントデバイス101A~101N)に配信する。オブジェクト更新が同様に、グループベース通信サーバ106_1~106Nに提供されるが、そのようなオブジェクト更新は、クライアントデバイス101A~101Nから送出され得ない。代わりに、オブジェクト更新が、1つ以上の外部システム(例えばファイル管理システム)から提供されてもよく、またはオブジェクト更新は、グループベース通信プラットフォーム105内の1つ以上のコンピューティングエンティティによって生成されてもよい。配信メッセージは、グループベース通信サーバ106_1~106Nによって受信側クライアントデバイス101A~101Nに提供され、グループベース通信サーバは、メッセージの個々の受信側クライアントデバイス101A~101Nとのウェブソケットコネクションを維持する。
【0087】
図1の実施形態によれば、クライアントデバイス101A~101Nは、受信されたメ
ッセージを、クライアントデバイス101A~101Nのユーザが利用可能なコンテキスト関連ユーザインタフェースに表示するように構成されている。例えば、グループベース通信チャネルの一部である第1のクライアントデバイス101から送信されたメッセージが、グループベース通信チャネルの他のメンバーに関連付けられたクライアントデバイス101A~101N上のユーザインタフェース表示ウィンドウに表示される。本明細書で説明するように、特定のオブジェクト更新を示すメッセージが、それらのメッセージを、適切なユーザ表示要素などの適切なコンテキストと共におよび/または該当するオブジェクトに関連付けて表示するために、受信側クライアントデバイス101A~101Nによって使用可能なオブジェクト識別子と共に送信される。その上、オブジェクト識別子は、本明細書で説明するようなオブジェクトサブスクリプションに基づく特定のクライアントデバイス101A~101N宛てのメッセージをフィルタリングするために、グループベース通信サーバ106_1~106Nの様々なサーバによって使用可能であり得る。
【0088】
個々のクライアントデバイス101A~101Nにメッセージを配信するために、メッセージは、クライアントデバイス101A~101Nのそれぞれに宛てられた全てのメッセージを誘導し、それらのメッセージの全てを適切なコネクション(例えば、ウェブソケットコネクションまたは非RTMコネクション)によってクライアントデバイス101A~101Nに送信する、グループベース通信サーバ106_1~106Nから送信される。
【0089】
[様々な実施形態によって利用される装置の例]
各グループベース通信サーバ106は、
図2Aに示す装置200などの1つ以上のコンピューティングシステムによって実施することができる。装置200は、プロセッサ202、メモリ204、入力/出力回路206、通信回路208、およびグループベース通信回路210を含み得る。装置200は、本明細書に記述する動作を実行するように構成され得る。これらの構成要素202~210については、機能的な限定事項に関して記述するが、特定の実装は、特定のハードウェアの使用を必ず含むものと理解されたい。また、これらの構成要素202~210のいくつかが類似または共通のハードウェアを含み得ることを理解されたい。例えば、2組の回路が共に、各組の回路のために重複するハードウェアが必要とされないように、それらの関連する機能を実行するために同一のプロセッサ、ネットワークインタフェース、ストレージ媒体その他を活用し得る。
【0090】
いくつかの実施形態では、プロセッサ202(および/またはコプロセッサ、もしくはプロセッサを支援するかもしくはプロセッサに関連付けられた任意の他の処理回路)は、装置の構成要素間で情報を渡すためのバスを介してメモリ204と通信し得る。メモリ204は、非一時的なものであり、例えば、1つ以上の揮発性および/または不揮発性のメモリを含み得る。言い換えると、例えば、メモリ204は、電子記憶装置(例えばコンピュータ可読ストレージ媒体)であり得る。メモリ204は、本発明の実施形態の例に従って装置が様々な機能を実行することを可能にするための情報、データ、コンテンツ、アプリケーション、命令その他を記憶するように構成され得る。
【0091】
プロセッサ202は、いくつかの異なる方法で実施することができ、例えば、独立して動作するように構成された1つ以上の処理装置を含み得る。いくつかの好ましい非限定的な実施形態では、プロセッサ202は、命令、パイプライン、および/またはマルチスレッドの独立した実行を可能にするようにバスを介して並列に構成された1つ以上のプロセッサを含み得る。用語「処理回路」の使用は、装置内部のシングルコアプロセッサ、マルチコアプロセッサ、マルチプロセッサ、および/またはリモートプロセッサすなわち「クラウド」プロセッサを含むものと理解され得る。
【0092】
いくつかの好ましい非限定的な実施形態では、プロセッサ202は、メモリ204に記
憶されている命令またはプロセッサ202がアクセス可能な命令を実行するように構成され得る。いくつかの好ましい非限定的な実施形態では、プロセッサ202は、ハードコードされた機能を実行するように構成され得る。このように、ハードウェアもしくはソフトウェアの方法またはそれらの組み合わせによって構成されているかにかかわらず、プロセッサ202は、適宜に構成され、本発明の実施形態による動作を実行し得る、(例えば、回路に物理的に実施された)エンティティを表し得る。代わりに、別の例として、プロセッサ202がソフトウェア命令の実行器として実施される場合、命令は、命令が実行されると、本明細書に記述したアルゴリズムおよび/または動作を実行するようにプロセッサ202を具体的に構成してもよい。
【0093】
単なる一例として、プロセッサ202は、複数のクライアントデバイス101A~101Nを接続する1つ以上の通信チャネルを、クライアントデバイスの間でのメッセージ共有/発信を可能にするように維持するように構成され得る。プロセッサ202は、特定の通信チャネル内のクライアントデバイス101A~101N間で交換することを意図したメッセージが、クライアントデバイス101A~101Nによって提供されるそれぞれの表示ウィンドウ内に表示するために、それらのクライアントデバイス101A~101Nに適切に発信されることを保証する。
【0094】
その上、プロセッサ202は、特定の通信チャネル上で交換されるメッセージを、プロセッサにおいてメッセージを記憶および/またはインデクス化するためのデータベースと同期するように構成され得る。特定の実施形態では、プロセッサ202は、記憶および/またはインデクス化されたメッセージを、クライアントデバイス101A~101Nに発信するためのインタフェースコンピューティングエンティティ109に提供し得る。
【0095】
いくつかの実施形態では、装置200は、ユーザに出力を提供するために、いくつかの実施形態では、またユーザ入力の指示を受けるために、プロセッサ202と通信し得る入力/出力回路206を含み得る。入力/出力回路206は、ユーザインタフェースを備えてもよく、ディスプレイを含んでもよく、ウェブユーザインタフェース、モバイルアプリケーション、クライアントデバイス、キオスクその他を備えてもよい。いくつかの実施形態では、入力/出力回路206はまた、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチ領域、ソフトキー、マイク、スピーカ、または他の入力/出力機構を含み得る。プロセッサおよび/またはプロセッサを備えるユーザインタフェース回路は、プロセッサがアクセス可能なメモリ(例えば、メモリ204および/またはその他)に記憶されたコンピュータプログラム命令(例えば、ソフトウェアおよび/またはファームウェア)によって1つ以上のユーザインタフェース要素の1つ以上の機能を制御するように構成され得る。
【0096】
通信回路208は、装置200と通信するネットワークおよび/または任意の他のデバイス、回路、もしくはモジュールとの間でデータを送受信するように構成され、ハードウェアまたはハードウェアとソフトウェアとの組み合わせのいずれかで実施された、デバイスまたは回路などの任意の手段であり得る。この点に関して、通信回路208は、例えば、有線または無線の通信ネットワークとの通信を可能にするためのネットワークインタフェースを含み得る。例えば、通信回路208は、1つ以上のネットワークインタフェースカード、アンテナ、バス、スイッチ、ルータ、モデム、ならびに支援ハードウェアおよび/もしくはソフトウェア、またはネットワークを介した通信を可能にするのに適した任意の他のデバイスを含んでもよい。加えてまたは代わりに、通信回路208は、1つ以上のアンテナとインタラクトして、1つ以上のアンテナを介して信号を送信するための、または1つ以上のアンテナを介して受信される信号の受信を処理するための回路を含み得る。
【0097】
グループベース通信回路210は、分割データベースに基づいて、1つ以上のクライア
ントデバイス101A~101Nから受信される電子メッセージおよび関連するメタデータを受信し、他のクライアントデバイス101A~101Nに配信するように構成されたハードウェアを含む。グループベース通信回路210は、プロセッサ202などの処理回路を利用して、これらのアクションを実行し得る。しかし、いくつかの実施形態では、グループベース通信回路210は、本明細書に記述する動作を実行するための、別個のプロセッサ、特別に構成されたフィールドプログラマブルゲートアレイ(FPGA)、または特定用途向け集積回路(ASIC)を含み得ることも理解されたい。グループベース通信回路210は、これらの計画された機能を実装するためのハードウェアまたはソフトウェアのいずれかによって構成された、装置のハードウェア構成要素を用いて実装され得る。
【0098】
また、本明細書で説明する情報の全てまたは一部は、装置200の1つ以上の構成要素によって受信、生成および/または維持されるデータに基づくものであり得ることも留意されたい。いくつかの実施形態では、(リモートクラウドコンピューティングシステムおよび/またはデータストレージシステムなどの)1つ以上の外部システムがまた、本明細書で説明する機能の少なくとも一部を提供するために活用され得る。
【0099】
図2Bの図示の実施形態では、クライアントデバイス101は、装置220を含む1つ以上のコンピューティングシステムによって実施されている。図示の装置220は、プロセッサ212、メモリ211、入力/出力回路213、および通信回路215を含む。装置220は、本明細書に記述する動作を実行するように構成され得る。これらの構成要素211、212、213、215については、機能的な限定事項に関して記述するが、特定の実装は、特定のハードウェアの使用を必ず含むものと理解されたい。また、これらの構成要素211、212、213、215のいくつかが類似または共通のハードウェアを含み得ることも理解されたい。例えば、2組の回路が共に、各組の回路のために重複するハードウェアが必要とされないように、それらの関連する機能を実行するために同一のプロセッサ、ネットワークインタフェース、ストレージ媒体その他を活用し得る。
【0100】
いくつかの実施形態では、プロセッサ212(および/またはコプロセッサ、もしくはプロセッサを支援するかもしくはプロセッサに関連付けられた任意の他の処理回路)は、装置の構成要素間で情報を渡すためのバスを介してメモリ211と通信し得る。メモリ211は、非一時的なものであり、例えば、1つ以上の揮発性および/または不揮発性のメモリを含み得る。言い換えると、例えば、メモリ211は、電子記憶装置(例えばコンピュータ可読ストレージ媒体)であり得る。メモリ211は、本発明の実施形態の例に従って装置220が様々な機能を実行することを可能にするための情報、データ、コンテンツ、アプリケーション、命令その他を記憶するように構成され得る。例えば、メモリ211は、1つ以上のグループベース通信チャネル上で交換されるメッセージをキャッシュするように構成することができ、それにより、プロセッサ212は、(例えば、必要または要求に応じて)様々なメッセージをクライアントデバイスに提供し得る。
【0101】
プロセッサ212は、いくつかの異なる方法で実施することができ、例えば、独立して動作するように構成された1つ以上の処理装置を含み得る。いくつかの好ましい非限定的な実施形態では、プロセッサ212は、命令、パイプライン、および/またはマルチスレッドの独立した実行を可能にするようにバスを介して並列に構成された1つ以上のプロセッサを含み得る。
【0102】
いくつかの好ましい非限定的な実施形態では、プロセッサ212は、メモリ211に記憶された命令、またはプロセッサ212がアクセス可能な命令を実行するように構成され得る。いくつかの好ましい非限定的な実施形態では、プロセッサ212は、ハードコードされた機能を実行するように構成され得る。このように、ハードウェアもしくはソフトウェアの方法またはそれらの組み合わせによって構成されているかにかかわらず、プロセッ
サ212は、適宜に構成され、本発明の実施形態による動作を実行し得る、(例えば、回路に物理的に実施された)エンティティを表し得る。代わりに、別の例として、プロセッサ212がソフトウェア命令の実行器として実施される場合、命令は、命令が実行されると、本明細書に記述したアルゴリズムおよび/または動作を実行するようにプロセッサ212を具体的に構成してもよい。
【0103】
いくつかの実施形態では、装置220は、ユーザに出力を提供するために、いくつかの実施形態では、またユーザ入力の指示を受けるために、プロセッサ212と通信し得る入力/出力回路305を含み得る。入力/出力回路213は、ユーザインタフェースを備えてもよく、ディスプレイを含んでもよく、ウェブユーザインタフェース、モバイルアプリケーション、クライアントデバイス、キオスクその他を備えてもよい。いくつかの実施形態では、入力/出力回路213はまた、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチ領域、ソフトキー、マイク、スピーカ、または他の入力/出力機構を含み得る。
【0104】
通信回路215は、装置220と通信するネットワークおよび/または任意の他のデバイス、回路、またはモジュールとの間でデータを送受信するように構成され、ハードウェアまたはハードウェアとソフトウェアとの組み合わせのいずれかで実施された、デバイスまたは回路などの任意の手段であり得る。この点に関して、通信回路215は、例えば、有線または無線の通信ネットワークとの通信を可能にするためのネットワークインタフェースを含み得る。例えば、通信回路215は、1つ以上のネットワークインタフェースカード、アンテナ、バス、スイッチ、ルータ、モデム、ならびに支援ハードウェアおよび/もしくはソフトウェア、またはネットワークを介した通信を可能にするのに適した任意の他のデバイスを含んでもよい。加えてまたは代わりに、通信回路215は、1つ以上のアンテナとインタラクトして、1つ以上のアンテナを介して信号を送信するための、または1つ以上のアンテナを介して受信される信号の受信を処理するための回路を含み得る。
【0105】
また、本明細書で説明する情報の全てまたは一部は、装置220の1つ以上の構成要素によって受信、生成および/または維持されるデータに基づくものであり得ることも留意されたい。いくつかの実施形態では、(リモートクラウドコンピューティングシステムおよび/またはデータストレージシステムなどの)1つ以上の外部システムがまた、本明細書で説明する機能の少なくとも一部を提供するために活用され得る。
【0106】
用語「回路」は、ハードウェアを含むものとして、いくつかの実施形態では、またハードウェアを構成するためのソフトウェアを含むものとして、広く理解されたい。したがって、各装置200、220の構成要素に関して、本明細書で使用する用語「回路」は、本明細書に記述する特定の回路に関連付けられた機能を実行するように構成された特定のハードウェアを含むものとして理解されたい。例えば、いくつかの実施形態では、「回路」は、処理回路、ストレージ媒体、ネットワークインタフェース、入力/出力装置その他を含み得る。いくつかの実施形態では、装置200の他の要素が、特定の回路の機能を提供または補足し得る。例えば、プロセッサ202は、処理機能を提供することができ、メモリ204は、ストレージ機能を提供することができ、通信回路208は、ネットワークインタフェース機能を提供し得るなどである。同様に、装置220の他の要素が、特定の回路の機能を提供または補足し得る。例えば、プロセッサ212は、処理機能を提供することができ、メモリ211は、ストレージ機能を提供し、通信回路215は、ネットワークインタフェース機能を提供し得るなどである。
【0107】
理解されるように、そのようないかなるコンピュータプログラム命令および/または他の形式のコードも、コンピュータ、プロセッサ、または他のプログラマブル装置の回路にロードされて、マシン上でコードを実行するコンピュータ、プロセッサ、または他のプロ
グラマブル回路が本明細書に記述するものを含む様々な機能を実装するための手段を作成するようなマシンを作り出し得る。
【0108】
上述のように、また本開示に基づいて理解されるように、本発明の実施形態が、方法、モバイルデバイス、バックエンドネットワークデバイスその他として構成され得る。したがって、実施形態が、完全にハードウェアであるか、またはソフトウェアとハードウェアとの任意の組み合わせである、様々な手段を備え得る。さらに、実施形態が、ストレージ媒体内に実施されたコンピュータ可読プログラム命令(例えばコンピュータソフトウェア)を有する少なくとも1つの非一時性コンピュータ可読ストレージ媒体上のコンピュータプログラム製品の形態を取り得る。非一時性ハードディスク、CD-ROM、フラッシュメモリ、光記憶装置、または磁気記憶装置を含む、任意の適切なコンピュータ可読ストレージ媒体が利用され得る。
【0109】
その上、図示しないが、グループベース通信プラットフォームの様々な実施形態が、様々なグループベース通信チャネル内で交換されるメッセージを記憶および/またはインデクス化するように構成された1つ以上のデータベースを備え得る。
【0110】
[データフローの例]
図3Aおよび
図3Bは、本開示の実施形態による、ほぼリアルタイムで更新されたオブジェクトデータをグループベース通信システム内で提供または維持するための例示的なデータフローを示す。
【0111】
実施形態では、クライアントデバイスが、グループベース通信インタフェースオブジェクトとの電子インタラクションを表すユーザインタラクション入力を受ける301。実施形態では、グループベース通信インタフェースオブジェクトとの電子インタラクションが、後続のグループベース通信インタフェースをレンダリングするための更新オブジェクトデータを必要とする。実施形態では、電子インタラクションが、1つ以上のオブジェクト識別子に関連付けられている。
【0112】
実施形態では、クライアントデバイス(例えば、101A~101N)が、第1のリモートサーバ(例えば、リアルタイムメッセージング通信用に構成されたグループベース通信サーバ)との第1の通信コネクション(例えば、アクティブなウェブソケットコネクション)を確立する302。実施形態では、第1のリモートサーバが、クライアントデバイスによってサブスクライブされ、グループベース通信インタフェースオブジェクトに関連付けられたイベントを表す更新オブジェクトデータをリアルタイムで送信するように構成されている。実施形態では、更新オブジェクトデータが、第1のリモートサーバからクライアントデバイスにプッシュされる。
【0113】
実施形態では、クライアントデバイスが、第2のリモートサーバ(例えば、リアルタイムメッセージング通信用に構成されていないグループベース通信サーバ)との第2の通信コネクション(例えば非RTM)を確立する303。実施形態では、第2の通信コネクションが、クライアントプルベースの通信コネクションであり、クライアントデバイスによって、第2のリモートサーバからテールデータペイロードを要求および受信するように構成されている。
【0114】
実施形態では、クライアントデバイスが、第2のリモートサーバに、1つ以上のオブジェクト識別子を含むポーリング要求を送信する304。実施形態では、ポーリング要求が、1つ以上のオブジェクト識別子それぞれのためのテールデータペイロードの要求(例えば、HTTP GET)を表している。
【0115】
実施形態では、クライアントデバイスが、要求されたテールデータペイロードを受信する305。
【0116】
実施形態では、クライアントデバイスが、1つ以上のオブジェクト識別子に関連付けられた更新オブジェクトデータをクライアントデバイスのローカルデータストレージに照会する306。1つ以上のオブジェクト識別子に関連付けられた更新オブジェクトデータが、ローカルデータストレージにおいて利用可能であるかまたは第1のリモートサーバから受信されている場合、クライアントデバイスが、テールデータペイロードを破棄する。
【0117】
更新オブジェクトデータが、ローカルデータストレージにおいて利用可能でないと判断する、かつ/または更新オブジェクトデータが、第1のリモートサーバから受信されていないと判断すると、クライアントデバイスが、第1の通信コネクションのインタラプトを検出する307。
【0118】
実施形態では、クライアントデバイスが、次いで、テールデータペイロードの部分集合を使用して、後続のグループベース通信インタフェースを表示のためにレンダリングする308。実施形態では、テールデータペイロードの部分集合が、電子インタラクションに関連付けられた必要とされる更新オブジェクトデータに基づいてテールデータペイロードから選択される。その場合、後続のグループベース通信インタフェースは、第1の通信コネクションの停止中またはインタラプト中に、最小レベルのサービスおよびデータ鮮度を提供する。
【0119】
実施形態では、テールデータペイロードのうちの第2のテールデータペイロードの部分集合が、後続のグループベース通信インタフェースにおける表示のために、更新コンテンツ識別子に関連付けられた更新オブジェクトデータの集合をレンダリングするために利用される。
【0120】
実施形態では、各オブジェクト識別子のテールデータペイロードが、N個のレコードを有する更新オブジェクトデータの集合を含み、各レコードが、ポーリング要求に関連付けられたポーリング要求タイムスタンプよりも前にレコードが作成されたことを示す更新コンテンツ識別子を有する。そのような実施形態では、テールデータペイロードは、オブジェクト識別子に関連付けられたオブジェクトに対するN個の最新の更新(例えば、チャネルに投稿された50個の最新のメッセージ、メッセージへの10個の最新のリアクション等)を表す。
【0121】
実施形態では、第1の通信コネクションが、アクティブなウェブソケットコネクションである。
【0122】
実施形態では、1つ以上のオブジェクト識別子が、グループベース通信チャネル識別子である。
【0123】
実施形態では、電子インタラクションが、表示されたグループベース通信チャネル名の選択である。例えば、グループベース通信インタフェースの領域との電子インタラクションが、グループベース通信チャネル識別子に関連付けられる。そのような例では、領域は、グループベース通信チャネル名を表すテキストのデジタル表示を含み得る。
【0124】
実施形態では、表示されたグループベース通信チャネル名の選択が、マウスクリックまたはタッチスクリーン選択の一方によって受けられる。
【0125】
実施形態では、ポーリング要求が、ウェブアプリケーションプログラミングインタフェ
ース(API)への要求メッセージの送信である。
【0126】
実施形態では、要求メッセージが、ハイパーテキスト転送プロトコル(HTTP)要求である。実施形態では、HTTP要求は、GETまたはPOST要求であり得る。
【0127】
実施形態では、更新コンテンツ識別子が、タイムスタンプ、単調に増分される修正番号、およびコンテンツまたはコンテンツハッシュの一方から導出された識別子のうちの1つ以上を含む。
【0128】
[結論]
前述の説明および関連する図面に提示された教示の利益を有する、本開示に関係する当業者には、多くの変更および他の実施形態が思い浮かぶであろう。したがって、本開示が開示した特定の実施形態に限定されるものではなく、また、変更および他の実施形態が添付の特許請求の範囲内に含まれることが意図されることが理解されるべきである。具体的な用語を本明細書で用いているが、それらは、一般的かつ記述的な意味でのみ使用するものであり、限定する目的で使用されるものではない。