コンシューマ(consumer)およびビジネス(business)は、メッセージングシステム上で各々と接続し得る。メッセージングシステムは、ビジネスにメッセージを送るためのやり方をユーザに提供し得る。ユーザは、サポートを受けるか、発注を実施するか、質問をするか、またはさもなければビジネスと対話するために、ビジネスにメッセージを送り得る。
ビジネスのための管理者は、メッセージングシステムにサインアップするための単純なプロセスを提供され得る。別個のビジネスアプリケーションは、エージェントが個人的会話と職業上の会話とを分離することを可能にし、個人的会話はコンシューマアプリケーションにおいて提示され、職業上の会話はビジネスアプリケーションにおいて提示される。
ビジネスアプリケーションは、追加のメッセージング機能性へのアクセスを可能にし得る。たとえば、エンドツーエンド暗号の性能に関連して、メッセージングシステムのユーザは、特定のデバイスにひも付けられ得る。しかしながら、ビジネスアプリケーションは、複数のデバイスが特定のビジネスのためにメッセージング通信にアクセスすることを可能にし得る。したがって、ビジネスの通信をメッセージングシステム上に移動するプロセスは、容易にされる。その結果、実施形態は、ビジネスとコンシューマの両方のためにメッセージングシステムの機能性を改善することができる。
次いで図面を参照するが、すべての図面を通じて同様の参照番号を使用して同様の要素を参照する。以下の記載では、その完全な理解を与えるために、説明を目的として、多数の具体的な詳細が記載される。しかしながら、これらの具体的な詳細を省いても、新規の実施形態を実施できることは明らかであろう。他の事例では、よく知られている構造およびデバイスについては、その説明を容易にするために、ブロック図の形態で示している。その意図は、特許請求される主題に矛盾しないあらゆる修正、均等物、および代替案を包括することである。
本明細書で使用される「a」および「b」および「c」ならびに同様の指示子は、任意の正の整数を表す変数と意図されることに留意されたい。したがって、たとえば、ある実装形態がa=5と値を設定する場合、コンポーネント122−1〜122−aと示されるコンポーネント122の完全なセットは、コンポーネント122−1、122−2、122−3、122−4、および122−5を含み得る。実施形態はこれに関して限定されない。
図1は、マルチエージェントメッセージングシステム100のためのブロック図を示す。一実施形態では、マルチエージェントメッセージングシステム100は、1つまたは複数のコンポーネントを備えるソフトウェアアプリケーションを有するコンピュータ実装システムを備え得る。図1に示されているマルチエージェントメッセージングシステム100は、あるトポロジーでは限られた数の要素を有するが、マルチエージェントメッセージングシステム100は、代替のトポロジーでは所与の実装形態に望まれるようにより多くのまたはより少ない要素を含み得ることが諒解され得る。
メッセージングサーバ110は、メッセージングシステムの一部としてのメッセージングプラットフォームによって動作される1つまたは複数のメッセージングサーバを備え得る。メッセージングサーバは、インターネットアクセス可能なサーバを備え得、ネットワーク120がメッセージングシステムの様々なデバイスを接続し、少なくとも部分的にインターネットを備える。メッセージングシステムは、様々なユーザクライアントデバイスのためのメッセージングをサポートするためにメッセージングサーバ110を使用し得る。
ユーザは、スマートフォンデバイス150を所有し、操作し得る。スマートフォンデバイス150は、iPhone(登録商標)デバイス、Android(登録商標)デバイス、Blackberry(登録商標)デバイス、またはスマートフォン形態に準拠する任意の他のモバイルコンピューティングデバイスを含み得る。スマートフォンデバイス150は、セルラー信号135を使用してセルシステム130を介してネットワーク120に接続することが可能なセルラーデバイスであり得る。いくつかの実施形態では、およびいくつかの場合には、スマートフォンデバイス150は、追加または代替として、ネットワーク120に接続するためにWi−Fiまたは他のネットワーキング技術を使用し得る。スマートフォンデバイス150は、メッセージングサーバ110にアクセスするために、メッセージングクライアント、ウェブブラウザ、または他のローカルアプリケーションを実行し得る。
同じユーザがタブレットデバイス160を所有し、操作し得る。タブレットデバイス160は、iPad(登録商標)デバイス、Androidタブレットデバイス、Kindle Fire(登録商標)デバイス、またはタブレット形態に準拠する任意の他のモバイルコンピューティングデバイスを含み得る。タブレットデバイス160は、Wi−Fi信号145を使用してWi−Fiアクセスポイント140を介してネットワーク120に接続することが可能なWi−Fiデバイスであり得る。いくつかの実施形態では、およびいくつかの場合には、タブレットデバイス160は、追加または代替として、ネットワーク120に接続するためにセルラーまたは他のネットワーキング技術を使用し得る。タブレットデバイス160は、メッセージングサーバ110にアクセスするために、メッセージングクライアント、ウェブブラウザ、または他のローカルアプリケーションを実行し得る。
同じユーザがパーソナルコンピュータデバイス180を所有し、操作し得る。パーソナルコンピュータデバイス180は、Mac OS(登録商標)デバイス、Windows(登録商標)デバイス、Linux(登録商標)デバイス、または別のオペレーティングシステムを実行する他のコンピュータデバイスを含み得る。パーソナルコンピュータデバイス180は、イーサネット接続を介してネットワーク120に接続することが可能なイーサネットデバイスであり得る。いくつかの実施形態では、およびいくつかの場合には、パーソナルコンピュータデバイス180は、追加または代替として、ネットワーク120にセルラー、Wi−Fi、または他のネットワーキング技術を使用し得る。パーソナルコンピュータデバイス180は、メッセージングサーバ110にアクセスするために、メッセージングクライアント、ウェブブラウザ170、または他のローカルアプリケーションを実行し得る。
メッセージングクライアントは、専用メッセージングクライアントであり得る。専用メッセージングクライアントは、メッセージングサーバ110を含むメッセージングプラットフォームを管理するメッセージング提供者に特別に関連付けられ得る。専用メッセージングクライアントは、メッセージングサーバ110を含むメッセージングプラットフォームを管理するメッセージング提供者を含む、複数の異なるメッセージング提供者とともに働くように動作可能な一般的なクライアントであり得る。
メッセージングクライアントは、追加の機能性を提供するアプリケーションのコンポーネントであり得る。たとえば、ソーシャルネットワーキングサービスが、そのソーシャルネットワーキングサービスにアクセスし、使用するためにモバイルデバイス上で使用するためのソーシャルネットワーキングアプリケーションを提供し得る。ソーシャルネットワーキングサービスは、メッセージングサーバ110によって提供され得るようなメッセージング機能性を含み得る。メッセージングサーバ110は、ソーシャルネットワーキングサービスのためのコンピューティングデバイスの1つのコンポーネントであり得、コンピューティングデバイスがソーシャルネットワーキングサービスの追加の機能性を提供することが諒解されよう。同様に、ソーシャルネットワーキングアプリケーションが、メッセージング機能性と追加のソーシャルネットワーキング機能性の両方を提供し得る。
いくつかの場合には、メッセージングエンドポイントがユーザセッション間に状態を保持し得、いくつかの場合には、メッセージングエンドポイントがユーザセッション間に状態を放棄し得る。メッセージングエンドポイントは、メッセージ受信箱の現在の状態を保持するためにローカルストアを使用し得る。このローカルストアは、1つのセッションと次のセッションとの間に状態が取り出され得るように、永続ストレージに保存され得、これには、たとえば、ローカルアプリケーションが終了されるかまたは他の方法でメモリから削除されるか、あるいはデバイスが電源切断され、再び電源投入される状況を含まれる。代替的に、メッセージングエンドポイントは、メッセージ受信箱の現在の状態を保持するがメッセージ受信箱の状態を永続ストレージに投入することを控えるために、メモリキャッシュを使用し得る。
メッセージ受信箱の状態を保持するメッセージングエンドポイントは、専用メッセージングアプリケーション、またはソーシャルネットワーキングアプリケーションなどの別のローカルアプリケーションに組み込まれたメッセージングユーティリティを備え得る。メッセージ受信箱の状態を放棄するメッセージングエンドポイントは、ウェブブラウザ内に実装されるメッセージングアクセスを備え得る。一実施形態では、パーソナルコンピュータデバイス180上で実行するウェブブラウザ170など、ウェブブラウザは、ユーザにメッセージング機能性を提示するためにメッセージングサーバと対話するHTML5コードを実行し得る。
ユーザは、スマートフォンデバイス150、タブレットデバイス160、およびパーソナルコンピュータデバイス180を含む複数のデバイスからメッセージを送出および受信し得る。ユーザは、スマートフォンデバイス150上の第1のメッセージングアプリケーションと、タブレットデバイス160上の第2のメッセージングアプリケーションと、パーソナルコンピュータデバイス180上のウェブブラウザ170とを使用し得る。第1および第2のメッセージングアプリケーションは、両方のデバイスへの同じアプリケーションのインストールを含み得る。第1および第2のメッセージングアプリケーションは、共通アプリケーションのスマートフォン固有バージョンおよびタブレット固有バージョンを含み得る。第1および第2のメッセージングアプリケーションは、別個のアプリケーションを含み得る。
ユーザは、ユーザのデバイス間でユーザのメッセージ受信箱を一致させておくことから利益を得ることがある。ユーザは、ユーザの自宅から離れている間にセルシステム130上でユーザのスマートフォンデバイス150を使用して、セルシステム130を介してメッセージを送出および受信し得る。ユーザは、コーヒーショップ、またはWi−Fiを供与する他のロケーションに立ち寄り、ユーザのタブレットデバイス160をWi−Fiアクセスポイント140に接続し得る。タブレットデバイス160は、メッセージ受信箱についてのその既存の知られている状態を取り出し、タブレットデバイス160がネットワークへのアクセスを有していた最後のオケージョンから起こった更新を受信し得、そのような更新は、スマートフォンデバイス150によって送出されたメッセージ、およびスマートフォンデバイス150を操作する間にユーザによって受信されていることがあるメッセージを含む。ユーザは次いで自宅に帰り、パーソナルコンピュータデバイス180上でウェブブラウザ170を使用してユーザのメッセージ受信箱にアクセスし得る。ウェブブラウザ170は、メッセージ受信箱についての既存の状態を維持していないか、またはさもなければ既存の状態へのアクセスを有していないので、メッセージングサーバ110からメッセージ受信箱の現在の状態のスナップショットを受信し得る。ウェブブラウザ170は、次いで、メッセージングサーバ110とのユーザセッションを維持する限り、メッセージ受信箱の状態に対する新しい変更について、増加分の更新を取り出し、ウェブブラウザ170がユーザによって閉じられたときなど、セッションの最後に、メッセージ受信箱についてのその知られている状態を破棄し得る。限定はしないが、更新は、メールボックスへのメッセージの追加、メールボックスからのメッセージの削除、および開封確認に対応し得る。
メッセージングシステムは、複数のメッセージを備えるものとしてメッセージング受信箱を定義することによって動作し得、各メッセージは、2人またはそれ以上の参加者間の通信の個別トランザクションである。メールサーバは、メッセージング受信箱についてのメッセージインデックスを維持することによって動作し得る。メールサーバは、メッセージを受信し、そのメッセージをメールアーカイブに記憶し得、メールアーカイブから、メッセージインデックスへの参照を通してメッセージが取り出され得る。メールクライアントは、メールサーバに接続し、その最後の更新からそのメールアーカイブに追加されたメッセージを取り出し得る。メールクライアントは、どのようなメッセージがメールアーカイブに記憶されているかを示すメールアーカイブからのメールインデックスを受信し得る。メールクライアントは、どのメッセージを受信し損ねているかを決定するために、メールアーカイブをメールクライアントの現在の受信箱と比較し得、次いでそれらのメッセージをメールアーカイブに要求する。メールクライアントはメールクライアントの受信箱に対する変更を行い得、その結果、メール受信箱命令がメールアーカイブに送信されて、メールアーカイブ上でメールクライアントのメール受信箱の表現に対して行うべき修正をメールアーカイブに命令する。
メッセージングシステムによって仲介されるメッセージング対話は、メッセージスレッドとして知られる共有空間に編成され得る。メッセージスレッドは、ユーザの特定のグループ間で共有されるメッセージを一緒に収集し得る。ユーザのペア間で個別に送出されたメッセージは、そのユーザのペア間のプライベートメッセージングに一意に関連付けられた1対1の(one−on−one)メッセージスレッドに収集され得る。3人またはそれ以上のユーザのグループ間で送出されたメッセージは、ユーザのメンバーシップによって一意に定義されるのではなく、代わりに、いくつかの実施形態では、グループスレッドを一意に識別する識別子によって一意に定義され得る。グループスレッドにおけるメンバーシップは、いくつかの実施形態では、時間とともに変化し、メンバーを追加し、および/または失い得る。
メッセージング対話は、クライアントデバイス間のエンドツーエンド暗号化通信を使用し得る。送出クライアントデバイスは、受信デバイスのみが(たとえば、公開鍵暗号法を使用することによって)発信メッセージを復号することができること、または送出デバイスと受信デバイスのみが(たとえば、共有鍵暗号法を使用することによって)発信メッセージを復号することができることのうちの一方を確立するセキュリティ技法を使用して、発信メッセージを暗号化し得る。これらの実施形態では、メッセージングシステムのサーバは、クライアント間で送出されるメッセージを復号するのを妨げられ得る。いくつかの実施形態では、ユーザは、特定のメッセージスレッドがエンドツーエンド暗号を使用する(およびそれにより、メッセージングサーバがメッセージの内容にアクセスするのを妨げられるという追加のプライバシーを受ける)か、または使用しない(およびそれにより、関連するサービスをユーザに供与する目的でメッセージングシステムがプログラム的にメッセージにアクセスすることができるという利益を受ける)かを選択することができる。
メッセージングシステムは、ユーザ間の対話から生成された知識を使用し得る。メッセージングシステムは、ソーシャルネットワーキングシステムのコンポーネントを備え得、ソーシャルネットワーキングシステムのより広範な対話から生成された知識を使用し得る。したがって、メッセージングシステムおよびより大きいソーシャルネットワーキングシステムのユーザのプライバシーを保護するために、メッセージングシステムは、許可サーバ(または(1つまたは複数の)他の好適なコンポーネント)を含み得、許可サーバは、ユーザが、たとえば適切なプライバシー設定を設定することによって、ユーザのアクションをメッセージングシステムによってログに記録させるか、または他のシステム(たとえば、サードパーティシステム)と共有させることをオプトイン(opt in)またはオプトアウト(opt out)することを可能にする。ユーザのプライバシー設定は、ユーザに関連付けられたどの情報がログに記録され得るか、ユーザに関連付けられた情報がどのようにログに記録され得るか、ユーザに関連付けられた情報がいつログに記録され得るか、ユーザに関連付けられた情報を誰がログに記録し得るか、ユーザに関連付けられた情報が誰と共有され得るか、およびユーザに関連付けられた情報がどのような目的でログに記録または共有され得るかを決定し得る。許可サーバまたは他の許可コンポーネントは、ブロッキング、データのハッシュ化、匿名化、または適宜に他の好適な技法を通して、ソーシャルネットワーキングシステムのメッセージングシステムおよび他の要素のユーザの1つまたは複数のプライバシー設定を守らせるために使用され得る。
図2は、メッセージングシステム200の様々な機能を実装する複数のサーバの一実施形態を示す。メッセージングシステム200の様々な実施形態において、作業および機能の異なる分配が使用され得ることが諒解されよう。メッセージングシステム200は、マルチエージェントメッセージングシステム100を備え得、マルチエージェントメッセージングシステム100の動作は、メッセージングシステム200の全体的な動作の一部分を含む。メッセージングシステム200の図示の実施形態は、特に、図1を参照しながら説明されたメッセージングサーバ110の一部分に対応し得、メッセージングサーバ110は、メッセージングシステム200のユーザにメッセージングサービスを提供する1つまたは複数のサーバデバイスを備える。
メッセージングシステム200の様々なサーバは、ネットワークバス220を介して接続される。ネットワークバス220は、ドメイン名フロントエンド210とメッセージングシステム200のサーバとクライアントデバイスなどの様々な外部デバイスとの間のネットワーク接続性を提供する。サーバの各々は、サーバがネットワークバス220を介して互いおよび/またはユーザデバイスと独立して通信し得るように、ネットワークバス220に独立して接続される。
メッセージングシステム200は、ドメイン名フロントエンド210を備え得る。ドメイン名フロントエンド210は、ドメイン名システム(DNS)においてメッセージングシステム200に関連付けられた1つまたは複数のドメイン名を割り当てられ得る。ドメイン名フロントエンド210は、着信接続を受信し、その着信接続を、様々なメッセージングサービスを提供するサーバに分配し得る。
メッセージングシステム200は、1つまたは複数のチャットサーバ215を備え得る。チャットサーバ215は、チャットメッセージなどのユーザ間メッセージング更新を受信および送信するためのフロントエンドサーバを備え得る。着信接続は、作業負荷分散に基づいてドメイン名フロントエンド210によってチャットサーバ215に割り当てられ得る。
メッセージングシステム200は、バックエンドサーバ230を備え得る。バックエンドサーバ230は、フロントエンドチャットサーバ215のチャット動作をサポートする特化したタスクを実施し得る。複数の異なるタイプのバックエンドサーバ230が使用され得る。異なるバックエンドサーバ230へのタスクのタイプの割り当ては、異なる実施形態において変化し得ることが諒解されよう。いくつかの実施形態では、専用サーバによって提供されるバックエンドサービスのうちのいくつかが、単一のサーバ、または、本明細書に記載される実施形態において異なるサーバ間で分割される複数のタスクを各々が実施するサーバのセットに、組み合わせられ得る。同様に、いくつかの実施形態では、本明細書に記載される専用バックエンドサーバのうちのいくつかのタスクが、異なるサーバグループの異なるサーバ間で分割され得る。
メッセージングシステム200は、1つまたは複数のオフライン記憶サーバ231を備え得る。1つまたは複数のオフライン記憶サーバ231は、現在オフラインのメッセージングエンドポイントについてのメッセージング内容を、それらのメッセージングエンドポイントが再接続するときのために、保留して記憶し得る。
メッセージングシステム200は、1つまたは複数のセッションサーバ232を備え得る。1つまたは複数のセッションサーバ232は、接続されているメッセージングエンドポイントのセッション状態を維持し得る。
メッセージングシステム200は、1つまたは複数のプレゼンスサーバ233を備え得る。1つまたは複数のプレゼンスサーバ233は、メッセージングシステム200についてのプレゼンス情報を維持し得る。プレゼンス情報は、所与のユーザがオンラインメッセージングエンドポイントを有し、チャットのために利用可能であるか否か、オンラインメッセージングエンドポイントを有するが現在はそこから離れているかどうか、オンラインメッセージングエンドポイントを有しないかどうか、ならびに任意の他のプレゼンス状態を示すユーザ固有情報に対応し得る。
メッセージングシステム200は、1つまたは複数のプッシュ記憶サーバ234を備え得る。1つまたは複数のプッシュ記憶サーバ234は、プッシュ要求をキャッシュし、そのプッシュ要求をメッセージングエンドポイントに送信し得る。プッシュ要求は、メッセージングエンドポイントを起動させるため、メッセージング更新が利用可能であることをメッセージングエンドポイントに通知するため、およびメッセージングエンドポイントとのサーバ側主体の(server−side−driven)対話を他の方法で実施するために使用され得る。
メッセージングシステム200は、1つまたは複数のチャット活動監視サーバ235を備え得る。1つまたは複数のチャット活動監視サーバ235は、メッセージングシステム200のユーザによる不正な挙動または推奨されない挙動を決定するためにユーザのチャットを監視し得る。1つまたは複数のチャット活動監視サーバ235は、スパムロギングサーバ239およびブロックリストサーバ236と協働し得、1つまたは複数のチャット活動監視サーバ235は、スパムまたは他の推奨されない挙動を識別し、スパムロギングサーバ239にスパム情報を提供し、適切な場合にはブロックリストサーバ236にブロッキング情報を提供する。
メッセージングシステム200は、1つまたは複数のブロックリストサーバ236を備え得る。1つまたは複数のブロックリストサーバ236は、ユーザ固有ブロックリストを維持し得、ユーザ固有着信ブロックリストは、各ユーザについて、そのユーザにメッセージを送信することを禁じられている1人または複数の他のユーザを示す。代替または追加として、1つまたは複数のブロックリストサーバ236は、各ユーザについて、そのユーザがメッセージを送信することを禁じられている1人または複数の他のユーザを示すユーザ固有発信ブロックリストを維持し得る。着信ブロックリストと発信ブロックリストとは、組み合わせて、たとえばデータベースに記憶され得、着信ブロックリストと発信ブロックリストとは、ブロック情報の同じリポジトリの異なる見方を表すことが諒解されよう。
メッセージングシステム200は、1つまたは複数の最後に見られた情報サーバ237を備え得る。1つまたは複数の最後に見られた情報サーバ237は、最後に見られたロケーション、ステータス、メッセージングエンドポイント、およびメッセージングシステム200へのユーザの最後に見られた接続の他の要素を示す情報を受信、記憶、および維持し得る。
メッセージングシステム200は、1つまたは複数のプロフィール写真サーバ238を備え得る。1つまたは複数のプロフィール写真サーバ238は、メッセージングシステム200の複数のユーザについてのプロフィール写真を記憶し、取出しのために利用可能にし得る。
メッセージングシステム200は、1つまたは複数のスパムロギングサーバ239を備え得る。1つまたは複数のスパムロギングサーバ239は、知られているスパムおよびスパムの疑いのあるもの(たとえば、不要メッセージ、特に販売促進の性質のもの)をログに記録し得る。1つまたは複数のスパムロギングサーバ239は、メッセージがスパムであるかどうかを決定し、いくつかの実施形態では、疑われるスパム送信者(スパムメッセージを送出するユーザ)に対する処罰措置を実施するために、メッセージを分析するように動作可能であり得る。
メッセージングシステム200は、1つまたは複数の統計サーバ240を備え得る。1つまたは複数の統計サーバは、メッセージングシステム200の動作とメッセージングシステム200のユーザの挙動とに関係する統計情報をコンパイルし、記憶し得る。
メッセージングシステム200は、1つまたは複数の同期サーバ241を備え得る。1つまたは複数の同期サーバ241は、メッセージングシステム200におけるユーザのための連絡先を決定するために、メッセージングシステム200を、モバイルフォン上のアドレス帳など、メッセージングエンドポイントからの連絡先情報と同期させ得る。
メッセージングシステム200は、1つまたは複数のウェブサーバ242を備え得る。1つまたは複数のウェブサーバ242は、ウェブブラウザとのハイパーテキスト転送プロトコル(HTTP)およびハイパーテキスト転送プロトコルセキュア(HTTPS)接続に関与し得る。1つまたは複数のウェブサーバ242は、いくつかの実施形態では、マルチエージェントメッセージングシステム100の動作の一部としてリモートウェブサーバ350をホストし得る。
メッセージングシステム200は、1つまたは複数の鍵サーバ243を備え得る。1つまたは複数の鍵サーバ243は、公開鍵/秘密鍵による暗号化通信のための公開鍵をホストし得る。
メッセージングシステム200は、1つまたは複数のグループサーバ244を備え得る。1つまたは複数のグループサーバ244は、グループのリストを維持し、グループにユーザを追加し、グループからユーザを削除し、グループチャットメッセージの受信、キャッシング、およびフォワーディングを実施し得る。
メッセージングシステム200は、1つまたは複数のマルチメディアデータベース(MMD)サーバ245を備え得る。MMDサーバ245は、メッセージングシステム200に知られているメディアオブジェクトのデータベースを記憶し得、このデータベースは分散データベースであり得る。いくつかの実施形態では、現在記憶されているかまたはさもなければメッセージングシステム200内を移動中であるメディアオブジェクトのみが、MMDサーバ245によって追跡され得る。他の実施形態では、MMDサーバ245は、もはや移動中ではないメディアオブジェクトの記録を維持し得、これは、人気度を追跡するため、または他のデータ採取の目的のためなどであり得る。
MMDサーバ245は、マルチメディアサーバ246上など、メディアオブジェクトがメッセージングシステム200によって記憶されることになるときのそのメディアオブジェクトの記憶ロケーションを決定し得る。MMDサーバ245は、複数のマルチメディアサーバ246のうちのどれが特定のメディアオブジェクトを記憶するかなど、メディアオブジェクトがメッセージングシステム200によって送信されることになるときのそのメディアオブジェクトの既存の記憶ロケーションを決定し得る。MMDサーバ245は、メディアオブジェクトを要求し、取り出すためにメッセージングクライアントが使用するためのユニフォームリソースロケータ(URL)を生成し得る。MMDサーバ245は、いつメディアオブジェクトが破損したかまたはさもなければ失われ、再獲得されるべきであるかを追跡し得る。
メッセージングシステム200は、1つまたは複数のマルチメディアサーバ246を備え得る。1つまたは複数のマルチメディアサーバは、メッセージングエンドポイント間を移動中のマルチメディア(たとえば、画像、ビデオ、オーディオ)、オフラインエンドポイントのためにキャッシュされたマルチメディアを記憶し得、マルチメディアのトランスコーディングを実施し得る。
メッセージングシステム200は、1つまたは複数の支払いサーバ247を備え得る。1つまたは複数の支払いサーバ247は、ユーザからの支払いを処理し得る。1つまたは複数の支払いサーバ247は、支払いの実施のために外部サードパーティサーバに接続し得る。
メッセージングシステム200は、1つまたは複数の登録サーバ248を備え得る。1つまたは複数の登録サーバ248は、メッセージングシステム200の新しいユーザを登録し得る。
メッセージングシステム200は、1つまたは複数の音声中継サーバ249を備え得る。1つまたは複数の音声中継サーバ249は、ボイスオーバーインターネットプロトコル(VoIP)呼の実施のためにメッセージングエンドポイント間でVoIP音声通信を中継し得る。
図3Aは、メッセージ受信箱のためのユーザインターフェース300の一実施形態を示す。
クライアントデバイス305が、マルチエージェントメッセージングシステム100にアクセスするために使用されるデバイスに対応し得る。図3Aの図示の実施形態では、クライアントデバイス305はスマートフォンデバイスに似ているが、本明細書に記載される技法は任意のタイプのデバイスとともに使用され得ることが諒解されよう。ユーザインターフェース300は、概して、メッセージングシステムのためのユーザ受信箱の表示に対応し得る。
ユーザインターフェース300は、ユーザアカウントのための受信箱中の複数のメッセージスレッド320の表示を備え得る。表示されたメッセージスレッド320の一部分は、未読メッセージをもつメッセージスレッドであり得る。表示されたスレッドの一部分は、未読メッセージをもたないスレッドであり得る。図3Aの図示の実施形態では、ユーザインターフェース300が下方にスクロールされると、より多くのスレッドがあらわになり得る。
受信箱中のメッセージスレッド320の表示は、各メッセージスレッドについて、スレッドの名前の表示と、スレッド中の最後に受信されたかまたは最後に交換されたメッセージと、スレッドの内容のプレビューと、スレッド中の1人または複数のユーザのためのアバターとを備え得る。スレッドの名前は、受信箱についてのユーザアカウントのための名前以外の、スレッド中の1人または複数の参加者の(1つまたは複数の)名前に対応し得る。
ビジネスエンティティとのメッセージスレッドのためのメッセージスレッドエントリ330は、ビジネスの名前、メッセージスレッド中の最後に受信されたメッセージまたは最後に交換されたメッセージ、メッセージスレッド中の最後に受信されたメッセージまたは最後に交換されたメッセージについての最後に受信された時間または最後に交換された時間、および/あるいはメッセージスレッドに関係する他の情報を備え得る。ビジネスエンティティとのメッセージスレッドのためのメッセージスレッドエントリ330は、検証済みエンティティインジケータ335を備え得る。検証済みエンティティインジケータ335は、ビジネスエンティティのリストされた名前が、そのエージェントによって表されるように、メッセージスレッド中で通信している実際のエンティティのためのものであることを示す。
メッセージングパートナーは、メッセージングパートナーを一意に識別するために使用される電話番号に関連付けられ得る。メッセージングパートナーがビジネスエンティティである場合、メッセージングパートナーは、ビジネスのための連絡先番号に関連付けられ得る。一般的なユーザ連絡先の場合、ユーザのための名前は、クライアントデバイス305上のユーザのためのアドレス帳に基づいて割り当てられ得る。しかしながら、ビジネスの場合、検証された名前が使用され得、検証された名前はメッセージングシステムによって提供される。この検証された名前の使用は、検証済みエンティティインジケータ335によって示される。
ユーザインターフェース300は、受信箱ヘッダ制御310を含み得る。受信箱ヘッダ制御310は、様々なメッセージング関係アクションを可能にし得る。受信箱ヘッダ制御310は編集制御を備え得、編集制御はメッセージング受信箱の構成を可能にする。受信箱ヘッダ制御310は、新しいメッセージスレッドの作成を可能にする生成制御を備え得る。
図3Bは、メッセージスレッドのためのユーザインターフェース350の一実施形態を示す。
ユーザインターフェース350は、クライアントデバイス305上に表示されるメッセージスレッドのためのユーザインターフェースを備え得る。メッセージスレッドのためのメッセージ交換の少なくとも一部分が、メッセージスレッド対話表示370において表示され得る。メッセージスレッド対話表示370は、メッセージスレッドのユーザによって交換される1つまたは複数のメッセージの表示を備え得る。メッセージスレッドに関して説明される特徴は、1対1のメッセージスレッドまたはグループメッセージスレッドのいずれかに適用され得る。メッセージスレッドに関して説明される特徴は、ユーザがビジネスエンティティに関与するメッセージスレッドに適用され得る。
ユーザインターフェース350は、スレッド情報360の表示を含み得る。スレッド情報360は、スレッドに関与する1人または複数の他のユーザのリスティングを備え得る。1人または複数の他のユーザの表示は、氏名、省略名、あるいはメッセージング対話および/またはソーシャルネットワーキング対話のために特定のユーザとともに使用するための名前として登録された他の名前など、ユーザの名前を使用し得る。1人または複数の他のユーザの表示は、1人または複数の他のユーザのアバター、プロフィールピクチャ、または他の視覚表現を使用し得る。
いくつかの事例では、ユーザのための表示された名前は、ビジネスエンティティのための検証された名前を備え得る。検証された名前は、エンティティに対応するように、メッセージングシステムのメインテナ(maintainer)など、管理当局によって検証された名前である。検証された名前が、ビジネスエンティティなど、ユーザについて知られている場合、検証された名前は、スレッド情報360の一部として表示され得る。しかしながら、いくつかの実施形態では、ユーザ名の表示は、通常、ユーザインターフェース特徴として、クライアントデバイス305上のアドレス帳からユーザの名前を引き出すことに関連付けられ得る。したがって、検証された名前は視覚シグニファイア(signifier)とともに表示され、視覚シグニファイアは、ユーザについて表示された名前が管理当局による検証された名前であり、閲覧ユーザのアドレス帳から引き出されたローカルに定義された名前でないことを示す。いくつかの実施形態では、ビジネスが検証されていない場合、異なるインジケータ、すなわち、未検証ビジネスインジケータが表示され得る。
メッセージスレッドのためのユーザインターフェース350は、メッセージスレッドの表示中に持続的に可視である組成制御(composition control)365を含み得る。組成制御365の多く、大部分、またはほぼすべてが、テキスト入力、メディア選択、絵文字選択、カメラ使用、ソーシャル承認アイコンなど、様々なタスクの実施のためのさらなるユーザインターフェース制御へのアクセスを可能にし得る。
1つまたは複数のメッセージの各々は、メッセージバブル(message bubble)375など、特定のメッセージバブルによって表され得る。メッセージバブルは、原子的メッセージング対話を表し得る。メッセージバブルは、概して、画定された幾何学的エリアに対応し得、特定のメッセージング交換(たとえば、テキスト、メディア)の内容が、その画定された幾何学的エリア内に含まれている。メッセージバブルは、別個の色、またはメッセージバブルをメッセージスレッド対話表示の背景と区別する複数の色(たとえば、1つまたは複数の階調度)を有し得る。メッセージバブルは、描かれているような黒い輪郭など、明確に着色された境界を有し得るか、または、メッセージバブルおよび背景の異なる色の間の境界面によって画定された境界を有し得る。いくつかの実施形態では、メッセージバブルおよび背景のいずれかまたは両方の1つまたは複数の色は、メッセージングシステムのユーザによってカスタマイズされ、構成され得る。
ビジネスエンティティとのメッセージスレッドのためのメッセージスレッド対話表示370は、商業連絡先制御380を含み得る。商業連絡先制御380は、コンシューマがビジネスとのメッセージング関係を確立する前に、コンシューマとビジネスとの間のメッセージスレッドの初期期間中に目立つように表示され得る。しかしながら、商業連絡先制御380は、関係が確立された後に依然としてアクセス可能であり得る。
商業連絡先制御380は、ブロック制御、スパム報告制御、および/または連絡先への追加制御を備え得る。ブロック制御は、ビジネスがコンシューマにメッセージを送るのをブロックし得る。スパム報告制御は、ビジネスを、スパムに関与しているものとして報告し得る。連絡先への追加制御は、ユーザの連絡先にビジネスを追加し得、たとえば、クライアントデバイス305上のユーザのためのアドレス帳にビジネスおよびビジネスのための電話番号を追加することを含み得る。
メッセージスレッドのためのユーザインターフェース350は、ユーザが様々な他のタスクを実施することを可能にし得る。たとえば、ユーザは、メッセージスレッドに関連付けられたビジネスのためのプロフィールを閲覧することを可能にされ得る。プロフィールは、検証された情報を含んでいる検証されたプロフィールを備え得る。たとえば、検証されたプロフィールは、検証されたアドレス、検証されたロケーション、検証された電話番号、検証された名前、検証されたロゴ、および/または他の検証された情報を示し得る。プロフィールは、アドレス、ロケーション、電話番号、名前、ロゴ、営業時間、および/または他の情報など、検証されていない情報を含み得る。
管理者登録
図4は、管理者登録を実施するマルチエージェントメッセージングシステム100の一実施形態を示す。
マルチエージェントメッセージングシステム100は、複数のエージェントをもつマルチエージェントエンティティ(たとえば、ビジネスエンティティ)のためのユニファイドメッセージングプラットフォームをサポートする。マルチエージェントエンティティは、一意のエンティティ識別情報に基づいてマルチエージェントメッセージングシステム100において識別され得る。エンティティ識別子は、ビジネスエンティティのための識別子名前空間など、マルチエージェントエンティティのための識別子名前空間において一意であり得る。エンティティ識別子は、様々な種類のエンティティのための識別子名前空間においてメッセージングシステムにわたって一意であり得る。エンティティ識別子は、乱数発生技法を使用する乱数発生に基づいて割り当てられ得る(たとえば、真のランダム性、擬似ランダム性)。エンティティ識別子は、ビジネスエンティティのための連絡先電話番号など、他の情報から導出され得る。
マルチエージェントエンティティは、1つまたは複数のエージェントに関連付けられる。1つまたは複数のエージェントは、1つまたは複数のエージェントクライアントデバイスに関連付けられる。したがって、マルチエージェントエンティティは、1つまたは複数のエージェントクライアントデバイスに関連付けられ得る。マルチエージェントエンティティのための複数のエージェントのうちの1つまたは複数のエージェントは、マルチエージェントエンティティのための管理者を含み得る。1つまたは複数の管理者は、1つまたは複数の管理者クライアントデバイスに関連付けられる。エージェントクライアントデバイスのうちの1つまたは複数は、1つまたは複数の管理者クライアントデバイスを備え得る。したがって、マルチエージェントエンティティは、1つまたは複数の管理者クライアントデバイスに関連付けられ得る。
管理者を含む、マルチエージェントエンティティのための各エージェントは、デバイス固有エージェント識別子に従って識別され得る。デバイス固有エージェント識別子は、エージェントのためのエージェントクライアントデバイスのための電話番号を備え得る。エージェントが複数のクライアントデバイスに関連付けられる場合、デバイス固有エージェント識別子は、エージェントのための1次スマートフォンデバイスなど、1次クライアントデバイスのための電話番号を備え得る。エージェントは、フォンクライアントデバイスまたは非フォンクライアントデバイス(すなわち、フォン接続性をもたないクライアントデバイス)を使用してメッセージングシステムにアクセスすることを可能にされ得る。
管理者クライアントデバイス405は、メッセージングシステムを使用して通信し、マルチエージェントメッセージングシステム100を実装する複数のクライアントデバイスのうちの1つであり得る。管理者クライアントデバイス405は、メッセージングクライアント420を実行する。管理者クライアントデバイス405上のメッセージングクライアント420は、複数のコンポーネントを備える。複数のコンポーネントは、ソフトウェアコンポーネントを備え得る。メッセージングクライアント420のコンポーネントは、ここに記載されるコンポーネントの追加のコンポーネントを含み得、メッセージングクライアント420の動作は、異なる実施形態では、異なる構成においてコンポーネント間で分割され得る。管理者クライアントデバイス405は、ビジネスメッセージングクライアントを実行し得る。ビジネスメッセージングクライアントは、ビジネスユーザが使用するために設計されたインターフェース特徴を使用して、メッセージングクライアント420のメッセージング特徴を実装し得る。
メッセージングクライアント420は、メッセージングコンポーネント440を備え得る。メッセージングコンポーネント440は、概して、メッセージングクライアント420とメッセージングシステムとの間の対話を実施するように成され得る。メッセージングコンポーネント440は、メッセージングシステムのためのメッセージングサーバ410にネットワーク通信を送出し、メッセージングサーバ410からネットワーク通信を受信し得る。
メッセージングクライアント420は、ユーザインターフェースコンポーネント430を備え得る。ユーザインターフェースコンポーネント430は、概して、クライアントデバイスのユーザに情報を提示し、クライアントデバイスのユーザからユーザコマンドを受信するように成され得る。ユーザインターフェースコンポーネント430は、視覚情報を表示し、オーディオ情報を出力し、他の方法でユーザに情報を提示し得る。ユーザインターフェースコンポーネント430は、タッチコマンド、テキストコマンド、音声コマンド、およびメッセージングクライアント420の操作のための任意の他の種のコマンドを受信し得る。
マルチエージェントメッセージングシステム100は、メッセージングサーバ410を含む。メッセージングサーバ410は、メッセージングサーバデバイス上で実行し得る。メッセージングサーバ410は、概して、クライアントデバイスのためのメッセージングサービスを実施するように成される。メッセージングサーバ410は、1つまたは複数のソフトウェアまたはハードウェアコンポーネントを備え得る。メッセージングサーバ410は、エージェント管理コンポーネント470を備え得る。エージェント管理コンポーネント470は、概して、マルチエージェントエンティティのためのエージェントの許可および登録を維持するように成される。メッセージ処理コンポーネント480は、概して、メッセージングシステムのユーザ間でメッセージを受信し、記憶し、フォワーディングするように成される。
ビジネスのための管理者、ビジネスエンティティ、または他のマルチエージェントエンティティは、メッセージングクライアント420のユーザインターフェースコンポーネント430を使用して管理者アカウント登録コマンド410を実施し得る。メッセージングコンポーネント440は、管理者アカウント登録コマンド410を受信し、マルチエージェントエンティティのための管理者アカウントを登録するためにメッセージングサーバ410との管理者アカウント登録450を実施する。メッセージングコンポーネント440は、エージェント管理コンポーネント470に管理者アカウント登録450を送出する。
エージェント管理コンポーネント470は、マルチエージェントエンティティのための管理者アカウントのための管理者アカウント登録450を受信する。管理者アカウント登録450は、マルチエージェントエンティティのための管理者アカウントを確立する。エージェント管理コンポーネント470は、管理者アカウントをマルチエージェントエンティティに関連付けられたものとして登録する。管理者アカウント登録450は、正当な管理者がメッセージングシステムにおいてマルチエージェントエンティティに代わって管理することを可能にされることを保証するために、マルチエージェントエンティティの検証に関連して実施され得る。
エージェント管理コンポーネント470は、エージェントマッピングリポジトリ415との管理者登録460を実施する。エージェントマッピングリポジトリ415は、マルチエージェントエンティティとマルチエージェントエンティティに関連付けられた管理者およびエージェントとの間のマッピングを記憶する。エージェントマッピングリポジトリ415は、1つまたは複数のメッセージングサーバが、マルチエージェントエンティティとマルチエージェントエンティティの管理者およびエージェントとの間の関係を記憶し、取り出すことを可能にする。
エージェントマッピングリポジトリ415は、マルチエージェントエンティティのためのエージェントルールを記憶し得る。マルチエージェントエンティティのための管理者は、ビジネスアプリケーションメッセージングクライアント420のためのユーザインターフェースコンポーネント430を使用して、マルチエージェントエンティティのためのエージェントルールを指定し得る。エージェントルールは、マルチエージェントエンティティのためのメッセージのハンドリングを構成する。メッセージの受信時に、メッセージ処理コンポーネント480は、マルチエージェントエンティティのためのエージェントルールに少なくとも部分的に基づいてメッセージを処理する。エージェントルールはマルチエージェントエンティティのためのエージェントのデフォルトセットを指定し得、メッセージ処理コンポーネント480は、任意の作成されたメッセージスレッド中にデフォルトエージェントのすべてを自動的に含める。エージェントルールは、マルチエージェントエンティティのための1つまたは複数の管理者を指定し得る。
エージェントルールは、スレッドロッキングルールを指定し得、そのスレッドロッキングルールでは、メッセージスレッドにメッセージをポスティングするがメッセージスレッドからメッセージを読み取らないことは、メッセージスレッド中で応答する第1のエージェント以外のエージェントについて、妨げられる。スレッドロッキングルールは、管理者がポスティングするのを妨げられることを免除されることを指定し得る。
エージェントルールは、マルチエージェントエンティティのための各エージェントについてパーミッションを指定し得る。エージェントルールは、各エージェントについて、そのエージェントがデフォルトエージェントであるかどうかを指定し得る。エージェントルールは、各エージェントについて、そのエージェントが管理者であるかどうかを指定し得る。エージェントルールは、各エージェントについて、支払い活動に関与するためのパーミッションを有するかどうかを指定し得る。エージェントルールは、各エージェントについて、そのエージェントが、返品を承認すること、払い戻しを承認すること、割引を行うこと、または他の任意の支払いアクションなど、特定の支払い活動に関与するためのパーミッションを有するかどうかを指定し得る。エージェントルールは、各エージェントについて、そのエージェントがユーザによって開始されたメッセージスレッドに応答するのみではなくユーザ(たとえば、顧客)とのメッセージスレッドを開始するためのパーミッションを有するかどうかを指定し得る。
メッセージングシステムは、登録プロセスの一部としてビジネスエンティティの検証を実施し得る。概して、この検証は、特定の知られているメッセージングエンティティが特定の知られているビジネスエンティティに対応することを示す。これは、ユーザがビジネスエンティティに関与するとき、ユーザのメッセージングエクスペリエンスに対するユーザ信頼性を提供し得る。登録プロセスは、電話番号検証プロセスを含み得、電話番号検証プロセスでは、ショートメッセージサービス(SMS)メッセージまたは音声確認コードが、管理者クライアントデバイス405に送出され、登録を完了するために管理者クライアントデバイス405上のメッセージングクライアント420に入力されなければならない。
管理者は、複数のエンドポイントからメッセージングシステムにアクセスすることを可能にされ得る。たとえば、管理者は、デスクトップまたはラップトップコンピュータから、およびスマートフォンなどのタッチスクリーンデバイスからメッセージングシステムにアクセスすることを可能にされ得る。複数のデバイスからメッセージングシステムにアクセスすることは、たとえば、エンドツーエンド暗号を管理する1次デバイスを有することによって可能にされ得、2次デバイスは1次デバイスを通してメッセージングシステムにアクセスする。
エージェント登録
図5は、エージェントクライアントデバイス505を使用してエージェントのためのエージェント登録を実施するマルチエージェントメッセージングシステム100の一実施形態を示す。
エージェント登録は、エージェントクライアントデバイス505上でのエージェントによるアクションを含み得る。ユーザインターフェースコンポーネント430は、エージェントからエージェントアカウント登録コマンド510を受信し、エージェントアカウント登録コマンド510をメッセージングコンポーネント440に受け渡し得る。メッセージングコンポーネント440は、次いで、メッセージングサーバ410とのエージェントアカウント登録550を実施する。
エージェント管理コンポーネント470は、エージェントクライアントデバイス505からマルチエージェントエンティティのためのエージェントアカウントのためのエージェントアカウント登録550を受信する。エージェント管理コンポーネント470は、エージェントマッピングリポジトリ415との、エージェントアカウントのためのエージェント登録560を実施する。エージェント登録560は、エージェントアカウントが、指定されたマルチエージェントエンティティのためのエージェントであることを示す。
概して、マルチエージェントメッセージングシステム100は、マルチエージェントエンティティのためのエージェント登録560の管理者承認を可能にする。一実施形態では、管理者クライアントデバイス405上のユーザインターフェースコンポーネント430は、管理者からエージェントアカウント承認コマンド515を受信し、エージェントアカウント承認コマンド515をメッセージングコンポーネント440に受け渡し得る。メッセージングコンポーネント440は、次いで、メッセージングサーバ410とのエージェントアカウント承認555を実施する。
代替的に、管理者は、エージェントに情報を提供することによってエージェント登録560を承認し得、その情報は、それらが承認されたことを示すためにそれらがエージェント登録560において使用することができる。たとえば、管理者は、管理者クライアントデバイス405がエージェント管理コンポーネント470にネットワークを介してエージェントアカウント承認555を送出することなしに、エージェント登録560が管理者の承認を有することを示すために、エージェントがエージェントクライアントデバイス505で使用することができるコードをエージェントに提供し得る。エージェント管理コンポーネント470は、エージェントアカウント登録550において管理者コードを受信し、管理者コードに基づいてエージェントアカウント登録を承認し得る。管理者コードは、エージェント管理コンポーネント470によって管理者クライアントデバイス405に提供されたワンタイムコードであり得る。ワンタイムコードは、数値または英数字コードを備え得る。ワンタイムコードはランダムに生成され得る。ワンタイムコードは、メッセージングシステム外でエージェントクライアントデバイス505に提供され得る。
いくつかの実施形態では、数値コードは、クイックレスポンス(QR)コードを介して提供され得る。QRコード、またはQRコードにおいて符号化された数値コードは、エージェント管理コンポーネント470によって管理者クライアントデバイス405に提供され得る。管理者クライアントデバイス405は、次いで、QRコードを表示し得、エージェントクライアントデバイス505は、カメラコンポーネントを用いてQRコードをキャプチャし得る。エージェントクライアントデバイス505は、次いで、QRコードからワンタイムコードを抽出し、ワンタイムコードをエージェントアカウント登録550においてエージェント管理コンポーネント470に提供する。
エージェント管理コンポーネント470は、マルチエージェントエンティティのための管理者アカウントから、マルチエージェントエンティティのためのエージェントアカウントのためのエージェントアカウント承認555を受信する。エージェント管理コンポーネント470は、エージェントアカウント登録およびエージェントアカウント承認555に基づいて、エージェントマッピングリポジトリ415との、エージェントアカウントのためのエージェント登録560を実施する。エージェント登録560は、エージェントアカウントが、指定されたマルチエージェントエンティティのためのエージェントであることを示す。
エージェントアカウント登録550、エージェントアカウント承認555、および/またはエージェント登録560は、マルチエージェントエンティティのための後続メッセージスレッドのメッセージ共有許可のためにエージェントアカウントを登録し得る。エージェントアカウントは、マルチエージェントエンティティとの間で送出されたすべてのメッセージにアクセスすることを許可され得る。代替的に、エージェントアカウントは、マルチエージェントエンティティのためのエージェントとしてのエージェントアカウントの登録の後に始められるメッセージスレッドにアクセスすることを許可され得る。代替的に、エージェントアカウントは、マルチエージェントエンティティのための管理者によって特定のメッセージスレッドにアクセスすることを個別に許可され得る。マルチエージェントエンティティとのエージェントアカウントの関連付けと、メッセージスレッドにアクセスするためのエージェントアカウントの許可とは、エージェントマッピングリポジトリ415に記憶される。
マルチエージェントエンティティのエージェントとしてのエージェントアカウントの登録は、エージェントアカウントに関連付けられたエージェントクライアントデバイス505と管理者アカウントに関連付けられた管理者クライアントデバイス405との間のエンドツーエンド暗号化通信関係の作成を促し得る。クライアントデバイス405、505上のメッセージングコンポーネント440は、クライアントデバイス405とクライアントデバイス505との間の通信を暗号化および復号する際に使用するための暗号鍵を確立するために、セキュリティ情報を交換し得る。このエンドツーエンド暗号化通信関係は、エージェントクライアントデバイス505と管理者クライアントデバイス405との間で情報をセキュアに受け渡すために使用され得る。エンドツーエンド暗号化通信関係は、メッセージングシステムのためのデバイス間のエンドツーエンド暗号化メッセージングのために同じ技法を使用するエンドツーエンド暗号化通信関係であり得る。
いくつかの実施形態では、エージェントアカウント登録550は、マルチエージェントエンティティによって送出および受信されたメッセージにアクセスするためのメッセージ共有許可を備え得る。しかしながら、エージェントによるエージェントアカウント登録550に加えて、エージェント管理コンポーネント470は、マルチエージェントエンティティのための管理者からエージェントアカウント承認555を有するまで、マルチエージェントエンティティのエージェントとしてアカウントを登録するのを控え得る。
メッセージフォワーディング
図6は、メッセージパッケージ650をフォワーディングするマルチエージェントメッセージングシステム100の一実施形態を示す。
ユーザは、マルチエージェントエンティティにメッセージ610を送出するためにユーザクライアントデバイス605を使用し得る。ユーザは、ユーザクライアントデバイス605のユーザインターフェースコンポーネント430を使用してメッセージ610を生成する。ユーザインターフェースコンポーネント430は、メッセージ610をメッセージングコンポーネント440に受け渡す。メッセージングコンポーネント440は、次いで、メッセージパッケージ650を生成し、メッセージングサーバ410にサブミットする。メッセージパッケージ650は、マルチエージェントエンティティのためのアドレスまたは識別子にアドレス指定される。
メッセージ処理コンポーネント480は、ユーザアカウントに関連付けられたユーザクライアントデバイス605から、メッセージパッケージ650中でマルチエージェントエンティティのための着信メッセージ610を受信する。メッセージ処理コンポーネント480は、次いで、管理者アカウントによるエージェントアカウントのためのメッセージ共有許可に基づいて、登録されたエージェントアカウントに関連付けられたエージェントクライアントデバイス505に、その着信メッセージ610をもつメッセージパッケージ650を送出する。いくつかの実施形態では、メッセージ共有許可は、エージェントの登録に基づいて提供され得る。他の実施形態では、メッセージ共有許可は、特定のメッセージスレッドについて個別に提供され得、管理者が、エージェントがメッセージスレッドを読み取り、メッセージスレッドに参加することを個別に許可する。
いくつかの実施形態では、エージェントは、マルチエージェントエンティティのためのすべてのメッセージスレッド、または、そのエージェントがマルチエージェントエンティティのためのエージェントとして登録された後に作成されたすべてのメッセージスレッドにアクセスすることを可能にされる。他の実施形態では、エージェントは、管理者によって特定のメッセージスレッドにアクセスすることを可能にされ、エージェントがアクセスすることを特別に許可されていないメッセージスレッドにアクセスするのを妨げられる。いくつかの実施形態では、エージェントは、メッセージスレッドを読み取るが、エージェントが書き込むことを管理者によって特別に許可されるメッセージスレッドにのみメッセージをサブミットし得る。いくつかの実施形態では、特定のエージェントがメッセージスレッド中でポスティングすると、そのメッセージスレッドはそのエージェントにロックされ、他のエージェントがそのメッセージスレッド中でポスティングするのを妨げ得る。そのようなロックは、ビジネスアプリケーションでは、エージェントインターフェースにおいて示され得る。
いくつかの実施形態では、着信メッセージスレッドは、マルチエージェントエンティティのための1つまたは複数のデフォルトアカウントに向けられ得る。エージェントアカウントは、したがって、すべての着信メッセージスレッドがデフォルトで初期に向けられるデフォルトアカウントを備え得る。1つまたは複数のデフォルトアカウントは、マルチエージェントエンティティが登録されたときに指定されるか、あるいは、後で構成または再構成され得る。いくつかの実施形態では、デフォルトエージェントは管理者であり得、それにより、管理者が、着信メッセージスレッドのうちのいくつかに応答し、残りのものをハンドリングのために様々なエージェントに分配することを可能にする。管理者は、メッセージングサーバ410を介して管理者クライアントデバイス405からエージェントクライアントデバイス505にメッセージスレッドをフォワーディングするために、管理者クライアントデバイス405を使用し得る。
エージェントマッピングリポジトリ415は、各マルチエージェントエンティティのためのエージェントのリストを備える。エージェントマッピングリポジトリ415は、マルチエージェントエンティティのためのデフォルトエージェントのリストをさらに備え得、デフォルトエージェントは、ユーザクライアントデバイスからの着信メッセージング通信のデフォルト受信側である。1つまたは複数のデフォルトエージェントのリストは、マルチエージェントエンティティのための管理者によって指定され得る。エージェントマッピングリポジトリ415は、マルチエージェントエンティティのための1つまたは複数の管理者のリストをさらに記憶し得る。管理者は、限定はしないが、エージェントを追加すること、エージェントを削除すること、および/またはエージェントにメッセージスレッドを割り当てることを可能にされるなど、追加の能力(power)をもつエージェントのサブセットである。
エージェント管理コンポーネント470は、ユーザアカウントと管理者アカウントとの間のメッセージスレッドのためのメッセージスレッドフォワードを受信する。メッセージスレッドフォワードは、管理者クライアントデバイス405からなど、管理者アカウントから受信される。メッセージスレッドフォワードは、メッセージスレッドをフォワーディングされているエージェントアカウントにアドレス指定される。メッセージスレッドフォワードは、エージェントアカウントがマルチエージェントエンティティのためのすべてのメッセージスレッドにアクセスすることを許可されるとは限らない実施形態では、エージェントアカウントがメッセージスレッドにアクセスするためのメッセージ共有許可を備えるか、または、メッセージ共有許可に関連して送出され得る。エージェントは、エージェントがエージェントクライアントデバイス505を介してメッセージスレッドを割り当てられたことをエージェント管理コンポーネント470によって通知され得る。
エージェント管理コンポーネント470は、エージェントマッピングリポジトリ415においてメッセージスレッドをエージェントアカウントに登録する。これは、メッセージ処理コンポーネント480が、適切なクライアントデバイス、この場合、メッセージスレッドを割り当てられたエージェントアカウントのためのエージェントクライアントデバイス505に、メッセージスレッドのための着信メッセージをフォワーディングすることを可能にする。メッセージ処理コンポーネント480が、次いで、メッセージングサーバデバイス上のメッセージングサーバ410においてユーザクライアントデバイス605から、着信メッセージパッケージ650中でマルチエージェントエンティティのための着信メッセージ610を受信したとき、メッセージ処理コンポーネント480は、エージェントマッピングリポジトリ415においてメッセージスレッドをエージェントアカウントに登録したことに基づいて、メッセージパッケージ650中でエージェントクライアントデバイス505にメッセージ610を送出する。着信メッセージ610のためのメッセージスレッドは、メッセージ610によってアドレス指定されるマルチエージェントエンティティに基づいて決定され、適切なエージェントクライアントデバイス505を示すエージェント登録560は、メッセージ610が、エージェントクライアントデバイス505に割り当てられたメッセージスレッドに関連付けられていることに基づいて、エージェントマッピングリポジトリ415から取り出される。
着信メッセージパッケージ650が受信されたとき、メッセージパッケージ650は、予定受信側を識別するために検査される。予定受信側は、受信側識別子に基づいて識別される。予定受信側がマルチエージェントエンティティである場合、受信側識別子は、マルチエージェントエンティティを識別する。受信側識別子は、次いで、メッセージパッケージ650を受信するべきであるエージェントを取り出すために、エージェントマッピングリポジトリ415とともに使用され得、そのエージェントはエージェント登録560に基づいてマルチエージェントエンティティに登録されている。いくつかの場合には、エージェントは、エージェントのエージェントアカウントがメッセージパッケージ650のためのメッセージスレッドのためのハンドリングエージェントとして登録されていることに基づいて識別される。メッセージパッケージ650のためのメッセージスレッドは、送出側に基づいて識別され得、メッセージスレッドは、送出側のユーザクライアントデバイス605のためのユーザアカウントと受信側マルチエージェントエンティティとの間の一意のメッセージスレッドである。他の場合には、エージェントは、エージェントアカウントがデフォルトエージェントであることに基づいて識別され、デフォルトエージェントは、メッセージスレッドに特別に割り当てられているエージェントがないことにより、使用される。いずれの場合も、メッセージパッケージ650は、次いで、決定されたエージェントのためのエージェントクライアントデバイス505に送出される。
ユーザクライアントデバイス605とエージェントクライアントデバイス505との間のメッセージスレッドの初期作成が実施され得、ここで、デフォルトエージェントが、すべての着信ユーザ通信の初期メッセージスレッド作成を受信する。ユーザクライアントデバイス605とエージェントクライアントデバイス505とは、エンドツーエンド暗号化メッセージング関係を作成し得、各クライアントデバイス405、505がメッセージング関係についてのセキュリティ情報を記憶する。セキュリティ情報は1つまたは複数の暗号鍵を備え得、着信メッセージ610が、1つまたは複数の暗号鍵のうちの暗号鍵に基づいて暗号化される。
2つ以上のエージェントクライアントデバイスがユーザクライアントデバイス605とのメッセージスレッドにアクセスすることを許可される場合、メッセージスレッドは、セキュアなグループメッセージスレッドとしてセキュアにされ得る。セキュアなグループスレッドは、エンドツーエンド暗号を使用する3つまたはそれ以上のクライアントデバイス間の暗号化通信をサポートする。着信メッセージ610がグループメッセージスレッドに送出される場合、着信メッセージ610は、2つまたはそれ以上のエージェントクライアントデバイスについてなど、各受信側クライアントデバイスについて、個別に暗号化される。
いくつかの実施形態では、(マルチエージェントエンティティのための管理者によって使用されるデフォルトエージェントクライアントデバイスなどの)1つのエージェントクライアントデバイスからのメッセージスレッドの割り当ては、1対1の(one−to−one)メッセージスレッドからグループメッセージスレッドへのメッセージスレッドの移行を促し得る。他の実施形態では、メッセージスレッドは、初期に、グループメッセージスレッドとして作成され得る。特に、複数のエージェントがメッセージスレッドにアクセスすることを自動的に許可される場合、メッセージスレッドは、初期に、グループメッセージスレッドとして作成され得、あらゆるメッセージスレッドにアクセスすることを許可されたエージェントのための各エージェントクライアントデバイスが、そのグループメッセージスレッドに参加する。代替的に、エージェントクライアントデバイスは、エージェントクライアントデバイスがアクセスすることを許可されたメッセージスレッドにアクセスすることをエージェントクライアントデバイスが要求したことに応答して、グループメッセージスレッドに追加され得る。これらの実施形態では、メッセージスレッドは、第2のエージェントクライアントデバイスがユーザとのメッセージスレッドにアクセスすることを要求したことに応答して、グループメッセージスレッドに移行され得る。
第1のエージェントクライアントデバイスから第2のエージェントクライアントデバイスへのメッセージスレッドフォワードは、メッセージスレッドのための履歴バンドル(bundle)のフォワードを備え得る。デフォルトエージェントのためのエージェントクライアントデバイスなど、第1のエージェントクライアントデバイスは、既存の会話を履歴バンドルとして暗号化し、ユーザとの対話を続けるためのコンテキストを第2のエージェントに提供するために暗号化履歴バンドルを第2のエージェントクライアントデバイスに送出し得る。
グローバルビュー
すべてのエージェントクライアントデバイスなど、複数のクライアントデバイスがマルチエージェントエンティティのためのすべてのメッセージスレッドを受信することになる実施形態では、メッセージ処理コンポーネント480は、マルチエージェントエンティティのためのすべてのメッセージスレッドのためのすべてのメッセージパッケージを、マルチエージェントエンティティのためのすべてのエージェントクライアントデバイスに自動的にフォワーディングし得る。各着信メッセージパッケージ650について、メッセージ処理コンポーネント480は、エージェントマッピングリポジトリ415から、エージェントレジストリを備えるエージェント登録のリストを取り出し、メッセージパッケージ650をエージェントクライアントデバイスの各々にフォワーディングする。このメッセージパッケージ650は、その後、暗号化グループメッセージスレッド技法に従ってユーザクライアントデバイスからのメッセージパッケージを復号するために確立された暗号鍵に基づいて、エージェントクライアントデバイスの各々によって復号され得る。
メッセージスレッドは、メッセージスレッドインターフェースにおいてユーザクライアントデバイス605上に表示され得る。ユーザが対応しているマルチエージェントエンティティをユーザが識別するのを支援するために、マルチエージェントメッセージングシステム100は、マルチエージェントエンティティを示すためにユーザクライアントデバイス605上でメッセージスレッドインターフェースをラベリングし得る。たとえば、ユーザクライアントデバイス605上のメッセージスレッドインターフェースは、ビジネスの名前など、マルチエージェントエンティティのための検証された名前でラベリングされる。
いくつかの実施形態では、メッセージスレッドは、ユーザについて、それらのユーザが対応している個別エージェントに基づいてラベリングされる。したがって、エージェント管理コンポーネント470は、管理者アカウントからユーザアカウントへのメッセージスレッドフォワードコマンドに応答して管理者アカウントの代わりにエージェントアカウントを示すために、ユーザクライアントデバイス605上でメッセージスレッドのためのメッセージスレッドインターフェースを再ラベリングし得る。したがって、初期期間では、メッセージスレッドインターフェースは、管理者アカウントについてのユーザ情報を表示し、次いで、後続期間では、エージェントアカウントについてのユーザ情報を表示し得る。いくつかの実施形態では、通信している管理者またはエージェントのためのラベルは、通信ユーザを混乱させることを回避するように、管理者またはエージェントがメッセージスレッドにメッセージをサブミットするまで保留され得る。したがって、初期期間では、マルチエージェントエンティティの名前が使用され得、次いで、後続期間では、エージェントが管理者によってメッセージスレッドを割り当てられた後など、エージェントがメッセージスレッド内のメッセージを送出すると、エージェントの特定の名前が使用される。
メッセージングクライアント420は、連絡先についての最後に見られた時間を表示し得る。これらの最後に見られた時間は、各メッセージスレッドのためのメッセージング受信箱ビューにおいて表示され得る。これらの最後に見られた時間は、連絡先とのメッセージスレッドのためのメッセージスレッドインターフェースにおいて表示され得る。マルチエージェントエンティティの場合、使用される最後に見られた時間は、メッセージスレッドにアクセスするための許可をもつ任意のエージェントについての最新の(すなわち、最も最近の)最後に見られた時間であり得る。エージェント管理コンポーネント470は、マルチエージェントエンティティのための複数のエージェントアカウントについての複数の最後に見られた時間を決定し、複数の最後に見られた時間のうちの最も最近の最後に見られた時間を選択し、最も最近の最後に見られた時間をユーザクライアントデバイス605上のメッセージスレッドのためのメッセージスレッドインターフェースに提供して、マルチエージェントエンティティについての最後に見られた時間を示し得る。
いくつかの実施形態では、マルチエージェントエンティティ、ビジネスエンティティ、または他の可能にされたエンティティのための管理者および/またはエージェントは、複数のユーザアカウントにブロードキャストメッセージを送出することを可能にされ得る。たとえば、マルチエージェントエンティティは、マルチエージェントエンティティがアクティブまたは最近アクティブなメッセージスレッドを有するあらゆるユーザアカウントに、指定されたメッセージを送出することが可能であり得る。メッセージングシステムは、送出され得るブロードキャストメッセージの数に、1日の限度などの限度を課し得る。ユーザは、任意の特定のビジネスのためのブロードキャストメッセージまたはすべてのビジネスからのブロードキャストメッセージを受信することをオプトアウトすることを可能にされ得る。ユーザは、任意のブロードキャストメッセージを受信することまたは特定のビジネスのためのブロードキャストメッセージをオプトインすることを可能にされ得る。
メッセージをタグ付けすること
いくつかの実施形態では、管理者および/またはエージェントは、メモ(note)、ラベル、または他のいくつかの情報でユーザをタグ付けすることを可能にされ得る。管理者は、その後、特定のタグをもつユーザのみにブロードキャストメッセージを送出し得る。これらのタグは、複数のエージェントおよび/または管理者にとって可視であり、情報の共有を可能にし得る。たとえば、エージェントは、様々なタスクの実施を助けるために、他のエージェントにとって可視のメモをメッセージスレッドに追加し得る。エージェントおよび管理者は、タグに基づいてメッセージスレッドを分類および選択することを可能にされ得る。エージェントおよび管理者は、タグのうちの少なくともいくつかに基づいて、階層構造を用いて提示され得る。
ユーザとのメッセージスレッドは、ユーザがメッセージスレッドをどのように開始したかについてのコンテキストを提供するタグで、自動的にタグ付けされ得る。たとえば、メッセージングコンテキストタグは、ユーザが、メッセージングクライアント420においてマルチエージェントエンティティにディープリンクした、ウェブページ上のまたはアプリケーションにおけるディープリンクユニフォームリソースインジケータ(URI:uniform resource indicator)を選択したことを示し得る。メッセージングコンテキストタグは、ディープリンクURIを備える広告をユーザが選択したことを示し得る。
いくつかの実施形態では、メッセージスレッドをタグ付けすることは、画像またはビデオなど、メディアコンテンツでメッセージスレッドをタグ付けすることを含み得る。これらの実施形態では、メッセージングシステムは、メッセージスレッドにタグ付けされたメディアコンテンツを記憶するために使用され得るメディアリポジトリを提供し得る。このメディアリポジトリは、マルチエージェントエンティティの管理者およびエージェントのみが、マルチエージェントエンティティに関連付けられたメディアコンテンツにアクセスすることができるように、暗号化され得る。いくつかの実施形態では、管理者または他のエージェントによって選択されたエージェントのみが、メディアコンテンツにアクセスすることを許可され得る。
自動応答
いくつかの実施形態では、メッセージングシステムは自動応答をサポートし得る。たとえば、ユーザを歓迎するために、ユーザがマルチエージェントエンティティとのメッセージスレッドを作成したとき、自動応答が送出され得、自動応答は、マルチエージェントエンティティのための管理者によって定義される。自動応答は、頻繁に尋ねられる質問に答えるように、管理者によってセットアップされ得る。これらの自動応答は、明示的キーワードタグ付け、キーワード分析、機械ベースの自然言語学習、または任意の他の自然言語処理(NLP)技法を含む、様々なNLP技法に基づいて、ユーザメッセージに応答して提供され得る。メッセージングシステムはまた、メッセージスレッドを閲覧するエージェントに自動応答ショートカットを提供し得る。自動応答を自動的に送出する代わりに、メッセージングシステムは、1つまたは複数の提案された応答をエージェントに提供し得る。これらの提案された応答は、メッセージスレッドの詳細へのコンテキストなしに提供される一般的な提案された応答であり得るか、または、メッセージスレッドのNLP分析を含み得るような、メッセージスレッドの連絡先に基づき得る。
分析
マルチエージェントメッセージングシステム100は、マルチエージェントエンティティの管理者および/またはエージェントに分析を提供し得る。分析は、メッセージングシステム上でのマルチエージェントエンティティの性能に関する情報を提供する様々なメトリックのための様々な測度を提供し得る。分析は、限定はしないが、応答時間測度および満足測度(satisfaction measure)を含み得る。分析は、ブロードキャストメッセージについての読取りレートおよび応答レートを含み得る。分析は、概して、マルチエージェントエンティティについて、ならびに/あるいは様々な管理者および/またはエージェントの性能について提供され得る。
管理者は、管理者関連情報を示すダッシュボードを提供され得る。管理者関連情報は、アラートを含み得る。たとえば、ユーザメッセージが、定義された時間期間よりも長い間、応答なしに進んだ場合。アラートを生成するために使用される時間期間はメッセージがどのようにタグ付けされるかに応じて変化し得、高優先度タグでタグ付けされたより優先度の高いメッセージが、より優先度の低いメッセージよりも少ない応答なし時間でアラートを引き起こすなどである。いくつかの実施形態では、管理者は、応答されていないメッセージをもつ高優先度メッセージスレッドのリストを提供され得る。
支払い処理
マルチエージェントメッセージングシステム100は、コンシューマおよびビジネスに代わって支払い処理をサポートし得、マルチエージェントメッセージングシステム100は支払いプロセスにおいて媒介として働く。
許可解除(De−Authorization)
管理者およびエージェントはまた、マルチエージェントエンティティのためのメッセージスレッドおよび他の情報にアクセスするのを許可解除(de−authorize)され得る。管理者は、エージェント管理コンポーネント470に許可解除コマンドを送出することによって、エージェントを許可解除し得る。複数の管理者アカウントがマルチエージェントエンティティのために使用される場合、1次管理者アカウントが、他の管理者アカウントの許可および許可解除を制御し得る。1次管理者の許可解除は、マルチエージェントエンティティとの通信に基づいてメッセージングシステムの管理者によって、手動で実施され得る。
セキュリティ情報共有
代替実施形態では、エンドツーエンド暗号化メッセージスレッドへのアクセスは、デバイス間でセキュリティ情報を共有することによって提供され得る。ユーザクライアントデバイス605と管理者クライアントデバイス405との間のメッセージスレッドの初期作成が実施され得、ここで、管理者は、すべての着信ユーザ通信の初期メッセージスレッド作成を受信する。ユーザクライアントデバイス605と管理者クライアントデバイス405とは、エンドツーエンド暗号化メッセージング関係を作成し得、各クライアントデバイス405、605がメッセージング関係についてのセキュリティ情報を記憶する。セキュリティ情報は1つまたは複数の暗号鍵を備え得、着信メッセージ610が、1つまたは複数の暗号鍵のうちの暗号鍵に基づいて暗号化される。
このセキュリティ情報は、エージェントクライアントデバイス505が、ユーザクライアントデバイス605によってマルチエージェントエンティティとのメッセージスレッドに送出されたメッセージを復号することを可能にし、エージェントクライアントデバイス505が、エージェントクライアントデバイス505からユーザクライアントデバイス605に送出されたメッセージを暗号化することを可能にするために、管理者クライアントデバイス405からエージェントクライアントデバイス505に送出され得る。メッセージ処理コンポーネント480は、メッセージスレッドフォワードコマンドに基づいて、管理者アカウントからエージェントアカウントにスレッドフォワーディングペイロードをフォワーディングする。スレッドフォワーディングペイロードは、暗号鍵など、セキュリティ情報を備え、エージェントクライアントデバイス505がメッセージスレッドにアクセスすることを可能にする。
管理者クライアントデバイス405上のメッセージングコンポーネント440は、管理者クライアントデバイス405上のセキュリティ情報リポジトリから、暗号鍵など、セキュリティ情報を収集する。管理者クライアントデバイス405は、次いで、セキュリティ情報をエージェントクライアントデバイス505に送出する。管理者クライアントデバイス405によってエージェントクライアントデバイス505にセキュリティ情報を送出することは、メッセージスレッドが管理者によってエージェントに割り当てられたことに応答して実施され得る。エージェントクライアントデバイス505は、セキュリティ情報を受信し、そのセキュリティ情報を、エージェントクライアントデバイス505自体のセキュリティ情報リポジトリに記憶する。エージェントクライアントデバイスは、次いで、管理者クライアントデバイス405によって提供されるセキュリティ情報を使用してユーザクライアントデバイス605との通信を暗号化および復号することを可能にされる。管理者クライアントデバイス405からエージェントクライアントデバイス505にセキュリティ情報を送出することは、クライアントデバイス405とクライアントデバイス505との間のエンドツーエンド暗号化通信を使用して実施され得る。
セキュリティ情報が交換され、エージェントクライアントデバイス505がエージェントマッピングリポジトリ415においてユーザクライアントデバイス605とのメッセージスレッドのための置換(replacement)受信側として登録された場合、エージェントクライアントデバイス505は、したがって、メッセージ処理コンポーネント480からメッセージパッケージ650を受信することと、セキュリティ情報を使用して、中に記憶されたメッセージ610を復号することとの両方を行うように準備される。同様に、エージェントクライアントデバイス505は、セキュリティ情報とメッセージングサーバ410のメッセージフォワーディング機能性とを使用して、ユーザクライアントデバイス605にメッセージスレッドに関連するメッセージを送出するように準備される。
マルチエージェントエンティティのためのエージェントが、マルチエージェントエンティティのためのメッセージスレッド、すべてのスレッドまたは後続スレッドのいずれかにアクセスすることを自動的に許可される実施形態では、メッセージスレッドについてのセキュリティ情報は、メッセージスレッドが作成されたことに応答してエージェントクライアントデバイス505に自動的に提供され得る。メッセージスレッドがユーザとマルチエージェントエンティティとの間で作成されたとき、暗号鍵など、セキュリティ情報は、ユーザクライアントデバイス、およびマルチエージェントエンティティのためのクライアントデバイス上で確立される。マルチエージェントエンティティのために登録された1次管理者クライアントデバイスは、エンドツーエンド暗号化メッセージスレッドを作成するための要求を受信するように選択される。管理者クライアントデバイス405とユーザクライアントデバイス605とは、エンドツーエンド暗号関係を確立し、ここで、各クライアントデバイス405、605は、クライアントデバイス405とクライアントデバイス605との間で送出されるメッセージを暗号化および復号する際に使用するための暗号鍵を有する。エージェントクライアントデバイスがメッセージスレッドにアクセスするのを可能にするために、1次管理者クライアントデバイス405上のセキュリティ情報は、エージェントマッピングリポジトリ415において登録されたエージェントのためのすべてのエージェントクライアントデバイスにフォワーディングされる。管理者クライアントデバイス405は、セキュリティ情報が確立されると、そのセキュリティ情報を、メッセージスレッドについてのセキュリティ情報を備えるスレッドアクセスペイロードとしてエージェントクライアントデバイスに送出する。スレッドアクセスペイロードは、エージェントクライアントデバイスの各々に分配され、それにより、エージェントクライアントデバイスの各々上のメッセージングクライアントがメッセージスレッド中のメッセージを復号し、読み取ることを可能にする。スレッドアクセスペイロードは、管理者クライアントデバイス405とエージェントクライアントデバイスとの間のエンドツーエンド暗号技法に従って暗号化される。
グループメッセージスレッド暗号
図7は、エンドツーエンド暗号化通信システム700のためのブロック図を示す。エンドツーエンド暗号化通信システム700は、マルチエージェントメッセージングシステム100を備え得る。エンドツーエンド暗号化通信システム700は、複数のエージェントがユーザクライアントデバイスとのメッセージスレッドにアクセスすることを可能にするために使用され得るような、エンドツーエンド暗号化グループメッセージをサポートし得る。
複数のクライアントデバイス720がエンドツーエンド暗号化通信システム700の一部として動作し、メッセージングシステム750を介して互いの間でメッセージを送信し得る。クライアントデバイス720は、1つまたは複数のモバイルデバイス、パーソナルコンピュータデバイス、ポータブルコンピュータデバイス、デスクトップコンピュータデバイス、タブレットデバイス、スマートフォンデバイス、および/または任意の他の形態のコンピュータデバイスを備え得る。クライアントデバイス720の各々は、たとえば、限定はしないが、コンシューマ、エージェント、および管理者を含み得る、メッセージングシステム750の特定のユーザに関連付けられ得る。
第1のクライアントデバイス720−1が、メッセージングシステム750を介して1対1のメッセージ760を送信し得る。1対1のメッセージ760は、単一の送出側クライアントデバイスから単一の受信側クライアントデバイスに送出されたメッセージを備え得る。単一の受信側のみが指定されるので、メッセージングシステム750は、複数の受信側への1対1のメッセージ760のファンアウト(fan−out)または複製を実施しないことがあるが、代わりに、1対1のメッセージ760の受信側クライアントデバイス720−4が利用可能であるとき、その受信側クライアントデバイス720−4に1対1のメッセージ760をフォワーディングし得る。
1対1のメッセージ760は、送出側クライアントデバイス720−1と受信側クライアントデバイス720−4との間の送信のために暗号化され得る。1対1のメッセージ760は、公開/秘密鍵関係を使用する非対称暗号鍵に従って暗号化され得る。メッセージングシステム750は、受信側クライアントデバイスのための1つまたは複数の公開鍵を記憶し、受信側クライアントデバイスを送出するためのメッセージをもつ1つまたは複数のクライアントデバイスに分配するように動作可能であり得る。受信側クライアントデバイス720−4は、メッセージングシステム750を用いて公開鍵を記憶し得る。メッセージングシステム750は、1対1のメッセージ760と受信側クライアントデバイス720−4のための他のメッセージとを暗号化する際に使用するための公開鍵を送出側クライアントデバイス720−1に提供し得る。受信側クライアントデバイス720−4は、分配された公開鍵の秘密鍵カウンターパートを、受信側クライアントデバイス720−4上に機密として保有し得る。1対1のメッセージ760は、公開鍵を使用して暗号化され、それにより、メッセージングシステム750が1対1のメッセージ760を復号することが可能であることなしに、メッセージングシステム750を介して受信側デバイス720−4に送信され得る。
複数の、送出側主体の(sender−driven)グループメッセージ770は、メッセージングシステム750を使用して、グループメッセージ、すなわち、2つ以上の受信側に向けられたメッセージを送出することの、あるソリューションに対応し得る。送出側クライアントデバイス720−2は、受信側クライアントデバイス720−4、720−5、および720−6の各々についての、メッセージングシステム750への送出側主体のグループメッセージ770の各々の個別サブミッションを通して、受信側クライアントデバイス720−4、720−5、および720−6の各々に、送出側主体のグループメッセージを送信し得る。4つ以上の受信側クライアントデバイスが指定され得ることが諒解されよう。送出側主体のグループメッセージ770の各々は、複数の受信側クライアントデバイスの各々に固有の暗号鍵を使用して暗号化され得、各々についての1つの暗号鍵が、複数の受信側クライアントデバイスに対応する複数の暗号鍵からのものである。これは、メッセージングシステム750が送出側主体のグループメッセージ770のいずれかの内容を読み取るのを妨げ得る。送出側主体のグループメッセージ770の各々は、特定の受信側クライアントデバイスに、および特定の受信側クライアントデバイスへの配信のために、個別にアドレス指定されたので、受信側クライアントデバイス720−4、720−5、および720−6の各々のための公開鍵は、メッセージングシステム750によって受信側クライアントデバイス720−4、720−5、および720−6から送出側クライアントデバイス720−2にフォワーディングされ得、受信側クライアントデバイス720−4、720−5、および720−6の各々は、その共有公開鍵に対応する秘密鍵を機密として維持することによって、受信側クライアントデバイス720−4、720−5、および720−6の各々に送信された特定の、送出側主体のグループメッセージを復号することが可能な唯一のデバイスのままである。
しかしながら、クライアントデバイス720−2によって個別の、送出側主体のグループメッセージ770を送出することは、結果として、受信側クライアントデバイスの数の倍数としてスケールアップ(scale upwards)する、送出側クライアントデバイス720−2のためのデータ接続上で送信されるデータ量を使用し得る。これは、グループメッセージの1つのコピーのみが、送出側クライアントデバイス720−2によってメッセージングシステム750に送信されれば使用されていたであろうものを超過して、送出側クライアントデバイス720−2のためのアップロード帯域幅と、メッセージングシステム750のためのダウンロード帯域幅との著しい浪費を伴い得る。
再送信主体の(retransmission−driven)グループメッセージ780は、メッセージングシステム750を使用してグループメッセージを送出することの別のソリューションに対応し得る。送出側クライアントデバイス720−3は、メッセージングシステム750への再送信主体のグループメッセージ780の単一のサブミッションを通して、受信側クライアントデバイス720−4、720−5、および720−6の各々に再送信主体のグループメッセージ780を送信し得、メッセージングシステム750は、受信側クライアントデバイス720−4、720−5、および720−6の各々への再送信主体のグループメッセージ780のコピー分配を担当する。単一の、再送信主体のグループメッセージ780がメッセージングシステム750にサブミットされるので、再送信主体のグループメッセージ780に適用される暗号は、各受信側について同じである。したがって、受信側クライアントデバイス720−4、720−5、および720−6の各々は、受信側クライアントデバイス720−4、720−5、および720−6のすべてに知られている共有暗号鍵で構成されるべきである。
しかしながら、1対1のメッセージ760または送出側主体のグループメッセージ770とは異なり、送出側クライアントデバイス720−3による秘密非対称鍵の使用は、受信側クライアントデバイス720−4、720−5、および720−6の各々が対応する秘密鍵を有する必要があるという問題を提示する。対称暗号が使用されるのか非対称暗号が使用されるのかにかかわらず、受信側クライアントデバイス720−4、720−5、および720−6の各々は、同じ、再送信主体のグループメッセージ780が受信側クライアントデバイス720−4、720−5、および720−6のすべてによって復号されることになる場合、同じ暗号鍵を有しなければならない。しかしながら、メッセージングシステム750は、受信側クライアントデバイス720−4、720−5、および720−6によって共有される暗号鍵へのアクセスを有するのを妨げられなければならない。したがって、再送信主体のグループメッセージ780を復号するための受信側クライアントデバイス720−4、720−5、および720−6間で共有される暗号鍵は、受信側クライアントデバイス720−4、720−5、および720−6の間で共有されるとき、その暗号鍵自体暗号化されなければならない。
送出側クライアントデバイス720−3は、したがって、受信側クライアントデバイス720−4、720−5、および720−6に共有暗号鍵を送信するために1対1の暗号を使用し得る。共有暗号鍵は、クライアントデバイス720−2を参照しながら説明されたように、送出側主体のグループメッセージ770と同様の複数の、送出側主体のグループメッセージとして送出されたメッセージ中で符号化され得る。共有暗号鍵は、それにより、メッセージングシステム750が共有暗号鍵にアクセスすることが可能であることなしに、送出側クライアントデバイス720−3から受信側クライアントデバイス720−4、720−5、および720−6に送信され得る。送出側クライアントデバイス720−3から、または共有暗号鍵へのアクセスをもつ任意のクライアントデバイスから送出された、再送信主体のグループメッセージ780などのメッセージは、その後、共有暗号鍵を使用して暗号化され得、送出側クライアントデバイス720−3および受信側クライアントデバイス720−4、720−5、および720−6のいずれかはメッセージを復号することが可能であるが、メッセージングシステム750はメッセージを復号することが不可能なままである。非対称暗号は暗号化および復号するのに対称暗号よりも多くの計算リソースを使用し得るが、共有鍵が、共有鍵を使用して暗号化されたメッセージを復号することを許可されたデバイスの間で分配されるにすぎない場合、非対称秘密/公開鍵ペアの利益が重要でないことがあるので、対称暗号鍵が共有暗号鍵として使用され得る。
図8は、グループブロードキャストをインスタンス化する送出側デバイス820の一実施形態を示す。送出側デバイス820は、メッセージングアプリケーション830を備え得る。メッセージングアプリケーション830は、メッセージングコンポーネント840と、セキュリティコンポーネント850と、メッセージングストア860とを備え得る。送出側デバイス820は、マルチエージェントエンティティとの対話のためのユーザクライアントデバイス605を備え得る。
メッセージングコンポーネント840は、送出側デバイスにおいてブロードキャストグループ定義870を受信するように動作可能であり得、ブロードキャストグループ定義870は、複数の受信側デバイス825を備えるブロードキャストグループを定義する。いくつかの場合には、ブロードキャストグループ定義870は、送出側デバイス820上でユーザメッセージングインターフェースから受信され得る。メッセージングアプリケーション830は、送出側デバイス820のユーザにユーザメッセージングインターフェースを提示し得る。ユーザメッセージングインターフェースは、送出側デバイス820のユーザが、メッセージの1つまたは複数の受信側を指定することと、個人またはグループメッセージング対話を開始するかまたは個人またはグループメッセージング対話に応答することとを行うことを可能にし得る。送出側デバイス820のユーザは、受信側デバイス825に対応する複数の連絡先または他の受信側識別子を選択することによってブロードキャストグループを指定し得る。
ブロードキャストグループ定義870は、マルチエージェントエンティティのためのデフォルトエージェントのリストであり得る。マルチエージェントエンティティのためのエージェントクライアントデバイスは、受信側デバイス825に対応する。送出側デバイス820のユーザがマルチエージェントエンティティと通信することを要求する場合、送出側デバイス820は、マルチエージェントエンティティのためのデフォルトエージェントのためのデフォルトエージェントクライアントデバイスのリストを提供され得る。マルチエージェントエンティティのためのデフォルトエージェントクライアントデバイスのリストは、次いで、マルチエージェントエンティティのデフォルトエージェントとの暗号化グループメッセージングを開始するために、ブロードキャストグループ定義870として使用される。デフォルトエージェントクライアントデバイスの各々は、同様に、他のデフォルトエージェントクライアントデバイスとユーザクライアントデバイスとを備えるブロードキャストグループ定義を提供される。
ブロードキャストグループ定義870は、追加または代替として、非デフォルトエージェントのための非デフォルトエージェントクライアントデバイスを含み得る。グループメッセージスレッドがユーザとマルチエージェントエンティティとの間のメッセージングの開始において作成された場合、ブロードキャストグループ定義870はデフォルトエージェントのみを含み得る。しかしながら、メッセージング開始が単一のデフォルトエージェントを伴う場合、1対1のメッセージスレッドが初期に作成され得、グループメッセージスレッドは、非デフォルトエージェントがそのメッセージスレッドに割り当てられたことに応答して作成される。非デフォルトエージェントが割り当てられると、グループメッセージスレッド作成が開始され、したがって、単一のデフォルトエージェントと、1つまたは複数の割り当てられた非デフォルトエージェントとを含む。
代替の場合には、ブロードキャストグループは、受信側デバイス825のうちの1つなど、別のクライアントデバイスのユーザによって定義され得る。送出側デバイス820は、受信側デバイス825のうちの1つなど、別のクライアントデバイスからグループメッセージを受信していることがある。送出側デバイス820は、送出側デバイス820のユーザにグループメッセージを提示し、グループへの送信のための、ユーザからのグループメッセージに対する応答を受信していることがある。したがって、いくつかの場合には、ブロードキャストグループ定義870は、グループメッセージに応答する、その中に含まれていたユーザによって指定され得るか、またはさもなければ別のクライアントデバイスのユーザによって初期に決定されていることがある。
一実施形態では、ブロードキャストグループは、ユーザクライアントデバイス605と、ユーザクライアントデバイス605とのメッセージスレッドにアクセスすることを許可される1つまたは複数のエージェントクライアントデバイスとを含むように、メッセージングシステム750によって定義され得る。いくつかの場合には、これは、マルチエージェントエンティティのためのあらゆるエージェントクライアントデバイスを備え得る。メッセージングシステム750は送出側デバイス820にエージェントクライアントデバイスのリストを提供し得、送出側デバイス820は、次いで、エージェントクライアントデバイスのリストに基づいてブロードキャストグループ定義870をインスタンス化する。ブロードキャストグループにおけるメンバーシップが更新され得、送出側デバイス820は、そうすることを要求されたとき、追加されたエージェントクライアントデバイスに暗号鍵を提供する。たとえば、非デフォルトエージェントがユーザとのメッセージスレッドを割り当てられたか、またはさもなければユーザとのメッセージスレッドにアクセスすることを許可されたことに応答して、非デフォルトエージェントクライアントデバイスが追加されたとき、受信側デバイスが追加され得る。
セキュリティコンポーネント850は、送出側デバイス820において送出側ブロードキャスト暗号鍵875を生成するように動作可能であり得る。送出側ブロードキャスト暗号鍵875は、エンドツーエンド暗号化通信システム700のためのあらかじめ定義されたパラメータ内でランダムに生成され得る。たとえば、32バイト鍵が使用される場合、ランダム32バイト数が生成される。いくつかの実施形態では、ランダムに生成された鍵は、送出側ブロードキャスト暗号鍵875として使用するより前に、知られている技法による規準またはテストの対象となり得る。送出側ブロードキャスト暗号鍵875は、対称暗号鍵を備え得る。送出側ブロードキャスト暗号鍵875は、図7を参照しながら説明された共有暗号鍵に対応し得る。セキュリティコンポーネント850は、ブロードキャストグループとの将来の通信のための取出しのために、ブロードキャストグループに関連して、メッセージングストア860に送出側ブロードキャスト暗号鍵875を記憶し得る。
メッセージングコンポーネント840は、ブロードキャスト開始パッケージを生成するように動作可能であり得る。ブロードキャスト開始パッケージは、送出側ブロードキャスト暗号鍵875を含んでいることがある。いくつかの実施形態では、ブロードキャスト開始パッケージは、グループブロードキャストメッセージを含んでいることがある。メッセージングコンポーネント840は、ユーザメッセージングインターフェースを介してグループブロードキャストメッセージを受信し得る。グループブロードキャストメッセージは、テキストセグメントまたはメディアアイテムのうちの少なくとも1つを備え得る。グループブロードキャストメッセージは、ブロードキャストグループ定義870に対応するブロードキャストグループにアドレス指定され得る。メッセージングコンポーネント840は、ユーザメッセージングインターフェースを介してグループブロードキャストメッセージを受信したことに応答して、ブロードキャスト開始パッケージを生成し得、ブロードキャスト開始パッケージは、グループブロードキャストメッセージの配信と、将来のグループメッセージの暗号において使用するための送出側ブロードキャスト暗号鍵875の配信の両方を実施するためのものである。
メッセージングコンポーネント840は、複数の受信側デバイス825にブロードキャスト開始パッケージを送信するように動作可能であり得、複数の受信側デバイス825の各々は、受信側デバイス固有暗号鍵に従って暗号化されたブロードキャスト開始パッケージを送信される。受信側デバイス825の各々は異なる受信側デバイス固有暗号鍵に関連付けられ得、受信側デバイス固有暗号鍵の各々は、ブロードキャスト開始パッケージ880としての受信側デバイス825の各々への配信のためのブロードキャスト開始パッケージのコピーを暗号化するために、各々について1つ使用される。複数の受信側デバイス825の各々のための受信側デバイス固有暗号鍵は、非対称暗号鍵を備え得る。ブロードキャスト開始パッケージは、メッセージングシステム750を介して受信側デバイス825に送信され得る。代替的に、複数の受信側デバイス825の各々のための受信側デバイス固有暗号鍵は、受信側デバイス固有対称暗号鍵を備え得、受信側デバイス固有対称暗号鍵は、受信側デバイス固有非対称暗号鍵を使用して確立される。
メッセージングコンポーネント840は、メッセージングシステム750にブロードキャストパッケージ890を送信するように動作可能であり得、ブロードキャストパッケージ890はブロードキャストグループにアドレス指定され、ブロードキャストパッケージ890は送出側ブロードキャスト暗号鍵875に従って暗号化される。ブロードキャスト開始パッケージの複数のコピーが、受信側デバイス825の各々について1つ、送出側デバイス820によって送信されることと比較して、単一のブロードキャストパッケージ890のみが送信され得、メッセージングシステム750は、そのブロードキャストパッケージ890を、受信側デバイス825への送信のために複製する。
送出側ブロードキャスト暗号鍵875は、送出側デバイス820と受信側デバイス825とを備える、ブロードキャストグループのメンバー間の将来のグループブロードキャストのために使用され得る。いくつかの実施形態では、特定のユーザおよびクライアントデバイスが特定のメッセージンググループとのグループメッセージング会話を開始すると、ブロードキャストグループのすべてのメンバーが共有ブロードキャスト暗号鍵875を使用し得る。他の実施形態では、ブロードキャストグループの各メンバーは、ブロードキャストグループの各メンバーが本明細書に記載される技法を使用してブロードキャストグループの他のメンバーに分配するブロードキャストグループの各メンバー自身のブロードキャスト暗号鍵を使用し得る。
いくつかの実施形態では、セキュリティコンポーネント850は、暗号鍵進行(progression)関数に従って送出側ブロードキャスト暗号鍵875を進行させ得る。暗号鍵進行関数は、ブロードキャストパッケージの各送信の後の暗号鍵進行ハッシュの漸進的適用を備え得る。ハッシュ関数は、出力からハッシュ関数への、その関数への入力が導出され得ない、または、少なくとも、実際的でない計算能力および時間なしに導出され得ない、一方向数学的変換を定義し得る。ハッシュ関数は、あるブロードキャストパッケージのための現在の送出側ブロードキャスト暗号鍵875に適用されて、次のブロードキャストパッケージのための送出側ブロードキャスト暗号鍵875を決定し得る。その結果、送出側ブロードキャスト暗号鍵875の反復が特定の時点においてあらわにされる場合、その時点においておよびその時点を越えて送出されたブロードキャストパッケージのみが復号され得、前のブロードキャストパッケージは、あらわにされた鍵から導出され得ない送出側ブロードキャスト暗号鍵の反復を使用する。したがって、グループメッセージスレッドの開始後にグループメッセージスレッドに追加されたエージェントクライアントデバイスは、メッセージスレッドについての履歴を、その全体の間グループメッセージスレッド中にあったエージェントクライアントデバイスによって提供され得る。
メッセージングシステム750は、メッセージングブロードキャストグループのレジストリを維持し得る。メッセージングコンポーネント840は、したがって、メッセージングシステム750を用いてブロードキャストパッケージ890を受信側デバイス825にアドレス指定することが可能になるように、ブロードキャストパッケージ890の送信より前に、ブロードキャストグループをメッセージングシステム750に登録し得る。メッセージングコンポーネント840は、メッセージングシステム750にブロードキャストグループ登録要求を送信し、応答して、メッセージングシステム750からグループ識別子を受信し得、グループ識別子は、メッセージングシステム750に関するブロードキャストグループを識別する。受信側デバイス825および/または受信側デバイス825のユーザの各々が識別子に関連付けられ得、ブロードキャストグループ登録要求が、グループ中に含めるための受信側デバイス825を識別するために、受信側デバイス825についての識別子をリストする。このグループ識別子は、メッセージをブロードキャストグループの他のメンバーにアドレス指定するために、送出側デバイス820と受信側デバイス825のすべての両方を含む、ブロードキャストグループ中のデバイスのいずれかが使用するために利用可能であり得る。メッセージングコンポーネント840は、受信されたグループ識別子を使用してブロードキャストパッケージ890をブロードキャストグループにアドレス指定し得る。メッセージングコンポーネント840は、ブロードキャストグループとの通信のために受信側デバイス825を構成するために、ブロードキャスト開始パッケージ中にグループ識別子を含め得る。ブロードキャストグループがブロードキャストグループ中の別のデバイスによって初期に作成された場合、グループ識別子は、代わりに、受信側デバイス825のうちの1つなど、ブロードキャストグループ中の別のクライアントデバイスによって送出されたブロードキャスト開始パッケージ中で、送出側デバイス820によって受信されていることがある。
メッセージングコンポーネント840は、ユーザメッセージングインターフェースからグループメンバー追加要求を受信するように動作可能であり得る。代替的に、メッセージングコンポーネント840は、メッセージングシステム750からグループメンバー追加通知を受信し得る。グループメンバー追加要求またはグループメンバー追加通知は、ブロードキャストグループに追加されることになる追加の受信側デバイスに対応し得る。ユーザメッセージングインターフェースから受信されたとき、グループメンバー追加要求は、ブロードキャストグループ中に別のユーザのデバイスを含めるための、送出側デバイス820のユーザからの要求を備え得る。メッセージングシステム750から受信されたとき、グループメンバー追加通知は、ブロードキャストグループ中に別のユーザのデバイスを含めるための、ブロードキャストグループ中の別のデバイスのユーザからの要求を備え得る。
メッセージングコンポーネント840は、ブロードキャスト開始パッケージと同様であり得る、追加メンバーブロードキャスト開始パッケージを生成するように動作可能であり得る。追加メンバーブロードキャスト開始パッケージは、送出側ブロードキャスト暗号鍵875を含んでいることがある。暗号鍵進行が使用される場合、送出側ブロードキャスト暗号鍵875は、暗号鍵進行におけるその時点において到達された送出側ブロードキャスト暗号鍵875の反復を含めることによって、含められ得る。したがって、ブロードキャストグループの追加のメンバーは、追加メンバーブロードキャスト開始パッケージ中に含まれる任意のメッセージとブロードキャストグループに送出される任意の将来のメッセージとを読み取ることが可能であり得るが、ブロードキャストグループに送出され、送出側ブロードキャスト暗号鍵875の前の反復を用いて暗号化された前のメッセージを遡及的に復号することが可能でないことがある。
メッセージングコンポーネント840は、追加の受信側デバイスに追加メンバーブロードキャスト開始パッケージを送信するように動作可能であり得、追加メンバーブロードキャスト開始パッケージは、追加メンバー受信側デバイス固有暗号鍵に従って受信側デバイスへの送信のために暗号化される。追加メンバー受信側デバイス固有暗号鍵は、受信側デバイス825のために使用される受信側デバイス固有暗号鍵と同様に、追加の受信側デバイスに特別に関連付けられ得る。追加メンバー受信側デバイス固有暗号鍵は、メッセージングシステム750から送出側デバイス820によって受信され得る。追加メンバー受信側デバイス固有暗号鍵は、非対称暗号鍵または対称暗号鍵を備え得る。
メッセージングコンポーネント840は、ユーザメッセージングインターフェースを介して追加のグループブロードキャストメッセージを受信し得る。送出側デバイス820は、送出側デバイス820のユーザがブロードキャストグループにメッセージを実際に送出するまで、追加の受信側デバイスに送出側ブロードキャスト暗号鍵875を提供することを控え得る。追加のグループブロードキャストメッセージは、したがって、追加の受信側デバイスを含むブロードキャストグループにアドレス指定されたテキストセグメントまたはメディアアイテムのうちの少なくとも1つを備え得、追加メンバーブロードキャスト開始パッケージが追加のグループブロードキャストメッセージを含んでおり、追加メンバーブロードキャスト開始パッケージは、ユーザメッセージングインターフェースを介して追加のグループブロードキャストメッセージを受信したことに応答して生成される。
メッセージングコンポーネント840は、この追加のグループブロードキャストメッセージと、追加の受信側デバイスの追加からの送出側デバイス820によってブロードキャストグループにブロードキャストされる第1のメッセージとを、追加メンバーブロードキャスト開始パッケージを使用して送信し得、追加メンバーブロードキャスト開始パッケージは、送出側デバイス820からのこのブロードキャストグループのためのブロードキャストメッセージを復号するように追加の受信側デバイスを構成する。メッセージングコンポーネント840は、それにより、追加のグループブロードキャストメッセージを配信するものと同じパッケージを使用して送出側デバイス820から将来のブロードキャストパッケージを受信するように追加の受信側デバイスを構成し得る。ブロードキャストグループの他のメンバーは、ブロードキャストグループの他のメンバーが送出側ブロードキャスト暗号鍵875を使用して追加のグループブロードキャストメッセージを復号するようにすでに構成されているので、ブロードキャストパッケージを介してそのような追加のグループブロードキャストメッセージを受信し得る。複数の追加のメンバーがブロードキャストグループに追加された場合、その複数の追加メンバーブロードキャスト開始パッケージは、複数の追加のメンバーに関連付けられた複数の追加の受信側デバイスに送出され得、複数の追加メンバーブロードキャスト開始パッケージの各々は、複数の追加の受信側デバイスの各々に固有の暗号鍵に従って暗号化されることが諒解されよう。
メンバーは、ブロードキャストグループから削除ならびに追加され得る。メッセージングコンポーネント840は、ユーザメッセージングインターフェースからグループメンバー削除要求を受信し得る。代替的に、メッセージングコンポーネント840は、メッセージングシステム750からグループメンバー削除通知を受信し得、グループメンバー削除通知は、ブロードキャストグループ中の別のクライアントデバイスのユーザから発信し、ブロードキャストグループの1つまたは複数のメンバーを削除する。グループメンバー削除要求は、限定はしないが、管理者クライアントデバイス405によって実施され、エージェントクライアントデバイスがメッセージスレッドにアクセスするのを許可解除され得る。これは、たとえば、エージェントがマルチエージェントエンティティから削除される場合に実施され得る。しかしながら、グループメンバー削除要求はまた、エージェントが単にユーザとのメッセージスレッドから割り当て解除(unassign)される場合に実施され得る。
残念ながら、削除されたクライアントデバイスが、送出側ブロードキャスト暗号鍵875を使用して暗号化された、送出側デバイス820によってブロードキャストグループに送出されたブロードキャストパッケージへのアクセスを有する場合、削除されたクライアントデバイスは、ブロードキャストパッケージを復号することが可能である。暗号進行が使用される場合でも、削除されたクライアントデバイスは、暗号鍵を進行させ、ブロードキャストパッケージを復号し続け得る。したがって、送出側デバイス820は、削除されたクライアントデバイスが将来のブロードキャストパッケージを復号するのを妨げるように、送出側ブロードキャスト暗号鍵875とは別個である置換送出側ブロードキャスト暗号鍵の使用と、送出側ブロードキャスト暗号鍵875の進行とによって、送出側デバイス820のグループ通信をリセットし得る。したがって、セキュリティコンポーネント850は、受信されたグループメンバー削除要求または受信されたグループメンバー削除通知に応答して、送出側ブロードキャスト暗号鍵875を置換送出側ブロードキャスト暗号鍵と置き換え得る。
ブロードキャスト開始パッケージは、暗号化内容部分と非暗号化エンベロープ部分とを備え得る。非暗号化エンベロープ部分は、ブロードキャスト開始パッケージの受信側を識別するアドレス指定情報を含んでいることがある。受信側デバイスのためのアドレス指定情報は、受信側デバイスおよび/または受信側デバイスのユーザに関連付けられたユーザ識別子を備え得る。非暗号化エンベロープ部分は、メッセージングシステム750に対する、送出側デバイス820および/または送出側デバイス820のユーザを識別する情報を含んでいることがある。非暗号化エンベロープ部分は、送出側デバイス820がメッセージングシステム750を使用することを許可する情報を含んでいることがある。いくつかの実施形態では、送出側デバイス820がメッセージングシステム750を使用することを許可する情報は、秘密鍵を使用してブロードキャスト開始パッケージの少なくとも何らかの部分を暗号化することによってなど、送出側デバイス820を認証するための証明に従って暗号化され得、秘密鍵に対する対応する公開鍵が、送出側デバイス820を識別するためにメッセージングシステム750によって記憶される。暗号化内容部分は、送出側ブロードキャスト暗号鍵875と、もしあれば、グループブロードキャストメッセージとを含み得る。暗号化内容部分は、各受信側デバイスのための受信側デバイス固有暗号鍵に従って暗号化され得る。
ブロードキャストパッケージ890は、暗号化内容部分と非暗号化エンベロープ部分とを備え得る。非暗号化エンベロープ部分は、ブロードキャストパッケージ890を受信するブロードキャストグループを識別するアドレス指定情報を含んでいることがある。受信側デバイスのためのアドレス指定情報は、ブロードキャストグループに関連付けられたグループ識別子を備え得る。非暗号化エンベロープ部分は、メッセージングシステム750に対する、送出側デバイス820および/または送出側デバイス820のユーザを識別する情報を含んでいることがある。非暗号化エンベロープ部分は、送出側デバイス820がメッセージングシステム750を使用することを許可する情報を含んでいることがある。いくつかの実施形態では、送出側デバイス820がメッセージングシステム750を使用することを許可する情報は、秘密鍵を使用してブロードキャスト開始パッケージの少なくとも何らかの部分を暗号化することによってなど、送出側デバイス820を認証するための証明に従って暗号化され得、秘密鍵に対する対応する公開鍵が、送出側デバイス820を識別するためにメッセージングシステム750によって記憶される。暗号化内容部分は、ブロードキャストグループに送出されることになるブロードキャストメッセージを含み得る。
ブロードキャスト開始パッケージまたはブロードキャストパッケージ890の非暗号化部分が送信中にメッセージングシステム750によって修正され得ることが諒解されよう。情報は、エンドツーエンド暗号化通信の活動を促進するように、ブロードキャスト開始パッケージおよびブロードキャストパッケージ890の記憶および送信において追加、削除、または修正され得る。
図9は、グループブロードキャストを支援するメッセージングシステム750の一実施形態を示す。メッセージングシステム750は、図2を参照しながら説明されたように、鍵サーバ243と、チャットサーバ215と、グループサーバ244とを含み得る。
受信側デバイス825−1は、メッセージングシステム750の鍵サーバ243に受信側公開鍵アップロード910をサブミットし得る。受信側公開鍵アップロード910は、他のクライアントへの分配のための公開鍵を伴ってメッセージングシステム750を構成するための、メッセージングアプリケーション830の初期構成の間に実施され得る。受信側公開鍵アップロード910は、受信側デバイス825−1に連絡することを期待するクライアントデバイスへの分配のための、メッセージングシステム750にとって利用可能な公開鍵のプールをリフレッシュするために、時々実施され得る。受信側公開鍵アップロード910は複数の公開鍵を備え得、受信側デバイス825−1は複数の公開鍵に対する対応する秘密鍵を有し、受信側デバイス825−1は、その対応する秘密鍵を、受信側デバイス825−1上のリポジトリ中に機密に保有する。これは、概して、メッセージングシステム750が、他のクライアントデバイスがセキュアな通信に関与するのを支援することを可能にするために、メッセージングシステム750を使用するすべてのクライアントデバイスによって実施され得る。鍵サーバ243は、受信側公開鍵アップロード910中で受信された複数の公開鍵を鍵ストアに記憶し得る。受信側デバイス825−1は、受信側公開鍵アップロード910中の複数の公開鍵の各々を、受信側デバイス825−1に送出されたメッセージを暗号化するために公開鍵のうちのどれが送出側デバイスによって使用されたかを識別する際に使用するための公開鍵識別子に関連付け得る。
送出側デバイス820は、鍵サーバ243に公開鍵要求910を送信し得る。公開鍵要求910は、公開鍵が要求される受信側デバイス825−1を識別し得る。鍵サーバ243は、公開鍵要求910に応答して、受信側公開鍵アップロード910からの特定の受信側公開鍵920を送出側デバイス820に返し得る。鍵サーバ243への受信側公開鍵アップロード910のサブミッションと鍵サーバ243からの受信側公開鍵920の取出しとは、複数の鍵サーバ243のすべての直接関与ではなく、複数の鍵サーバ243のうちの特定の1つまたは複数の鍵サーバとの通信を備え得ることが諒解されよう。
送出側デバイス820は、チャットサーバ215に、送出側ブロードキャスト暗号鍵875を含んでいるブロードキャスト開始パッケージ880−1を送信し得る。チャットサーバ215は、1対1のメッセージング通信を特別に対象とすることがあり、グループ通信のファンアウトを実施しないことがある。ブロードキャスト開始パッケージ880−1は、公開鍵要求910に応答して鍵サーバ243から受信された受信側公開鍵920を使用して暗号化され得る。ブロードキャスト開始パッケージ880−1が受信されるときに受信側デバイス825−1がオンラインである場合、メッセージングシステム750は、ブロードキャスト開始パッケージ880−1を受信側デバイス825−1に直ちにフォワーディングし得る。いくつかの実施形態では、ブロードキャスト開始パッケージ880−1は、依然として、チャットサーバ215によって順に処理されることになるメッセージキューを通って移動し得る。ブロードキャスト開始パッケージ880−1がチャットサーバ215によって受信されるときに受信側デバイス825−1がオフラインである場合、チャットサーバ215は、受信側デバイス825−1が利用可能になるまでブロードキャスト開始パッケージ880−1を記憶し、受信側デバイス825−1が利用可能になると受信側デバイス825−1にブロードキャスト開始パッケージ880−1を送信し得る。チャットサーバ215は、ブロードキャスト開始パッケージ880が、含まれている送出側ブロードキャスト暗号鍵875のファンアウトを実施するためにメッセージングシステム750を使用するのではなく1対1の通信として送出されることにより、ブロードキャスト開始パッケージ880の送信のために使用され得る。チャットサーバ215へのブロードキャスト開始パッケージ880のサブミッションとチャットサーバ215からのブロードキャスト開始パッケージ880の送信とは、複数のチャットサーバ215のすべての直接関与ではなく、複数のチャットサーバ215のうちの特定の1つまたは複数のチャットサーバとの通信を備え得ることが諒解されよう。
グループサーバ244は、送出側デバイス820からブロードキャストパッケージ890を受信し得る。いくつかの場合には、送出側デバイス820または別のクライアントデバイスは、受信側デバイスまたはユーザアカウントのための識別子とともに受信側デバイスまたはユーザアカウントのリストを指定することによってなど、ブロードキャストパッケージ890の送信より前に、ブロードキャストグループをグループサーバ244に登録し得る。いくつかの場合には、送出側デバイス820は、ブロードキャストグループを、ブロードキャストパッケージ890を送信するために使用される同じネットワーク送信に登録するために、ブロードキャストパッケージ890中に受信側デバイスまたはユーザアカウントのリストを含め得る。グループサーバ244は、グループ識別子をブロードキャストグループに割り当て、送出側デバイス820および受信側デバイス825が、割り当てられたグループ識別子を使用してメッセージをブロードキャストグループにアドレス指定することを可能にし得る。
グループサーバ244は、ブロードキャストパッケージ890の受信のための、受信側デバイス825−1を含む受信側デバイス825を決定し得る。グループサーバ244は、キューイングのための遅延を潜在的に伴って、現在オンラインである受信側デバイス825のいずれかにブロードキャストパッケージ890を送信し得、オフラインである受信側デバイス825のいずれかへの送信のためにブロードキャストパッケージ890を記憶し得、オフライン受信側デバイスがオンラインになると、オフライン受信側デバイスにブロードキャストパッケージ890を送信する。グループサーバ244へのブロードキャストパッケージ890のサブミッションとグループサーバ244からのブロードキャストパッケージ890の送信とは、複数のグループサーバ244のすべての直接関与ではなく、複数のグループサーバ244のうちの特定の1つまたは複数のグループサーバとの通信を備え得ることが諒解されよう。
送出側デバイス820からのブロードキャストパッケージ890がエージェントのリストにアドレス指定される場合、グループサーバ244は、そのエージェントのリストを、エージェントマッピングリポジトリ415中のマルチエージェントエンティティのためのエージェントのリストに対してチェックし得る。ブロードキャストパッケージ890中のエージェントのリストは、リストされたエージェントが両方とも、依然としてマルチエージェントエンティティに関連付けられていることと、依然としてユーザとのメッセージスレッドに割り当てられていることの両方を確認するためにチェックされ得る。マルチエージェントエンティティに関連付けられていないかまたはメッセージスレッドに割り当てられていないかのいずれかであるリストされたエージェントは、関連付けられていないかまたは割り当て解除されたエージェントのためのエージェントクライアントデバイスにブロードキャストパッケージ890をフォワーディングすることを控えることによって、ブロードキャストパッケージ890を受信するのを妨げられる。エージェント関連付けのそのような削除またはエージェント割り当て解除(unassignment)は、管理者クライアントデバイス405によって要求され、エージェントマッピングリポジトリ415に記録される。そのような削除または割り当て解除が実施されるとき、送出側クライアントデバイス820は、送出側クライアントデバイス820がマルチエージェントエンティティと通信するときにアドレス指定するべきである受信側のリストを更新するように通知され得る。
図10は、グループブロードキャストを受信する受信側デバイス825−1の一実施形態を示す。受信側デバイス825−1は、複数の受信側デバイス825のすべての構成および動作の代表例として働き得る。
受信側デバイス825−1は、送出側デバイス820によって使用される同じメッセージングアプリケーション830のインスタンスを実行し得る。他の実施形態では、メッセージングシステム750が、サードパーティクライアント、マルチプラットフォームメッセージングクライアント、および代替メッセージングクライアントの使用のための他の技法など、複数のメッセージングクライアントの使用をサポートする場合など、代替メッセージングアプリケーションが使用され得る。受信側デバイス825−1上のメッセージングアプリケーション830は、メッセージングコンポーネント840とセキュリティコンポーネント850とを備え得る。
メッセージングコンポーネント840は、受信側デバイス825−1において送出側デバイス820からのブロードキャスト開始パッケージ880−1を受信するように動作可能であり得る。ブロードキャスト開始パッケージ880−1は、受信側デバイス825−1に固有の受信側デバイス固有暗号鍵に従って暗号化され得る。送出側デバイス820は送出側識別子に関連付けられ得、送出側識別子は、送出側デバイス820を識別するためにブロードキャスト開始パッケージ880−1中で受信される。
メッセージングコンポーネント840は、ブロードキャスト開始パッケージ880−1から送出側ブロードキャスト暗号鍵875を抽出するように動作可能であり得、送出側ブロードキャスト暗号鍵875は、メッセージングシステム750に関するブロードキャストグループへの送信のためのメッセージを暗号化する際に送出側デバイス820によって使用するためのものである。メッセージングコンポーネント840は、ブロードキャスト開始パッケージ880−1からグループ識別子を抽出し得、グループ識別子は、メッセージングシステム750に関するブロードキャストグループを識別する。
セキュリティコンポーネント850は、送出側識別子およびブロードキャストグループ識別子に関連して、メッセージングストア860に送出側ブロードキャスト暗号鍵875を記憶するように動作可能であり得る。メッセージングストア860は、受信側デバイス825−1についてのメッセージング履歴を記憶し得る。メッセージングストア860は、したがって、ブロードキャストグループのためのグループ会話についてのメッセージング履歴を記憶し得る。セキュリティコンポーネント850は、ブロードキャストグループのためのグループ会話についてのメッセージング履歴に関連して、メッセージングストア860に送出側ブロードキャスト暗号鍵875を記憶し得る。セキュリティコンポーネント850は、ブロードキャストグループにメッセージを送信したブロードキャストグループの各メンバーのための送出側ブロードキャスト暗号鍵を記憶し得る。セキュリティコンポーネント850は、エンドツーエンド暗号化通信システム700が、メンバーがブロードキャストグループにブロードキャストすることを試みると送出側ブロードキャスト暗号鍵を交換するためにネットワーク帯域幅を使用するにすぎないので、まだメッセージを送信していないブロードキャストグループのメンバーのための送出側ブロードキャスト暗号鍵を記憶しないことがある。
メッセージングコンポーネント840は、再送信サーバからブロードキャストパッケージ890を受信するように動作可能であり得、ブロードキャストパッケージは送出側識別子およびグループ識別子に関連付けられる。受信側デバイス825−1上のセキュリティコンポーネント850は、送出側識別子およびグループ識別子に基づいてメッセージングストア860から送出側ブロードキャスト暗号鍵875を取り出し得る。メッセージングコンポーネント840は、メッセージングストア860から取り出された送出側ブロードキャスト暗号鍵875を使用してブロードキャストパッケージ890を復号し得る。
図11Aは、メッセージスレッドのためのマルチエージェントラベリングを伴うフォワーディングベースの論理フロー1100の一実施形態を示す。
ユーザクライアントデバイス605は、マルチエージェントエンティティとのメッセージング開始1101を実施し得る。メッセージング開始1101は、マルチエージェントエンティティとのメッセージングに関与するための要求を備える。ユーザクライアントデバイス605は、マルチエージェントエンティティのためのメッセージング識別子を指定することによってなど、ユーザが関与することを望むマルチエージェントエンティティを、メッセージングサーバ410に対して識別する。ユーザクライアントデバイス605は、マルチエージェントエンティティのためのデフォルトエージェントクライアントデバイス1105のためのデフォルトクライアントデバイス識別子を受信し得る。ユーザクライアントデバイス605は、メッセージング開始1101の一部としてマルチエージェントエンティティのための名前をさらに受信し得、マルチエージェントエンティティのための名前は、デフォルトエージェントクライアントデバイス1105とのメッセージスレッドをラベリングするために使用される。マルチエージェントエンティティのための名前は、マルチエージェントエンティティのためのエージェントからユーザクライアントデバイス605において受信された個別メッセージをラベリングするためにさらに使用され得る。
代替シナリオでは、メッセージング開始1101は、デフォルトエージェントクライアントデバイス1105など、エージェントクライアントデバイスによって実施され得る。メッセージング開始1101は、説明されたように、ただし、1対1の暗号の確立においてデフォルトエージェントクライアントデバイス1105として要求元エージェントクライアントデバイスを用いて、実施され得る。いくつかの実施形態では、管理者クライアントデバイスのみがユーザとのメッセージングを開始し得る。
ユーザクライアントデバイス605は、次いで、デフォルトエージェントクライアントデバイス1105との、メッセージングサーバ410を介した暗号開始1103を実施する。暗号開始1103は、暗号鍵の交換を介してデフォルトエージェントクライアントデバイス1105との1対1のエンドツーエンド暗号化通信チャネルを確立する。
ユーザクライアントデバイス605およびデフォルトエージェントクライアントデバイス1105は、次いで、暗号開始1103において暗号鍵交換によって確立された1対1のエンドツーエンド暗号化通信チャネル上での初期メッセージ交換1104に関与し得る。
デフォルトエージェントクライアントデバイス1105は、次いで、エージェント再割り当て1106を実施し得る。エージェント再割り当て1106は、別のエージェントクライアントデバイス505がメッセージ交換に含まれるべきであるとメッセージングサーバ410に知らせる。エージェント再割り当て1106は、ユーザクライアントデバイス605とのグループ暗号開始1107を開始する。
ユーザクライアントデバイス605、デフォルトエージェントクライアントデバイス1105、および他のエージェントクライアントデバイス505は、エージェント再割り当て1106に応答してグループ暗号開始1107を実施する。このグループ暗号開始1107は、ユーザクライアントデバイス605とデフォルトエージェントクライアントデバイス1105と他のエージェントクライアントデバイス505との間のグループメッセージスレッド中のメッセージのフォワーディングを提供する。
エージェントクライアントデバイス505は、エージェント再割り当て1106を知らされる。これは、エージェントが次にユーザクライアントデバイス605のユーザをサービスすることを担当するというメッセージ、通知、または他の通信を、エージェントクライアントデバイス505を使用するエージェントに送出することを含み得る。
ユーザおよびエージェントは、その後、ユーザクライアントデバイス605およびエージェントクライアントデバイス505を介した後続メッセージ交換1108に関与し得る。後続メッセージ交換1108は、本明細書に記載されるエンドツーエンド暗号化グループメッセージスレッド技法を使用するエンドツーエンド暗号化グループメッセージスレッドである。デフォルトエージェントクライアントデバイス1105は、デフォルトエージェントクライアントデバイス1105のユーザが後続メッセージ交換1108を監視し、後続メッセージ交換1108に参加することを望む場合、デフォルトエージェントクライアントデバイス1105のユーザが後続メッセージ交換1108を監視し、後続メッセージ交換1108に参加することを可能にするためになど、後続メッセージ交換1108を受信し続ける。
ユーザクライアントデバイス605上のメッセージスレッド表示は、グループメッセージスレッドへの移行と、割り当てられたエージェントクライアントデバイス505を含む後続メッセージ交換1108とを通して、マルチエージェントエンティティの名前でラベリングされ続け得る。
図11Bは、メッセージスレッドのための個別エージェントラベリングを伴うフォワーディングベースの論理フロー1125の一実施形態を示す。
メッセージスレッドのための個別エージェントラベリングを伴うフォワーディングベースの論理フロー1125のためのステップの多くは、メッセージスレッドのためのマルチエージェントラベリングを伴うフォワーディングベースの論理フロー1100のためのステップと同じであり得る。異なる技法が本明細書に記載される場合を除いて同じ技法があり得ることが諒解されよう。詳細には、メッセージング開始1101と、暗号開始1103と、初期メッセージ交換1104と、エージェント再割り当て1106と、グループ暗号開始1107と、後続メッセージ交換1108とは、言及される場合を除いて、図11Aを参照しながら説明されたように実施され得る。
一実施形態では、メッセージング開始1101において、ユーザクライアントデバイス605は、マルチエージェントエンティティのための名前の代わりに、デフォルトエージェントクライアントデバイス1105を使用するデフォルトエージェントのための名前を提供され得る。デフォルトエージェントのためのこの名前は、マルチエージェントエンティティとのメッセージスレッドとデフォルトエージェントから受信された個別メッセージの両方をラベリングするために使用され得る。メッセージスレッドは、次いで、割り当てられたエージェントクライアントデバイス505のための割り当てられたエージェントのための名前を使用するために、メッセージスレッド再ラベリング1126に従って再ラベリングされ得る。
代替的に、別の実施形態では、マルチエージェントエンティティのための名前は、マルチエージェントエンティティとのメッセージスレッドをラベリングするために使用され得るが、個別メッセージは、ユーザクライアントデバイス605に個別メッセージを送出した個別エージェントに従ってラベリングされる。したがって、メッセージスレッドのための全体的なラベルのためのメッセージスレッド再ラベリング1126の代わりに、メッセージスレッド再ラベリング1126は、グループメッセージスレッドをラベリングする際に使用するためのマルチエージェントエンティティ名と、割り当てられたエージェントから受信された個別メッセージをラベリングする際に使用するための、割り当てられたエージェントの個別の名前とを提供し得る。
図11Cは、メッセージスレッドのためのグローバルビューベースの論理フロー1150の一実施形態を示す。
マルチエージェントメッセージングシステム100のためのメッセージングは、いくつかの実施形態では、マルチエージェントエンティティのためのあらゆるエージェントがあらゆるメッセージスレッドにアクセスすることを可能にされるグローバルビューを使用し得る。これらの実施形態では、グループ暗号開始1152は、マルチエージェントエンティティとのメッセージング開始1151に応答して直接実施される。
メッセージングサーバ410は、ユーザクライアントデバイス605からメッセージング開始1151を受信する。メッセージング開始1101は、マルチエージェントエンティティとのメッセージングに関与するための要求を備える。ユーザクライアントデバイス605は、マルチエージェントエンティティのためのメッセージング識別子を指定することによってなど、ユーザが関与することを望むマルチエージェントエンティティを、メッセージングサーバ410に対して識別する。
代替シナリオでは、メッセージング開始1151は、エージェントクライアントデバイス1155によって実施され得る。メッセージング開始1151は、説明されたように、ただし、要求元エージェントクライアントデバイス1155がデフォルトエージェントクライアントデバイスであるか否かにかかわらず、グループメッセージスレッド中に含まれる初期エージェントのリスト中に含まれる要求元エージェントクライアントデバイス1155を用いて、実施され得る。いくつかの実施形態では、管理者クライアントデバイスのみがユーザとのメッセージングを開始し得る。
ユーザクライアントデバイス605、第1のエージェントクライアントデバイス1155、他のエージェントクライアントデバイス505、および場合によっては追加のエージェントクライアントデバイスは、メッセージング開始1151に応答してグループ暗号開始1152を実施する。グループ暗号開始1152は、ユーザクライアントデバイス605およびマルチエージェントエンティティのためのあらゆるエージェントクライアントデバイスを伴って実施され得る。代替的に、グループ暗号開始1152は、ユーザクライアントデバイス605およびマルチエージェントエンティティのためのあらゆるデフォルトエージェントクライアントデバイスを用いて実施され得る。このグループ暗号開始1152は、ユーザクライアントデバイス605とエージェントクライアントデバイス1155と他のエージェントクライアントデバイス505とマルチエージェントエンティティのための任意の他のエージェントクライアントデバイスとの間のグループメッセージスレッド中のメッセージのフォワーディングを提供する。マルチエージェントエンティティのためのエージェントクライアントデバイスは、次いで、ユーザクライアントデバイス605とのメッセージ交換1153に関与し得る。
マルチエージェントエンティティとのメッセージスレッドは、そのメッセージスレッドに参加する個別エージェントに従って、または全体としてマルチエージェントエンティティに従ってのいずれかでラベリングされ得る。同様に、メッセージスレッド中の個別メッセージは、そのメッセージスレッドに参加する個別エージェントに従って、または全体としてマルチエージェントエンティティに従ってラベリングされ得る。
本明細書には、開示されるアーキテクチャの新規の態様を実施するための例示的な方法論を表すフローチャートのセットが含まれる。説明を単純にするために、たとえばフローチャートまたはフロー図の形態で本明細書に示される1つまたは複数の方法論は、一連の行為として図示され、記載されるが、一部の行為は、それに従い、本明細書に図示され、記載されるものとは異なる順番で、および/または他の行為と同時に発生し得るので、方法論は行為の順番によって限定されるものではないことは理解され、諒解されるべきである。たとえば、当業者は、方法論が、代替的に、状態図にあるように、一連の相関した状態またはイベントとして表すこともできることを理解し、諒解するであろう。さらに、方法論に示されるすべての行為が新規の実装形態のために必要であるとは限らない。
図12は、論理フロー1200の一実施形態を示す。論理フロー1200は、本明細書に記載される1つまたは複数の実施形態によって実行される動作の一部または全部を表し得る。
図12に示されている図示の実施形態では、論理フロー1200は、ブロック1202において、ユーザアカウントに関連付けられたユーザクライアントデバイスからマルチエージェントエンティティのための着信メッセージを受信し得る。
論理フロー1200は、ブロック1204において、着信メッセージを受信するために、マルチエージェントエンティティに関連付けられたエージェントアカウントを決定し得る。
論理フロー1200は、ブロック1206において、エージェントアカウントに関連付けられたエージェントクライアントデバイスを決定し得る。
論理フロー1200は、ブロック1208において、エージェントアカウントに関連付けられたエージェントクライアントデバイスに着信メッセージを送出し得る。
実施形態はこの例に限定されない。
図13は、中央集中システム1300のブロック図を示す。中央集中システム1300は、マルチエージェントメッセージングシステム100についての構造および/または動作の一部または全部を、単一の中央集中サーバデバイス1320内で完全に実装するなど、単一のコンピューティングエンティティ中で実装し得る。
中央集中サーバデバイス1320は、マルチエージェントメッセージングシステム100について情報を受信、処理、および送出することが可能な任意の電子デバイスを備え得る。電子デバイスの例は、限定はしないが、ウルトラモバイルデバイス、モバイルデバイス、携帯情報端末(PDA)、モバイルコンピューティングデバイス、スマートフォン、電話機、デジタル電話機、セルラー電話機、電子書籍リーダ、ハンドセット、一方向ページャ、双方向ページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ(PC)、デスクトップコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、ネットブックコンピュータ、手持ち型コンピュータ、タブレットコンピュータ、サーバ、サーバアレイもしくはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワーク機器、ウェブ機器、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、コンシューマエレクトロニクス、プログラマブルコンシューマエレクトロニクス、ゲームデバイス、テレビ、デジタルテレビ、セットトップボックス、ワイヤレスアクセスポイント、基地局、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、機械、またはそれらの組合せを含み得る。実施形態はこれに関して限定されない。
中央集中サーバデバイス1320は、処理コンポーネント1330を使用して、マルチエージェントメッセージングシステム100についての処理動作または論理を実行し得る。処理コンポーネント1330は、様々なハードウェア要素、ソフトウェア要素、または両者の組合せを備え得る。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路要素(たとえば、トランジスタ、抵抗器、キャパシタ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含み得る。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーションプログラムインターフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組合せを含み得る。実施形態がハードウェア要素を使用して実装されるか、および/またはソフトウェア要素を使用して実装されるかの決定は、望まれる計算速度、電力レベル、熱耐性、処理サイクル予算、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計または性能の制約など、所与の実装形態について望まれる任意の数の要因に応じて変化し得る。
中央集中サーバデバイス1320は、通信コンポーネント1340を使用して、マルチエージェントメッセージングシステム100についての通信動作または論理を実行し得る。通信コンポーネント1340は、パケット交換ネットワーク(たとえば、インターネットなどの公共ネットワーク、社内イントラネットなどのプライベートネットワークなど)、回路交換ネットワーク(たとえば、公衆交換電話網)、または(好適なゲートウェイおよびトランスレータを用いた)パケット交換ネットワークと回路交換ネットワークとの組合せとともに使用するのに好適な技法など、任意のよく知られている通信技法およびプロトコルを実装し得る。通信コンポーネント1340は、1つまたは複数の通信インターフェース、ネットワークインターフェース、ネットワークインターフェースカード(NIC)、無線機、ワイヤレス送信機/受信機(トランシーバ)、ワイヤードおよび/またはワイヤレス通信媒体、物理的コネクタなど、様々なタイプの標準的な通信要素を含み得る。限定ではなく、例として、通信媒体1312はワイヤード通信媒体およびワイヤレス通信媒体を含む。ワイヤード通信媒体の例は、ワイヤ、ケーブル、金属導線、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペアワイヤ、同軸ケーブル、光ファイバ、伝搬信号などを含み得る。ワイヤレス通信媒体の例は、音響、無線周波数(RF)スペクトル、赤外線および他のワイヤレス媒体を含み得る。
中央集中サーバデバイス1320は、通信コンポーネント1340を介して、通信信号1314を使用して、通信媒体1312上で他のデバイスと通信し得る。デバイスは、所与の実装形態について望まれるように、中央集中サーバデバイス1320の内部または外部にあり得る。
中央集中サーバデバイス1320は、メッセージングサーバ1350を実行し得る。メッセージングサーバ1350は、メッセージングシステム110のためのメッセージングサーバを備え得る。メッセージングサーバ1350は、複数のクライアントデバイス1310についてのメッセージング動作を提供し、クライアントデバイス1310間でメッセージを受信および送出し得る。クライアントデバイス1310は、スマートフォンデバイス150、タブレットデバイス160、パーソナルコンピュータデバイス180、および/または任意の他のクライアントデバイスのうちの1つまたは複数に対応し得る。中央集中サーバデバイス1320は、ローカルデータストアとしてエージェントマッピングリポジトリ415を備え得る。
図14は、分散システム1400のブロック図を示す。分散システム1400は、マルチエージェントメッセージングシステム100についての構造および/または動作の部分を、複数のコンピューティングエンティティにわたって分散させ得る。分散システム1400の例は、限定はしないが、クライアントサーバアーキテクチャ、3層アーキテクチャ、N層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスタースレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムを含み得る。実施形態はこれに関して限定されない。
分散システム1400は、複数の分散サーバデバイス1420を備え得る。概して、分散サーバデバイス1420は、図13を参照しながら説明された中央集中サーバデバイス1320と同じまたは同様であり得る。たとえば、分散サーバデバイス1420は各々、処理コンポーネント1430および通信コンポーネント1440を備え得、処理コンポーネント1430および通信コンポーネント1440は、図13を参照しながら説明された処理コンポーネント1330および通信コンポーネント1340とそれぞれ同じまたは同様である。別の例では、分散サーバデバイス1420は、通信コンポーネント1440を介して、通信信号1414を使用して通信媒体1412上で通信し得る。
分散サーバデバイス1420は、記載される実施形態に従って様々な方法論を実施するように動作する1つまたは複数のサーバプログラムを備えるか、または採用し得る。一実施形態では、たとえば、分散サーバデバイス1420は各々、複数のメッセージングサーバ1450のうちの1つを実行し得る。メッセージングサーバ1450は、メッセージングシステム110のためのメッセージングサーバを備え得る。メッセージングサーバ1450は、複数のクライアントデバイス1410についてのメッセージング動作を提供し、クライアントデバイス1410間でメッセージを受信および送出し得る。クライアントデバイス1410は、スマートフォンデバイス150、タブレットデバイス160、パーソナルコンピュータデバイス180、および/または任意の他のクライアントデバイスのうちの1つまたは複数に対応し得る。分散サーバデバイス1420は、媒体1412上で送出された信号1414を使用して、エージェントマッピングリポジトリ415と通信し得る。エージェントマッピングリポジトリ415は、ネットワークアクセス可能データストアとしてホストされ得る。
図15は、上記に記載の様々な実施形態を実装するのに好適な例示的なコンピューティングアーキテクチャ1500の一実施形態を示す。一実施形態では、コンピューティングアーキテクチャ1500は、電子デバイスを備えるか、電子デバイスの一部として実装され得る。電子デバイスの例は、とりわけ、図13、図14を参照しながら説明されたものを含み得る。実施形態はこれに関して限定されない。
本出願において使用される場合、「システム」および「コンポーネント」という用語は、ハードウェア、ハードウェアとソフトウェアとの組合せ、ソフトウェア、または実行中のソフトウェアのいずれかである、コンピュータ関連エンティティを指すことを意図し、それらの例が、例示的なコンピューティングアーキテクチャ1500によって提供される。たとえば、コンポーネントは、限定はしないが、プロセッサ上で実行しているプロセス、プロセッサ、ハードディスクドライブ、(光学および/または磁気記憶媒体の)複数の記憶ドライブ、オブジェクト、実行ファイル、実行スレッド、プログラム、および/またはコンピュータであり得る。例示として、サーバ上で実行しているアプリケーションとサーバの両方がコンポーネントであり得る。1つまたは複数のコンポーネントがプロセスおよび/または実行スレッド内に常駐することができ、コンポーネントは、1つのコンピュータ上に局在することができ、および/または2つまたはそれ以上のコンピュータ間で分散され得る。さらに、コンポーネントは、動作を協調させるように、様々なタイプの通信媒体によって互いに通信可能に結合され得る。協調は、情報の一方向または双方向の交換を伴い得る。たとえば、コンポーネントは、通信媒体上で通信される信号の形態で情報を通信し得る。情報は、様々な信号線に割り振られる信号として実装され得る。そのような割り振りでは、各メッセージが信号である。ただし、さらなる実施形態は、代替的にデータメッセージを採用し得る。そのようなデータメッセージは、様々な接続にわたって送出され得る。例示的な接続は、パラレルインターフェース、シリアルインターフェース、およびバスインターフェースを含む。
コンピューティングアーキテクチャ1500は、1つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力(I/O)コンポーネント、電源など、様々な一般的なコンピューティング要素を含む。しかしながら、実施形態は、コンピューティングアーキテクチャ1500による実装に限定されない。
図15に示されているように、コンピューティングアーキテクチャ1500は、処理ユニット1504と、システムメモリ1506と、システムバス1508とを備える。処理ユニット1504は、限定はしないが、AMD(登録商標)Athlon(登録商標)、Duron(登録商標)およびOpteron(登録商標)プロセッサ、ARM(登録商標)アプリケーション、組み込み型およびセキュアプロセッサ、IBM(登録商標)およびMotorola(登録商標)DragonBall(登録商標)およびPowerPC(登録商標)プロセッサ、IBMおよびSony(登録商標)のCellプロセッサ、Intel(登録商標)Celeron(登録商標)、Core(2)Duo(登録商標)、Itanium(登録商標)、Pentium(登録商標)、Xeon(登録商標)、およびXScale(登録商標)プロセッサ、ならびに同様のプロセッサを含む、様々な市販のプロセッサのうちの任意のものであり得る。デュアルマイクロプロセッサ、マルチコアプロセッサ、および他のマルチプロセッサアーキテクチャも処理ユニット1504として採用され得る。
システムバス1508は、限定はしないが、システムメモリ1506を含むシステムコンポーネントのためのインターフェースを処理ユニット1504に提供する。システムバス1508は、様々な市販のバスアーキテクチャのうちの任意のものを使用してメモリバス(メモリコントローラを有するかまたは有しない)、周辺バス、およびローカルバスにさらに相互接続し得るいくつかのタイプのバス構造のうちの任意のものであり得る。インターフェースアダプタが、スロットアーキテクチャを介してシステムバス1508に接続し得る。例示的なスロットアーキテクチャは、限定はしないが、アクセラレーテッドグラフィックスポート(AGP)、カードバス、(拡張)業界標準アーキテクチャ((E)ISA)、マイクロチャネルアーキテクチャ(MCA)、NuBus、周辺コンポーネント相互接続(拡張)(PCI(X))、PCIエクスプレス、パーソナルコンピュータメモリカード国際組織(PCMCIA)などを含み得る。
コンピューティングアーキテクチャ1500は、様々な製造品を含むかまたは実装し得る。製造品は、論理を記憶するためのコンピュータ可読記憶媒体を備え得る。コンピュータ可読記憶媒体の例は、揮発性メモリまたは不揮発性メモリ、取外し可能または非取外し可能メモリ、消去可能または非消去可能メモリ、書き込み可能または書き換え可能メモリなどを含む、電子データを記憶することが可能な任意の有形媒体を含み得る。論理の例は、ソースコード、コンパイルされたコード、解釈実行されたコード、実行可能コード、静的コード、動的コード、オブジェクト指向コード、視覚コードなど、任意の好適なタイプのコードを使用して実装される実行可能なコンピュータプログラム命令を含み得る。実施形態はまた、1つまたは複数のプロセッサによって読み取りおよび実行されて、本明細書に記載される動作の実施を可能にし得る、非一時的コンピュータ可読媒体に含まれているかまたは非一時的コンピュータ可読媒体上にある命令として、少なくとも部分的に実装され得る。
システムメモリ1506は、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、同期DRAM(SDRAM)、スタティックRAM(SRAM)、プログラマブルROM(PROM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリ、強誘電性ポリマーメモリなどのポリマーメモリ、オーボニックメモリ(ovonic memory)、相変化または強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン(SONOS)メモリ、磁気カードまたは光カード、独立ディスクの冗長アレイ(RAID)ドライブなどのデバイスのアレイ、ソリッドステートメモリデバイス(たとえば、USBメモリ、ソリッドステートドライブ(SSD))および情報を記憶するのに好適な任意の他のタイプの記憶媒体など、1つまたは複数の高速メモリユニットの形態の様々なタイプのコンピュータ可読記憶媒体を含み得る。図15に示されている図示の実施形態では、システムメモリ1506は、不揮発性メモリ1510および/または揮発性メモリ1512を含むことができる。基本入出力システム(BIOS)を不揮発性メモリ1510に記憶することができる。
コンピュータ1502は、内部(または外部)ハードディスクドライブ(HDD)1514、取外し可能な磁気ディスク1518からの読取りまたは取外し可能な磁気ディスク1518への書込みを行うための磁気フロッピーディスクドライブ(FDD)1516、および取外し可能な光ディスク1522(たとえば、CD−ROMまたはDVD)からの読取りまたは取外し可能な光ディスク1522への書込みを行うための光ディスクドライブ1520を含む1つまたは複数の低速メモリユニットの形態で、様々なタイプのコンピュータ可読記憶媒体を含み得る。HDD1514、FDD1516、および光ディスクドライブ1520は、それぞれHDDインターフェース1524、FDDインターフェース1526、および光ドライブインターフェース1528によって、システムバス1508に接続され得る。外部ドライブ実装のためのHDDインターフェース1524は、ユニバーサルシリアルバス(USB)およびIEEE1394インターフェース技術の少なくとも一方または両方を含むことができる。
ドライブおよび関連するコンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などの揮発性の記憶および/または不揮発性の記憶を提供する。たとえば、オペレーティングシステム1530、1つまたは複数のアプリケーションプログラム1532、他のプログラムモジュール1534、およびプログラムデータ1536を含むいくつかのプログラムモジュールが、ドライブおよびメモリユニット1510、1512に記憶され得る。一実施形態では、1つまたは複数のアプリケーションプログラム1532、他のプログラムモジュール1534、およびプログラムデータ1536は、たとえば、マルチエージェントメッセージングシステム100の様々なアプリケーションおよび/またはコンポーネントを含むことができる。
ユーザは、1つまたは複数のワイヤ/ワイヤレス入力デバイス、たとえば、キーボード1538、およびマウス1540などのポインティングデバイスを通してコンピュータ1502にコマンドおよび情報を入力することができる。他の入力デバイスは、マイクロフォン、赤外線(IR)リモートコントロール、無線周波数(RF)リモートコントロール、ゲームパッド、スタイラスペン、カードリーダ、ドングル、指紋リーダ、グローブ、グラフィックタブレット、ジョイスティック、キーボード、網膜リーダ、タッチスクリーン(たとえば、容量型、抵抗型など)、トラックボール、トラックパッド、センサー、スタイラスなどを含み得る。これらのおよび他の入力デバイスは、多くの場合、システムバス1508に結合された入力デバイスインターフェース1542を通して処理ユニット1504に接続されるが、パラレルポート、IEEE1394シリアルポート、ゲームポート、USBポート、IRインターフェースなど、他のインターフェースによって接続され得る。
モニタ1544または他のタイプの表示デバイスも、ビデオアダプタ1546など、インターフェースを介してシステムバス1508に接続される。モニタ1544は、コンピュータ1502の内部または外部にあり得る。モニタ1544に加えて、コンピュータは通常、スピーカー、プリンタなど、他の周辺出力デバイスを含む。
コンピュータ1502は、リモートコンピュータ1548など、1つまたは複数のリモートコンピュータへのワイヤおよび/またはワイヤレス通信を介した論理接続を使用して、ネットワーク化された環境において動作し得る。リモートコンピュータ1548は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースの娯楽機器、ピアデバイス、または他の一般的なネットワークノードであり得、通常、コンピュータ1502に関して記載された要素のうちの多くまたは全部を含むが、簡潔にするために、メモリ/記憶デバイス1550のみが示されている。描かれる論理接続は、ローカルエリアネットワーク(LAN)1552および/またはより大きなネットワーク、たとえば、ワイドエリアネットワーク(WAN)1554へのワイヤ/ワイヤレス接続性を含む。そのようなLANおよびWANネットワーキング環境は、事務所や会社において一般的であり、イントラネットなどの企業規模のコンピュータネットワークを容易にし、コンピュータネットワークはすべて、グローバル通信ネットワーク、たとえば、インターネットに接続し得る。
LANネットワーキング環境において使用されるとき、コンピュータ1502は、ワイヤおよび/またはワイヤレス通信ネットワークインターフェースあるいはアダプタ1556を通してLAN1552に接続される。アダプタ1556は、LAN1552へのワイヤおよび/またはワイヤレス通信を容易にすることができ、LAN1552は、アダプタ1556のワイヤレス機能性と通信するために配設されたワイヤレスアクセスポイントをも含み得る。
WANネットワーキング環境において使用されるとき、コンピュータ1502は、モデム1558を含むことができるか、またはWAN1554上の通信サーバに接続されるか、またはインターネットを介するなど、WAN1554上での通信を確立するための他の手段を有する。内部または外部にあり、ワイヤおよび/またはワイヤレスデバイスであり得る、モデム1558は、入力デバイスインターフェース1542を介してシステムバス1508に接続する。ネットワーク化された環境では、コンピュータ1502に関して描かれたプログラムモジュール、またはその部分は、リモートメモリ/記憶デバイス1550に記憶され得る。示されるネットワーク接続は例示であり、コンピュータ間で通信リンクを確立する他の手段が使用され得ることが諒解されよう。
コンピュータ1502は、ワイヤレス通信(たとえば、IEEE802.11オーバージエア変調技法)において動作可能に配設されるワイヤレスデバイスなど、IEEE802規格ファミリーを使用するワイヤおよびワイヤレスデバイスまたはエンティティと通信するように動作可能である。これは、とりわけ、少なくともWi−Fi(またはワイヤレスフィデリティ)、WiMax、およびBluetooth(商標)ワイヤレス技術を含む。したがって、通信は、従来のネットワークと同じように、あらかじめ定義された構造であり得るか、または、単に少なくとも2つのデバイス間のアドホック通信であり得る。Wi−Fiネットワークは、セキュアで信頼性が高く高速のワイヤレス接続性を提供するためにIEEE802.11x(a、b、g、nなど)と称される無線技術を使用する。Wi−Fiネットワークは、コンピュータを互いに、インターネットに、および(IEEE802.3関連媒体および機能を使用する)ワイヤネットワークに接続するために使用され得る。
図16は、上記の様々な実施形態を実装するのに好適な例示的な通信アーキテクチャ1600のブロック図を示す。通信アーキテクチャ1600は、送信機、受信機、トランシーバ、無線機、ネットワークインターフェース、ベースバンドプロセッサ、アンテナ、増幅器、フィルタ、電源など、様々な一般的な通信要素を含む。しかしながら、実施形態は通信アーキテクチャ1600による実装に限定されない。
図16に示されているように、通信アーキテクチャ1600は、1つまたは複数のクライアント1602と、サーバ1604とを備える。クライアント1602は、メッセージングクライアントを実装し得る。サーバ1604は、メッセージングサーバを実装し得る。クライアント1602およびサーバ1604は、クッキーおよび/または関連する状況情報などの情報を、それぞれのクライアント1602およびサーバ1604に対してローカルに記憶するために採用され得る1つまたは複数のそれぞれのクライアントデータストア1608およびサーバデータストア1610に動作可能に接続される。
クライアント1602およびサーバ1604は、通信フレームワーク1606を使用して互いの間で情報を通信し得る。通信フレームワーク1606は、任意のよく知られている通信技法およびプロトコルを実装し得る。通信フレームワーク1606は、パケット交換ネットワーク(たとえば、インターネットなどの公共ネットワーク、社内イントラネットなどのプライベートネットワークなど)、回線交換ネットワーク(たとえば、公衆交換電話網)、または(好適なゲートウェイおよびトランスレータを用いた)パケット交換ネットワークと回線交換ネットワークとの組合せとして実装され得る。
通信フレームワーク1606は、通信ネットワークを受け入れ、通信ネットワークと通信し、通信ネットワークに接続するように成される様々なネットワークインターフェースを実装し得る。ネットワークインターフェースは、特化した形態の入出力インターフェースと見なされ得る。ネットワークインターフェースは、限定はしないが、直接接続、イーサネット(たとえば、シック、シン、ツイストペア10/100/1000BaseTなど)、トークンリング、ワイヤレスネットワークインターフェース、セルラーネットワークインターフェース、IEEE802.11a−xネットワークインターフェース、IEEE802.16ネットワークインターフェース、IEEE802.20ネットワークインターフェースなどを含む接続プロトコルを採用し得る。さらに、様々な通信ネットワークタイプに関与するために、複数のネットワークインターフェースが使用され得る。たとえば、ブロードキャスト、マルチキャスト、およびユニキャストネットワーク上での通信を可能にするために、複数のネットワークインターフェースが採用され得る。処理要件がより高い速度およびより多くの容量を求める場合には、分散ネットワークコントローラアーキテクチャが同様に採用されて、クライアント1602およびサーバ1604によって必要とされる通信帯域幅をプールし、負荷分散し、他の方法で増大させ得る。通信ネットワークは、限定はしないが、直接相互接続、セキュア化されたカスタム接続、プライベートネットワーク(たとえば、社内イントラネット)、公共ネットワーク(たとえば、インターネット)、パーソナルエリアネットワーク(PAN)、ローカルエリアネットワーク(LAN)、メトロポリタンエリアネットワーク(MAN)、インターネット上のノードとして動作しているミッション(OMNI)、ワイドエリアネットワーク(WAN)、ワイヤレスネットワーク、セルラーネットワーク、および他の通信ネットワークを含むワイヤードおよび/またはワイヤレスネットワークのうちの任意の1つおよびそれらの組合せであり得る。
図17は、マルチエージェントメッセージングシステム100などのマルチキャリアOFDMシステムにおいて使用するためのデバイス1700の一実施形態を示す。デバイス1700は、たとえば、マルチエージェントメッセージングシステム100を参照しながら説明されたソフトウェアコンポーネント1760、および/または論理回路1735を実装し得る。論理回路1735は、マルチエージェントメッセージングシステム100について説明された動作を実施するための物理回路を含み得る。図17に示されているように、デバイス1700は、無線インターフェース1710、ベースバンド回路構成1720、およびコンピューティングプラットフォーム1730を含み得るが、実施形態はこの構成に限定されない。
デバイス1700は、マルチエージェントメッセージングシステム100および/または論理回路1735についての構造および/または動作の一部または全部を、単一のデバイス内に完全に実装するなど、単一のコンピューティングエンティティ中で実装し得る。代替的に、デバイス1700は、クライアントサーバアーキテクチャ、3層アーキテクチャ、N層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスタースレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムなどの分散システムアーキテクチャを使用して、マルチエージェントメッセージングシステム100および/または論理回路1735についての構造および/または動作の部分を複数のコンピューティングエンティティにわたって分散させ得る。実施形態はこれに関して限定されない。
一実施形態では、無線インターフェース1710は、(たとえば、相補符号キーイング(CCK)および/または直交周波数分割多重(OFDM)シンボルを含む)シングルキャリアまたはマルチキャリア変調信号を送信および/または受信するように適合されたコンポーネントまたはコンポーネントの組合せを含み得るが、実施形態は、どの特定のオーバージエアインターフェースまたは変調方式にも限定されない。無線インターフェース1710は、たとえば、受信機1712、送信機1716、および/または周波数シンセサイザ1714を含み得る。無線インターフェース1710は、バイアスコントロール、水晶発振器、および/または1つまたは複数のアンテナ1718を含み得る。別の実施形態では、無線インターフェース1710は、必要に応じて、外部の電圧制御発振器(VCO)、弾性表面波フィルタ、中間周波数(IF)フィルタ、および/またはRFフィルタを使用し得る。可能なRFインターフェース設計は多様であるため、その広範な説明は省略される。
ベースバンド回路構成1720は、受信信号および/または送信信号を処理するために無線インターフェース1710と通信し得、たとえば、受信信号をダウンコンバートするためのアナログデジタル変換器1722、信号を送信のためにアップコンバートするためのデジタルアナログ変換器1724を含み得る。さらに、ベースバンド回路構成1720は、それぞれの受信信号/送信信号のPHYリンク層処理のためのベースバンドまたは物理層(PHY)処理回路1726を含み得る。ベースバンド回路構成1720は、たとえば、メディアアクセス制御(MAC)/データリンク層処理のための処理回路1728を含み得る。ベースバンド回路構成1720は、たとえば、1つまたは複数のインターフェース1734を介した処理回路1728および/またはコンピューティングプラットフォーム1730と通信するためのメモリコントローラ1732を含み得る。
いくつかの実施形態では、PHY処理回路1726は、無線フレームなどの通信フレームを構築および/または分解するために、バッファメモリなどの追加の回路構成と組み合わせて、フレーム構築および/または検出モジュールを含み得る。代替または追加として、MAC処理回路1728は、これらの機能のうちのいくつかのための処理を共有するか、またはこれらのプロセスをPHY処理回路1726とは独立に実施し得る。いくつかの実施形態では、MACの処理とPHYの処理とは、単一の回路に統合され得る。
コンピューティングプラットフォーム1730は、デバイス1700にコンピューティング機能性を提供し得る。図示のように、コンピューティングプラットフォーム1730は、処理コンポーネント1740を含み得る。ベースバンド回路構成1720に加えて、またはその代わりに、デバイス1700は、処理コンポーネント1740を使用して、マルチエージェントメッセージングシステム100および論理回路1735についての処理動作または論理を実行し得る。処理コンポーネント1740(ならびに/あるいはPHY1726および/またはMAC1728)は、様々なハードウェア要素、ソフトウェア要素、または両者の組合せを備え得る。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路要素(たとえば、トランジスタ、抵抗器、キャパシタ、インダクタなど)、集積回路、特定用途向け集積回路(ASIC)、プログラマブル論理デバイス(PLD)、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含み得る。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、機械プログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーションプログラムインターフェース(API)、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組合せを含み得る。実施形態がハードウェア要素を使用して実装されるか、および/またはソフトウェア要素を使用して実装されるかの決定は、望まれる計算速度、電力レベル、熱耐性、処理サイクル予算、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計または性能の制約など、所与の実装形態について望まれる任意の数の要因に応じて変化し得る。
コンピューティングプラットフォーム1730は、他のプラットフォームコンポーネント1750をさらに含み得る。他のプラットフォームコンポーネント1750は、1つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力(I/O)コンポーネント(たとえば、デジタルディスプレイ)、電源など、一般的なコンピューティング要素を含む。メモリユニットの例は、限定はしないが、読取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、ダブルデータレートDRAM(DDRAM)、同期DRAM(SDRAM)、スタティックRAM(SRAM)、プログラマブルROM(PROM)、消去可能なプログラマブルROM(EPROM)、電気的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリ、強誘電性ポリマーメモリなどのポリマーメモリ、オーボニックメモリ、相変化または強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン(SONOS)メモリ、磁気カードまたは光カード、独立ディスクの冗長アレイ(RAID)ドライブなどのデバイスのアレイ、ソリッドステートメモリデバイス(たとえば、USBメモリ、ソリッドステートドライブ(SSD))および情報を記憶するのに好適な任意の他のタイプの記憶媒体など、1つまたは複数の高速メモリユニットの形態の様々なタイプのコンピュータ可読および機械可読の記憶媒体を含み得る。
デバイス1700は、たとえば、ウルトラモバイルデバイス、モバイルデバイス、固定デバイス、マシンツーマシン(M2M)デバイス、携帯情報端末(PDA)、モバイルコンピューティングデバイス、スマートフォン、電話機、デジタル電話機、セルラー電話機、ユーザ機器、電子書籍リーダ、ハンドセット、一方向ページャ、双方向ページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ(PC)、デスクトップコンピュータ、ラップトップコンピュータ、ノート型コンピュータ、ネットブックコンピュータ、手持ち型コンピュータ、タブレットコンピュータ、サーバ、サーバアレイもしくはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワーク機器、ウェブ機器、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、コンシューマエレクトロニクス、プログラマブルコンシューマエレクトロニクス、ゲームデバイス、テレビ、デジタルテレビ、セットトップボックス、ワイヤレスアクセスポイント、基地局、ノードB、発展型ノードB(eNB)、加入者局、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、機械、またはそれらの組合せであり得る。したがって、本明細書に記載されるデバイス1700の機能および/または特定の構成は、必要に応じて適宜、デバイス1700の様々な実施形態に含められるか、または省略され得る。いくつかの実施形態では、デバイス1700は、3GPP LTE仕様および/またはWMANのためのIEEE1702.16規格、ならびに/あるいは本明細書で引用される他の広帯域ワイヤレスネットワークのうちの1つまたは複数に関連付けられたプロトコルおよび周波数に準拠するように構成され得るが、実施形態はこの点に関して限定されない。
デバイス1700の実施形態は、単入力単出力(SISO)アーキテクチャを使用して実装され得る。しかしながら、いくつかの実装形態は、ビームフォーミングまたは空間分割多重アクセス(SDMA)のための適応アンテナ技法を使用する、および/またはMIMO通信技法を使用する送信および/または受信のための複数のアンテナ(たとえば、アンテナ1718)を含み得る。
デバイス1700のコンポーネントおよび特徴は、ディスクリート回路構成、特定用途向け集積回路(ASIC)、論理ゲート、および/またはシングルチップアーキテクチャの任意の組合せを使用して実装され得る。さらに、デバイス1700の特徴は、適宜、マイクロコントローラ、プログラマブル論理アレイおよび/またはマイクロプロセッサ、あるいは上記の任意の組合せを使用して実装され得る。本明細書では、ハードウェア、ファームウェアおよび/またはソフトウェア要素を、「論理」または「回路」と総称または個称し得ることに留意されたい。
図17のブロック図に示されている例示的なデバイス1700は、多くの可能な実装形態の1つの機能的説明例を表し得ることを諒解されたい。したがって、添付の図面に描かれるブロック機能の分割、省略、または包含は、これらの機能を実装するためのハードウェアコンポーネント、回路、ソフトウェア、および/または要素が実施形態において必ず分割、省略、または包含されることを示唆するものではない。
コンピュータ実装方法は、ユーザアカウントに関連付けられたユーザクライアントデバイスからマルチエージェントエンティティのための着信メッセージを受信することと、着信メッセージを受信するために、マルチエージェントエンティティに関連付けられたエージェントアカウントを決定することと、エージェントアカウントに関連付けられたエージェントクライアントデバイスを決定することと、エージェントアカウントに関連付けられたエージェントクライアントデバイスに着信メッセージを送出することとを含み得る。
コンピュータ実装方法は、マルチエージェントエンティティのための管理者アカウントのための管理者アカウント登録を受信することと、管理者アカウントをマルチエージェントエンティティに関連付けられたものとして登録することと、マルチエージェントエンティティのためのエージェントアカウントのためのエージェントアカウント登録を受信することと、ユーザアカウントに関連付けられたユーザクライアントデバイスからマルチエージェントエンティティのための着信メッセージを受信することと、管理者アカウントによるエージェントアカウントのためのメッセージ共有許可に基づいて、エージェントアカウントに関連付けられたエージェントクライアントデバイスに着信メッセージを送出することとを含み得る。
コンピュータ実装方法は、管理者アカウントからユーザアカウントと管理者アカウントとの間のメッセージスレッドのためのメッセージスレッドフォワードを受信することであって、メッセージスレッドフォワードがエージェントアカウントを指定する、メッセージスレッドフォワードを受信することと、メッセージングサーバデバイス上でメッセージスレッドをエージェントアカウントに登録することと、メッセージングサーバデバイスにおいてユーザクライアントデバイスからマルチエージェントエンティティのための着信メッセージを受信することと、メッセージスレッドをエージェントアカウントに登録することに基づいて、エージェントクライアントデバイスに着信メッセージを送出することとをさらに含み得る。
コンピュータ実装方法は、メッセージスレッドに関連付けられた着信メッセージをさらに備え得る。
コンピュータ実装方法は、管理者アカウントからエージェントアカウントにスレッドフォワーディングペイロードをフォワーディングすることであって、スレッドフォワーディングペイロードが、エージェントクライアントデバイスがメッセージスレッドにアクセスすることを可能にするセキュリティ情報を備える、スレッドフォワーディングペイロードをフォワーディングすることをさらに含み得る。
コンピュータ実装方法は、1つまたは複数の暗号鍵を備えるセキュリティ情報をさらに備え得、メッセージが、1つまたは複数の暗号鍵のうちの暗号鍵に基づいて暗号化される。
コンピュータ実装方法は、メッセージスレッドフォワードに応答して管理者アカウントの代わりにエージェントアカウントを示すために、ユーザクライアントデバイス上でメッセージスレッドのためのメッセージスレッドインターフェースを再ラベリングすることをさらに含み得る。
コンピュータ実装方法は、マルチエージェントエンティティを示すためにユーザクライアントデバイス上でメッセージスレッドインターフェースをラベリングすることをさらに含み得る。
コンピュータ実装方法は、マルチエージェントエンティティのためのエージェントアカウントのためのエージェントアカウント登録を含むメッセージ共有許可をさらに含み得る。
コンピュータ実装方法は、エージェントアカウント登録に応答して、マルチエージェントエンティティのための後続メッセージスレッドのメッセージ共有許可のためにエージェントアカウントを登録することをさらに含み得る。
コンピュータ実装方法は、マルチエージェントエンティティのための複数のエージェントアカウントについての複数の最後に見られた時間を決定することと、複数の最後に見られた時間のうちの最も最近の最後に見られた時間を選択することと、最も最近の最後に見られた時間をユーザクライアントデバイス上のメッセージスレッドのためのメッセージスレッドインターフェースに提供して、マルチエージェントエンティティについての最後に見られた時間を示すこととをさらに含み得る。
装置は、動作可能なエージェント管理コンポーネントおよびメッセージ処理コンポーネントを備え得る。装置は、本明細書に記載されるコンピュータ実装方法のいずれかを実装するように動作可能であり得る。
少なくとも1つのコンピュータ可読記憶媒体は、実行されたとき、システムに、本明細書に記載されるコンピュータ実装方法のいずれかを実施させる命令を備え得る。
いくつかの実施形態は、「一実施形態(one embodiment)」または「一実施形態(an embodiment)」という表現を、それらの派生語とともに使用して説明され得る。これらの用語は、当該実施形態に関して説明される特定の特徴、構造または特性が少なくとも1つの実施形態に含まれることを意味する。本明細書の様々な箇所に現れる「一実施形態では(in one embodiment)」というフレーズは、必ずしもすべてが同じ実施形態を指すとは限らない。さらに、いくつかの実施形態は、「結合された(coupled)」および「接続された(connected)」という表現を、それらの派生語とともに使用して説明され得る。これらの用語は必ずしも互いの同義語として意図されているとは限らない。たとえば、いくつかの実施形態は、「接続された」および/または「結合された」という用語を使用して、2つまたはそれ以上の要素が物理的または電気的に直接互いと接触していることを示すように説明され得る。ただし、「結合された」という用語は、2つまたはそれ以上の要素が互いに直接接触していないが、それでもなお互いに協働または対話することをも意味し得る。
本明細書で使用される表記および専門用語を全体的に参照すると、本明細書における詳細な説明は、コンピュータまたはコンピュータのネットワーク上で実行されるプログラムプロシージャの観点から提示され得る。これらの手続き的記載および表現は、当業者が他の当業者に自身の研究の本質を最も効果的に伝えるために使用される。
プロシージャとは、ここでは、および一般的には、所望の結果をもたらす動作の自己矛盾のないシーケンスであると考えられる。これらの動作は、物理的量の物理的操作を必要とする動作である。通常、ただし必ずしもそうであるとは限らないが、これらの量は、記憶、転送、組合せ、比較および他の方法で操作されることが可能な電気信号、磁気信号または光信号の形態をとる。場合によっては、主に広く使用されているという理由から、これらの信号を、ビット、値、要素、シンボル、文字、項、数などと呼ぶことが好都合であることが判明している。しかしながら、これらの用語および同様の用語はすべて適切な物理的量に関連付けられ、これらの量に適用される好都合な標識にすぎないことに留意されたい。
さらに、実施される操作は、多くの場合、一般的には人間のオペレータによって実施される知的動作に関連付けられる、追加または比較などの用語で参照される。1つまたは複数の実施形態の一部を形成する、本明細書に記載される動作のいずれにおいても、人間のオペレータのそのような能力(capability)は必要でないか、ほとんどの場合、望ましくない。むしろ、それらの動作は機械動作である。様々な実施形態の動作を実施するための有用な機械は、汎用デジタルコンピュータまたは同様のデバイスを含む。
様々な実施形態は、これらの動作を実施するための装置またはシステムにも関係する。この装置は、必要とされる目的のために特に構築され得るか、またはコンピュータに記憶されるコンピュータプログラムによって選択的に作動または再構成される汎用コンピュータを備え得る。本明細書において提示されるプロシージャは本質的に、特定のコンピュータまたは他の装置に関係しない。様々な汎用機械が、本明細書における教示に従って書かれたプログラムとともに使用され得るか、または、必要とされる方法ステップを実施するためのより特化した装置を構築することが好都合であると判明することがある。様々なこれらの機械のために必要とされる構造は、与えられる説明から明らかとなるであろう。
本開示の要約書は、読み手が技術的開示の本質を迅速に理解できるようにするために提供されていることを強調しておく。要約書は、特許請求の範囲の範囲または意味を解釈または限定することには使用されないという理解のもとに提出されている。また、上記の発明を実施するための形態では、本開示を効率化するために様々な特徴がまとめて単一の実施形態にされていることを見てとることができる。この開示方法は、特許請求される実施形態が各請求項に明示的に記された特徴以外のものを必要とするという意図を表すものと解釈されるべきではない。むしろ、以下の特許請求の範囲が表しているように、本発明の主題は、開示されている単一の実施形態のすべての特徴よりも少ない特徴にある。したがって、以下の特許請求の範囲は本明細書において発明を実施するための形態に組み込まれ、各請求項は個別の実施形態として独立している。添付の特許請求の範囲において、「including」および「in which」という用語は、それぞれ「comprising」および「wherein」というそれぞれの用語の平易な英語における等価語として使用されている。さらに、「第1の」、「第2の」、「第3の」などの用語は単に標識として使用されており、それらの対象物に数値的要件を課すことを意図したものではない。
上記の記載は、開示されるアーキテクチャの例を含む。当然ながら、コンポーネントおよび/または方法論のすべての考え得る組合せを記載することは不可能であるが、当業者であれば、多くのさらなる組合せおよび置き換えが可能であることを認識し得る。したがって、新規のアーキテクチャは、添付の特許請求の範囲の趣旨および範囲内にあるすべての改変、修正、および変形を包含することが意図される。