(57)【要約】  ネットワーク上のユーザエンティティを招待することを容易にする方法及びコンピュータ可読媒体が記載される。当該方法は、第１のエンドポイントにおける第１のユーザエンティティにより招待を送信するための第１のアプリケーションを起動すること、招待を受信する第２のユーザエンティティを選択すること、及びアクティビティを選択することを含むことができる。当該方法は、アクティビティが第１のエンドポイントにおいてコンピューティングアプリケーションによりサポートされていると第１のエンドポイントが判断した場合に、第１のエンドポイントから第２のユーザエンティティへアクティビティへの参加を求める招待を送信することも含むことができる。【選択図】  図１
2008538637.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上のユーザエンティティを招待する方法であって、
第１のエンドポイントにおける第１のユーザエンティティにより招待を送信するための第１のアプリケーションを起動すること、
前記招待を受信する第２のユーザエンティティを選択すること、
アクティビティを選択すること、及び
前記アクティビティが前記第１のエンドポイントにおいてコンピューティングアプリケーションによりサポートされていると該第１のエンドポイントが判断した場合に、該第１のエンドポイントから前記第２のユーザエンティティへ前記アクティビティへの参加を求める前記招待を送信すること
を含む、ネットワーク上のユーザエンティティを招待する方法。
【請求項２】
請求項１に記載のネットワーク上のユーザエンティティを招待する方法において、前記招待を送信するための前記第１のアプリケーションは、前記コンピューティングアプリケーションである、ネットワーク上のユーザエンティティを招待する方法。
【請求項３】
請求項１に記載のネットワーク上のユーザエンティティを招待する方法において、前記招待を送信するための前記第１のアプリケーションは、メッセンジャーアプリケーションである、ネットワーク上のユーザエンティティを招待する方法。
【請求項４】
請求項１に記載のネットワーク上のユーザエンティティを招待する方法であって、前記第２のユーザエンティティの第２のエンドポイントを突き止めるために、名前解決メカニズムを起動することをさらに含む、ネットワーク上のユーザエンティティを招待する方法。
【請求項５】
請求項１に記載のネットワーク上のユーザエンティティを招待する方法であって、前記第２のユーザエンティティの第２のエンドポイントを突き止めるために、プレゼンスストアに照会することをさらに含む、ネットワーク上のユーザエンティティを招待する方法。
【請求項６】
請求項１に記載のネットワーク上のユーザエンティティを招待する方法であって、同期して又は非同期で前記招待を送信することをさらに含む、ネットワーク上のユーザエンティティを招待する方法。
【請求項７】
請求項６に記載のネットワーク上のユーザエンティティを招待する方法であって、前記第１のエンドポイントにおいて非同期の招待をキャンセルすることをさらに含む、ネットワーク上のユーザエンティティを招待する方法。
【請求項８】
請求項１に記載のネットワーク上のユーザエンティティを招待する方法であって、安全な方式又は安全ではない（unsecure）方式で前記招待を送信することをさらに含む、ネットワーク上のユーザエンティティを招待する方法。
【請求項９】
ネットワーク上のユーザエンティティによる招待受信の方法であって、
受信エンドポイントにおいて、送信エンドポイントからのアクティビティへの参加を求める招待を受信するための第１のアプリケーションを起動すること、
前記受信エンドポイントにおいて前記招待を受信すること、及び
前記アクティビティが前記受信エンドポイントにおいてコンピューティングアプリケーションにより実行可能であると該受信エンドポイントが判断した場合に、該受信エンドポイントにおいて該コンピューティングアプリケーションを開始することであって、それによって、前記アクティビティを実行する、コンピューティングアプリケーションを開始すること
を含む、ネットワーク上のユーザエンティティによる招待受信の方法。
【請求項１０】
請求項９に記載のネットワーク上のユーザエンティティによる招待受信の方法において、前記招待を受信するための前記第１のアプリケーションは、前記コンピューティングアプリケーションである、ネットワーク上のユーザエンティティによる招待受信の方法。
【請求項１１】
請求項９に記載のネットワーク上のユーザエンティティによる招待受信の方法において、前記招待を受信するための前記第１のアプリケーションは、メッセンジャーアプリケーションである、ネットワーク上のユーザエンティティによる招待受信の方法。
【請求項１２】
請求項９に記載のネットワーク上のユーザエンティティによる招待受信の方法において、前記受信エンドポイントは、該受信エンドポイントにおける一般招待リスナアプリケーション、メッセンジャーアプリケーション、又は前記コンピューティングアプリケーションのうちの少なくとも１つによって前記招待を受信する、ネットワーク上のユーザエンティティによる招待受信の方法。
【請求項１３】
請求項９に記載のネットワーク上のユーザエンティティによる招待受信の方法であって、前記受信エンドポイントにおける前記コンピューティングアプリケーションのアクティビティ機能をプレゼンスストアに登録することをさらに含む、ネットワーク上のユーザエンティティによる招待受信の方法。
【請求項１４】
請求項９に記載のネットワーク上のユーザエンティティによる招待受信の方法であって、同期して又は非同期で前記招待を受信することをさらに含む、ネットワーク上のユーザエンティティによる招待受信の方法。
【請求項１５】
請求項９に記載のネットワーク上のユーザエンティティによる招待受信の方法であって、安全な方式又は安全ではない方式で前記招待を送信することをさらに含む、ネットワーク上のユーザエンティティによる招待受信の方法。
【請求項１６】
請求項９に記載のネットワーク上のユーザエンティティによる招待受信の方法であって、前記送信エンドポイントによって、前記受信エンドポイントへ送信された前記招待のステータス情報を取り出すことをさらに含む、ネットワーク上のユーザエンティティによる招待受信の方法。
【請求項１７】
ネットワーク上のユーザエンティティを招待するためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
第１のエンドポイントにおける第１のユーザエンティティにより招待を送信するための第１のアプリケーションを起動するためのコンピュータ実行可能命令と、
前記招待を受信する第２のユーザエンティティを選択するためのコンピュータ実行可能命令と、
アクティビティを選択するためのコンピュータ実行可能命令と、
前記アクティビティが前記第１のエンドポイントにおいてコンピューティングアプリケーションによりサポートされていると該第１のエンドポイントが判断した場合に、該第１のエンドポイントから前記第２のユーザエンティティへ前記アクティビティへの参加を求める前記招待を送信するためのコンピュータ実行可能命令と
を含む、コンピュータ可読媒体。
【請求項１８】
請求項１７に記載のコンピュータ可読媒体において、前記招待を送信するための前記第１のアプリケーションは、前記コンピューティングアプリケーションである、コンピュータ可読媒体。
【請求項１９】
請求項１７に記載のコンピュータ可読媒体において、前記招待を送信するための前記第１のアプリケーションは、メッセンジャーアプリケーションである、コンピュータ可読媒体。
【請求項２０】
請求項１７に記載のコンピュータ可読媒体であって、前記第２のユーザエンティティの第２のエンドポイントを突き止めるために、名前解決メカニズムを起動することをさらに含む、コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
ＭＳＮ（登録商標）通信サービスによって提供されるメッセンジャー（Messenger）サービス等のサーバベースの通信サービスは、ユーザが、サーバベースのネットワークにサインインし、その後、ネットワークのサービス（たとえば、電子メール、テキストメッセージング等）を使用することを可能にする。サーバは、ユーザの連絡先リストを記憶することができ、ユーザは、連絡先リストに人を追加し、連絡リストから人を削除することができる。ユーザがサインインすると、１つ又は複数のサーバは、そのユーザの連絡リストの人々に、そのユーザが「オンライン」であることを通知することができる。同様に、１つ又は複数のサーバは、「オンライン」であるユーザの連絡先リスト内の人々をそのユーザに通知することもできる。
【０００２】
MICROSOFT（登録商標）社は、同社のＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムと共に使用されるピアツーピアネットワーキングソフトウェアも提供する。このシステムでは、ユーザは、ピアコンピュータのネットワークを作成することができ、中央サーバにサインインする必要なく、互いに通信することができる。たとえば、ユーザは、ピアツーピアグループを作成することができ、その後、チャットルームを作成することができる。チャットルームでは、そのグループのすべてのメンバーが、メッセージをポストすることができ、グループの他の者によってポストされたメッセージを見ることができる。このシステムは、ピアが、共同アクティビティに参加するように他の者を招待することも可能にすることができる。チャットルームは、ピアコンピュータを使用して、中央サーバを必要とすることなく維持される。
【発明の開示】
【０００３】
ネットワーク上のユーザエンティティを招待することを容易にする方法及びコンピュータ可読媒体が説明される。当該方法は、第１のエンドポイントにおける第１のユーザエンティティにより招待を送信するための第１のアプリケーションを起動すること、招待を受信する第２のユーザエンティティを選択すること、及びアクティビティを選択することを含むことができる。当該方法は、アクティビティが第１のエンドポイントにおいてコンピューティングアプリケーションによりサポートされていると第１のエンドポイントが判断した場合に、第１のエンドポイントから第２のユーザエンティティへアクティビティへの参加を求める招待を送信することも含むことができる。
【０００４】
加えて、当該方法は、招待を送信するための第１のアプリケーションは、コンピューティングアプリケーションであること、招待を送信するための第１のアプリケーションは、メッセンジャーアプリケーションであること、及び名前解決メカニズムを起動することであって、それによって、第２のユーザエンティティの第２のエンドポイントを突き止める、名前解決メカニズムを起動することをさらに含むこともできる。当該方法は、プレゼンスストアに照会することであって、それによって、第２のユーザエンティティの第２のエンドポイントを突き止める、プレゼンスストアに照会すること、同期して又は非同期で招待を送信すること、第１のエンドポイントにおいて非同期の招待をキャンセルすること、及び安全な方式又は安全ではない方式で招待を送信することをさらに含むことができる。
【０００５】
さらに、ネットワーク上で招待を受信することを容易にする方法が説明される。当該方法は、受信エンドポイントにおいて、送信エンドポイントからのアクティビティへの参加を求める招待を受信するための第１のアプリケーションを起動すること、受信エンドポイントにおいて招待を受信すること、及びアクティビティが受信エンドポイントにおいてコンピューティングアプリケーションにより実行可能であると受信エンドポイントが判断した場合に、受信エンドポイントにおいてコンピューティングアプリケーションを開始することであって、それによって、アクティビティを実行する、コンピューティングアプリケーションを開始することを含むことができる。
【０００６】
加えて、当該方法は、コンピューティングアプリケーションである、招待を受信するための第１のアプリケーションと、メッセンジャーアプリケーションである、招待を受信するための第１のアプリケーションと、受信エンドポイントにおける一般招待リスナアプリケーション、メッセンジャーアプリケーション、又はコンピューティングアプリケーションの少なくとも１つによって招待を受信する受信エンドポイントとを含むことができる。当該方法は、受信エンドポイントにおけるコンピューティングアプリケーションのアクティビティ機能をプレゼンスストアに登録すること、同期して又は非同期で招待を受信することと、安全な方式又は安全ではない方式で招待を受信すること、及び送信エンドポイントによって、受信エンドポイントへ送信された招待のステータス情報を取り出すことをさらに含むこともできる。
【発明を実施するための最良の形態】
【０００７】
以下の本文は、多数の異なる実施形態の詳細な説明を述べているが、この説明の法的範囲は、本特許の最初に明記されている特許請求の範囲の言葉によって画定されることが理解されるべきである。詳細な説明は、例示としてのみ解釈されるべきであり、あらゆる可能な実施形態を説明することは不可能ではないにしても実際的ではないので、詳細な説明は、あらゆる可能な実施形態を説明するものではない。現在の技術又は本特許の出願日後に開発される技術のいずれかを使用して、多数の代替的な実施形態を実施することができる。これらの代替的な実施形態も、依然として特許請求の範囲の範囲内に含まれる。
【０００８】
また、「本明細書で使用されるように、用語「…」は、これによって、〜を意味するように定義される」という文又は類似の文を使用して、用語が本特許で明確に定義されていない限り、その用語の明白な意味又は通常の意味を越えて、その用語の意味を明確に又は暗に限定する意図はないことも理解されるべきであり、このような用語は、その範囲が、本特許のあらゆる部分（特許請求の範囲の文言以外）でなされた言明に基づいて限定されるものと解釈されるべきではない。本特許の最初にある特許請求の範囲に挙げられているどの用語も、単一の意味と整合するように本特許で参照される限りにおいて、それは読み手を混乱させないために明快にするだけの目的でなされたものであり、このような特許請求の範囲の用語が暗に又は別の方法でその単一の意味に限定されることは意図されていない。最後に、特許請求の範囲の要素は、どの構造の詳述も伴わない「手段」という言葉及び機能を挙げることによって定義されない限り、どの特許請求の範囲の要素の範囲も、米国特許法第１１２条第６パラグラフの適用に基づいて解釈されることは意図されていない。
【０００９】
図１は、請求項に記載の方法及び装置のステップのシステムを実施できる、適当なコンピューティングシステム環境１００の一例を示している。コンピューティングシステム環境１００は、適当なコンピューティング環境の一例にすぎず、請求項に記載の装置の方法の使用又は機能の範囲について何らの限定を示唆することも目的としていない。コンピューティング環境１００は、例示的な動作環境１００に示すコンポーネントのいずれか１つ又は組み合わせに関する任意の依存関係、或いは要件を有するものとして解釈されるべきでもない。
【００１０】
請求項に記載の方法及び装置のステップは、他の多数の汎用又は専用のコンピューティングシステム環境又は構成を用いて操作することができる。請求項に記載の方法又は装置の使用に適する周知のコンピューティングシステム、環境及び／又は構成の例には、それに限定されるものではないが、パーソナルコンピュータ、サーバーコンピュータ、ハンドヘルドデバイス又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、設定可能な家庭用電化製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスのいずれかを含む分散型コンピューティング環境等が含まれる。
【００１１】
請求項に記載の方法及び装置のステップは、コンピュータで実行中のプログラムモジュール等のコンピュータ実行可能命令の一般的なコンテキストに関して説明することができる。一般に、プログラムモジュールは、特定のタスクを実行するか、又は特定の抽象データタイプを実施するルーチン、プログラム、オブジェクト、構成要素、データ構造等を含む。方法及び装置は、通信ネットワークを通じてリンクされている遠隔処理デバイスによってタスクが実施される分散型コンピューティング環境で実施することもできる。分散型コンピューティング環境では、プログラムモジュールは、記憶装置を含む、ローカルコンピュータ及びリモートコンピュータの両方の記憶媒体内に配置することができる。
【００１２】
図１を参照すると、請求項に記載の方法及び装置のステップを実施するための例示的なシステムは、コンピュータ１１０の形態の汎用コンピューティングデバイスを含む。コンピュータ１１０の構成要素には、処理ユニット１２０、システムメモリ１３０、及びシステムメモリを含む様々なシステム構成要素を処理ユニット１２０に結合するシステムバス１２１が含まれ得るが、これらに限定されるものではない。システムバス１２１は様々なバスアーキテクチャのいずれかを使用するメモリバス又はメモリコントローラ、周辺バス、及びローカルバスを含むいくつかのタイプのバス構造のうちのどれであってもよい。限定的ではないが、例示として、このようなアーキテクチャには、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｅｎｈａｎｃｅｄ  ＩＳＡ（ＥＩＳＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ（ＶＥＳＡ）ローカルバス、及びＭｅｚｚａｎｉｎｅバスとしても知られているＰｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バスが含まれる。
【００１３】
コンピュータ１１０は、通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によってアクセス可能ないかなる使用可能な媒体であってもよく、揮発性媒体及び不揮発性媒体、着脱可能媒体及び着脱不能媒体の両方を含むものである。限定はしないが例示として、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体とを含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータ等の情報格納用の任意の方法又は技術で実施される揮発性及び不揮発性の、着脱可能及び着脱不能媒体の両方を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ若しくは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）若しくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶装置、又は所望の情報を格納するために使用され、またコンピュータ１１０によってアクセスすることができる他のいかなる媒体をも含むが、これらに限定するものではない。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール又は搬送波若しくは他の搬送メカニズム等の変調されたデータ信号形式の他のデータを具現化するものであり、いかなる情報伝達媒体も含むものである。「変調されたデータ信号」という用語は、１つ又は複数のその特徴的な設定を有する信号、又は信号中に情報を符号化するような方法で変更された信号を意味している。限定はしないが例示として、通信媒体は、有線ネットワーク又は直接有線接続等の有線媒体と、音波、ＲＦ、赤外線又は他の無線媒体等の無線媒体とを含む。コンピュータ可読媒体の範囲には、上記のいかなる組合せも含まれるべきである。
【００１４】
システムメモリ１３０は、読み出し専用メモリ（ＲＯＭ）１３１及びランダムアクセスメモリ（ＲＡＭ）１３２等の揮発性メモリ及び／又は不揮発性メモリ形式のコンピュータ記憶媒体を含む。起動中等に、コンピュータ１１０内の要素間で情報を転送するために役立つ基本ルーチンを含んでいる基本入出力システム１３３（ＢＩＯＳ）は、通常ＲＯＭ１３１内に格納されている。ＲＡＭ１３２は、通常、処理ユニット１２０に即時アクセス可能な、且つ／又はその時点において処理ユニット１２０により操作されているデータ及び／又はプログラムモジュールを含む。限定はしないが例示として、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６及びプログラムデータ１３７を示す。
【００１５】
コンピュータ１１０は、他の着脱可能／着脱不能、揮発性／不揮発性コンピュータ記憶媒体を含むこともできる。例示としてのみ、図１に、着脱不能な不揮発性磁気媒体に対して読み出し又は書込みするハードディスクドライブ１４１、着脱可能な不揮発性磁気ディスク１５２に対して読み出し又は書込みする磁気ディスクドライブ１５１、着脱可能な不揮発性光ディスク１５６に対して読み出し又は書込みをする、ＣＤＲＯＭ又は他の光学媒体等の光ディスクドライブ１５５を示す。例示的なオペレーティング環境で使用することができる他の着脱可能／着脱不能な揮発性／不揮発性コンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、半導体ＲＡＭ、半導体ＲＯＭ等が含まれるが、これらに限定されるものではない。ハードディスクドライブ１４１は、通常、インターフェース１４０等の着脱不能なメモリインターフェースを通じてシステムバス１２１に接続されており、磁気ディスクドライブ１５１と光ディスクドライブ１５５は、通常、インターフェース１５０等の着脱可能なメモリインターフェースによってシステムバス１２１に接続されている。
【００１６】
上述すると共に図１に示すドライブ及びそれらに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール及びコンピュータ１１０のための他のデータの記憶装置を提供する。図１では、例えば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６及びプログラムデータ１４７を格納しているものとして示されている。これらの構成要素は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６及びプログラムデータ１３７と同じであっても異なっていてもよいということに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、及びプログラムデータ１４７には、最低限、それらが異なるコピーであることを示すために本明細書では異なる番号が与えられている。ユーザは、キーボード１６２、及び、通常マウス、トラックボール又はタッチパッドと呼ばれるポインティングデバイス１６１等の入力デバイスを通じてコンピュータ２０にコマンド及び情報を入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナ等を含むことができる。これらの入力デバイス及び他の入力デバイスは、システムバスに結合されているユーザ入力インターフェース１６０を通じて処理ユニット１２０に接続されることがしばしばあるが、パラレルポート、ゲームポート又はユニバーサルシリアルバス（ＵＳＢ）等の他のインターフェース及びバス構造に接続されることもできる。モニタ１９１又は他のタイプの表示デバイスも、ビデオインターフェース１９０等のインターフェースを介してシステムバス１２１に接続される。モニタの他に、コンピュータは、周辺出力インターフェース１９０を通じて接続することができるスピーカ１９７及びプリンタ１９６等、他の出力周辺装置を含むこともできる。
【００１７】
コンピュータ１１０は、遠隔コンピュータ１８０等の１つ又は複数のリモートコンピュータへの論理接続を使用してネットワーク化された環境において動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス又は他の共通ネットワークノードであってもよく、図１では記憶装置１８１しか示していないが、通常コンピュータ１１０に関して上記で説明した多くの又はすべての要素を含む。図１で示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１及びワイドエリアネットワーク（ＷＡＮ）１７３を含むが、他のネットワークを含むこともできる。このようなネットワーキング環境は、事務所、企業全体に巡らされているコンピュータネットワーク、イントラネット及びインターネットでは一般的なことである。
【００１８】
ＬＡＮネットワーキング環境で使用されるとき、コンピュータ１１０は、ネットワークインターフェース又はアダプタ１７０を通じてＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるとき、コンピュータ１１０は、通常、インターネット等のＷＡＮ１７３を介して通信を確立するモデム１７２又は他の手段を含む。内部であっても外部であってもよいモデム１７２は、ユーザ入力インターフェース１６０又は他の適切なメカニズムを介してシステムバス１２１に接続することができる。ネットワーク環境において、コンピュータ１１０に関して示されたプログラムモジュール又はその一部は、リモート記憶装置に格納することができる。限定はしないが例示として、図１は、記憶装置１８１上に常駐するものとしてリモートアプリケーションプログラム１８５を示す。図示するネットワーク接続は例示的であり、コンピュータ間で通信リンクを確立する他の手段を使用することができることを理解されたい。
【００１９】
図２は、本明細書で説明する方法の例を実施するのに使用できる一例のシステム２００のブロック図である。システム２００は、通信ネットワーク２０２を介したピアツーピア、サーバレスコラボレーション及び／又は通信を円滑にすることができ、図１のコンピューティングシステム１００等のコンピューティングシステムを使用して実施することができる。通信ネットワークには、たとえば、ＬＡＮ及び／若しくはＷＡＮ、並びにソケット通信をサポートする通信媒体、又は名前付きパイプ等が含まれ得るが、これらに限定されるものではない。
【００２０】
システム２００は、通信ネットワーク上の他のエンティティのプレゼンスを監視するプレゼンスシステム２０４を含むことができる。エンティティは、たとえば、特定の人、デバイス（たとえば、プリンタ、複写機、コンピュータ、スキャナ等）、組織における地位（たとえば、「管理者」、「顧客サービス担当者」等）、組織等とすることができる。ネットワーク上のプレゼンスは、一般に、エンティティがネットワークを介して進んで通信すること又は通信できることに関するエンティティの現在のステータスを指すことができるが、そのエンティティの現在のアクティビティ等、エンティティに関する追加の情報又は代替的な情報を指すこともできる。ネットワーク上のプレゼンスは、プレゼンス情報によって表すことができる。プレゼンス情報の例には、エンティティが「オンライン」であることの表示、エンティティが「昼食で外出中」であることの表示、エンティティが「不在」であることの表示、エンティティが「すぐに戻る」ことの表示、エンティティが「アイドル」であることの表示、エンティティが「取り込み中（busy）」であることの表示、エンティティが「電話中」であることの表示、エンティティが「映画の鑑賞中」であることの表示、エンティティが「Ｈａｌｏ（登録商標）のプレイ中」であることの表示、エンティティが「別の顧客を手伝っている」ことの表示、デバイスステータスの表示（たとえば、ステータス「ビジー」、「アイドル」等を有するプリンタ）の１つ又は複数が含まれ得るが、これらに限定されるものではない。プレゼンス情報は、１つ若しくは２つ以上の列挙された文字列及び／又はリッチプレゼンス（たとえば、ユーザエンティティによって生成されたカスタム文字列）を含むことができる。たとえば、ユーザエンティティは、「私はオフィスにいません。明日戻ります。」のようなカスタムプレゼンス状態を定義することができる。プレゼンスシステム２０４によって取得されたプレゼンス情報は、プレゼンスストア２０８に記憶することができる。
【００２１】
プレゼンスシステム２０４は、或るユーザエンティティが他のエンティティのプレゼンス情報を監視する（プレゼンス情報に「サブスクライブ」する）ことを容易にすることができる。これは、たとえば、プレゼンスシステム２０４が他のコンピューティングシステムを定期的にポーリングすることを含むことができる。これに加えて又はこれに代えて、他のユーザエンティティに対応する他のコンピューティングシステムは、プレゼンス状態の変化等のイベントをプレゼンスシステム２０４に通知するイベント表示をシステム２００へ送信することもできる。たとえば、イベントは、ユーザのプレゼンスが「オフライン」から「オンライン」に変化した時に発生することができ、プレゼンスシステム２０４は、このイベントを検出することができる。プレゼンスシステム２０４は、その後、イベントが発生したことを他のアプリケーション又はソフトウェアモジュール（たとえば、アプリケーション２８０等）に通知することができる。
【００２２】
プレゼンスシステム２０４は、ネットワーク２０２上に公開された他のエンティティの機能も監視することができる。エンティティの機能は、たとえば、エンティティのコンピューティングシステムが特定のソフトウェアアプリケーションを実行するように構成されているか否か、エンティティのコンピューティングシステムが特定のハードウェアデバイスを有するか否か等の静的な機能を含むことができる。また、エンティティの機能は、たとえば、ゲームソフトウェアアプリケーションがエンティティのコンピューティングシステム上で現在実行されていることに関するエンティティのリアルタイム機能等の動的な機能も含むことができる。エンティティがネットワーク上に機能を公開することは、他のエンティティがネットワーク２０２を介して機能を監視できることを可能にすることを許容することと関連し得るものである。プレゼンスシステム２０４によって取得される機能情報は、機能ストア２１２に記憶することができる。
【００２３】
プレゼンスシステム２０４は、ネットワーク２０２上に公開された他のエンティティのオブジェクトを監視することもできる。エンティティのオブジェクトには、たとえば、ファイル、構造体、写真、サウンド、メタデータ及び名前値ペア等の記述等のデータオブジェクトが含まれ得る。エンティティがネットワーク上にオブジェクトを公開することは、他のエンティティがネットワーク２０２を介してオブジェクトを監視できることを可能にすることを許容することと関連し得るものである。単なる一例として、オブジェクトを公開することは、エンティティが、そのエンティティのコンピューティングシステムによって実行されているアプリケーションに特有の情報及び／又はリアルタイム情報を他のエンティティに提供することを可能にすることができる。たとえば、ゲームアプリケーションに関して、公開オブジェクトは、プレイヤの現在のスコア、プレイヤが現在所有している武器等に関する情報を含むことができる。プレゼンスシステム２０４によって取得されたオブジェクト情報は、オブジェクトストア２１６に記憶することができる。
【００２４】
プレゼンスシステム２０４は、ユーザエンティティ（すなわち、システム２００に関連するエンティティ）に関連するプレゼンス情報をネットワーク２０２上の他のエンティティに提供（又は「公開」）することもできる。ユーザエンティティに関連するプレゼンス情報は、プレゼンスストア２０８又は他の或るストレージに記憶することができる。同様に、プレゼンスシステム２０４は、ユーザエンティティの機能に関する情報もネットワーク２０２上の他のエンティティに提供（又は「公開」）することができる。ユーザエンティティに関連する機能情報は、機能ストア２０８に記憶することができる。さらに、プレゼンスシステム２０４は、ユーザエンティティのオブジェクトに関する情報もネットワーク上の他のエンティティに提供（又は「公開」）することができる。ユーザエンティティに関連するオブジェクト情報は、オブジェクトストア２１６又は他の或るストレージに記憶することができる。同様に、プレゼンスシステム２０４は、ユーザエンティティがプレゼンス情報を監視する（プレゼンス情報に「サブスクライブ」する）能力も容易にすることができる。したがって、プレゼンス情報がユーザエンティティによって監視されている時、その後の変化によって、ユーザエンティティが通知を受けるイベントを引き出すことができる。たとえば、監視されるプレゼンス情報が「不在」から「Ｈａｌｏ（登録商標）のプレイ中」に変化した場合、イベントがトリガし、それによって、ユーザエンティティに変化を通知することができる。
【００２５】
プレゼンスシステム２０４は、他のエンティティに関する情報を記憶する連絡先ストア２４０とインターフェースすることができる。連絡先ストア２４０は、安全識別子、人間可読エイリアス、このエンティティのプレゼンス情報が監視されるものか否かの指示子、及びこのエンティティがユーザエンティティに関するプレゼンス情報を取得することを可能にするか否かの指示子のうちの１つ又は複数等、エンティティの情報を記憶することができる。連絡先ストア２４０に表されたようなエンティティは、連絡先と呼ぶことができる。
【００２６】
各ユーザエンティティは、そのユーザエンティティが関連付けられている１つ又は複数の通信エンドポイントを有することができる。一般に、ユーザエンティティに関連付けられた異なる通信エンドポイントは、異なるコンピューティングシステム等、そのエンティティに関連する異なる通信終端ポイントを含むことができる。一例として、特定のエンティティのエンドポイントには、職場のデスクトップコンピュータ、家庭のデスクトップコンピュータ、携帯情報端末（ＰＤＡ）等が含まれ得る。オプションとして、ユーザエンティティに関連する異なる通信エンドポイントは、単一のコンピューティングシステムによって実行されている異なるソフトウェアアプリケーションも含むことができる。エンドポイント情報は、いくつか例を挙げると、ピア名、マシン名、又はデバイスタイプを含むことができる。
【００２７】
また、プレゼンスシステム２０４は、通信システム２６０ともインターフェースすることができる。通信システム２６０は、通信ネットワーク２０２に結合されている。通信システム２６０は、システム２００と、他のエンティティに関連する他のピアコンピューティングシステムとの間の接続を確立することができる。接続を確立することは、たとえば、エンティティに関連するエンドポイントを求めること、エンドポイントのアドレスを解決すること、通信を認証すること、通信の暗号化及び解読を行うこと等のうちの１つ又は複数を含むことができる。一実施態様では、通信システム２６０は、ピア名前解決プロトコル（ＰＮＲＰ）又は類似のものを含むことができる。ＰＮＲＰは、サーバコンピュータによって共通に使用されるドメインネームシステム（ＤＮＳ）に頼ることなく、連絡先の名前（たとえば、ピア名）を解決して、連絡先のＩＰアドレスを導出することができる。別の実施態様では、通信システム２６０は、認証システム２７０とインターフェースすることができる。認証システム２７０は、それ自体が連絡先ストア２４０に結合されている。通信システム２６０は、別のコンピューティングシステムとの接続の確立を試みる際に、その別のコンピューティングシステムから、エンティティに関連する識別子の表示を受信することができる。認証システム２７０は、次に、提示されたセキュリティ識別子を有するエンティティについての情報が連絡先ストア２４０に記憶されているか否かをチェックすることができる。その識別子が連絡先ストア２４０に見つからない場合、接続を拒否することができる。
【００２８】
接続を安全なものとすることができる。接続を確立して接続で通信することは、たとえば、安全なチャネルを利用すること、セキュアソケットレイヤ（ＳＳＬ）技法を利用すること、トランスポートレイヤセキュリティ（ＴＬＳ）技法を利用すること、公開鍵／私有鍵の対を利用すること、認証技法（たとえば、Ｘ．５０９証明書、プリティグッドプライバシー（ＰＧＰ（pretty good privacy））プログラムを利用する暗号化署名等）を利用すること、ピア名前解決プロトコル（ＰＮＲＰ）、伝送制御プロトコル（ＴＣＰ）、インターネットプロトコル（ＩＰ）、インターネットプロトコルバージョン６（ＩＰｖ６）等を利用することの１つ又は複数を含むことができる。エンドポイントのアドレスを解決することは、たとえば、ＰＮＲＰ識別子を解決してＩＰアドレス及びポートにすることを含むことができる。
【００２９】
ソフトウェアアプリケーション２８０又は他の或るソフトウェアモジュールは、プレゼンスシステム２０４と通信して、通信ネットワーク２０２上の他のユーザエンティティに関連するプレゼンス情報、機能情報、及び／又はオブジェクト情報を取得することができる。たとえば、プレゼンスシステム２０４は、他のユーザエンティティに関連するプレゼンス、機能、及び／又はオブジェクトに関する情報を要求して受信することをソフトウェアアプリケーションに可能にする一組のアプリケーションプログラミングインターフェース（ＡＰＩ）を提供することができる。プレゼンスシステム２０４は、要求された情報を、プレゼンスストア２０８、機能ストア２１２、及び／又はオブジェクトストア２１６から取り出すことができる。これに加えて又はこれに代えて、プレゼンスシステム２０４は、通信システム２６０及び通信ネットワーク２０２を介して他のユーザエンティティから、要求された情報を取得することもできる。一般的に言えば、「可用性」は、プレゼンス情報、機能、及びオブジェクトを指すことができる。ユーザエンティティは、この情報の全部又は一部を公開する能力も有するし、この情報のいずれも公開しない能力も有する。
【００３０】
招待ＡＰＩ２８２は、ユーザエンティティによって使用されるアプリケーション２８０が、サーバレスネットワークの他の連絡先又はユーザエンティティを、共同アクティビティに参加するように招待することを可能にすることができる。招待ＡＰＩ２８２は、プレゼンスシステム２０４を使用して連絡先ストア２４０から連絡先を求めることを用いることができる。加えて、プレゼンスシステム２０４は、機能ストア２１２に配置されている機能情報を取り出すこともできる。連絡先ストア２４０の特定の連絡先が、関連する機能情報を有しない場合、招待ＡＰＩ２８２又は代替的にアプリケーション２８０は、機能ＡＰＩ２８４を使用して、別のユーザエンティティのエンドポイントの機能を求めることができる。機能は、複数のエンドポイント上のアプリケーションによってサポートされるあらゆるアクティビティを含む共同アクティビティである場合がある。たとえば、或る連絡先のエンドポイントは、Ｈａｌｏ（登録商標）ゲームアプリケーションがインストールされていることから、その連絡先は、Ｈａｌｏ（登録商標）ゲームプレイのアクティビティをサポートすることができる。招待ＡＰＩは、連絡先所有者が、Ｈａｌｏ（登録商標）ゲームプレイのアクティビティをサポートできるサーバレスネットワーク上の他の連絡先を求めることを可能にすることができる。
【００３１】
招待ＡＰＩが、アクティビティをサポートする連絡先を突き止めると、ユーザエンティティ（招待側）は、その連絡先（被招待側）へ招待を送信することができ、それによって、被招待側は招待に応答することが可能になる。応答は、「受け付ける」、「拒否する」、又は「無視する」の標準的な被招待側選択肢を含むことができる。他の応答選択肢には、「ただ今忙しいので、後ほど招待してください」又は「午後９時以降に再びお願いします」等の標準的な本文又はカスタムな本文が含まれ得る。しかしながら、被招待側が、エンドポイントに存在しない場合、又は、「受け付ける」、「拒否する」、若しくは「無視する」で招待の確認応答をしないことを単に選んだ場合、招待はタイムアウトすることができる。タイムアウト期間が満了すると、招待は、被招待側のエンドポイントで見えなくすることができ、それによって、被招待側のデスクトップの混乱を最小にすることができる。オプションとして、たとえば、報告を行っている間、招待ダイアログボックスが被招待側の邪魔をしないように、被招待側はアラート設定を構成することができる。したがって、着信するどの招待も、被招待側の手が空いていないことの表示を自動的に受け取ることができる。被招待側は、このような表示をさらにカスタマイズすることができ、たとえば、「報告中なので、午後４時以降にお願いします。」とカスタマイズすることができる。
【００３２】
図３は、特許請求の範囲に従った方法３００の図解とすることができる。この方法は、ユーザエンティティによって使用されるアプリケーション２８０が、メッセンジャーアプリケーション（ブロック３０２で開始）であるのか、それとも、コンピューティングアプリケーション（ブロック３５０で開始）であるのかに応じて、ブロック３０２又はブロック３５０のいずれかで開始することができる。エンドポイントにおけるユーザエンティティが、或るアクティビティに共同参加するように連絡先に招待を送信したいが、そのアクティビティの関連するコンピューティングアプリケーションが現在実行されていないものと仮定すると、ユーザエンティティは、ブロック３０２において招待プロセスを開始することができる。ユーザエンティティは、ブロック３０４においてメッセンジャーアプリケーション２８０にアクセスすることができる。メッセンジャーアプリケーション２８０は、連絡先ストア２４０からの連絡先のリストをユーザエンティティに提供することができる。メッセンジャーアプリケーション２８０は、プレゼンスシステム２０４にアクセスして、プレゼンスストア２０８からプレゼンス情報を取得することもでき、ユーザが選択した連絡先のプレゼンス情報をユーザエンティティに提供することもできる。ブロック３０６において、ユーザエンティティは、連絡先を選択することができ、ブロック３０８において、ユーザエンティティは、所望のアクティビティを選択することができる。選択された連絡先は、他のユーザエンティティに限定されないが、招待側の連絡先の代替的なプレゼンスポイントのうちの１つ又は複数を含むことができる。ユーザは、アクティビティを選択することができる。このアクティビティには、Ｈａｌｏ（登録商標）をプレイすること、インターネット電話通信、又は共同ホワイトボードが含まれるが、これらに限定されるものではない。ユーザエンティティが特定のアクティビティを選択するにもかかわらず、機能ＡＰＩ２８４は、ブロック３１０において、ユーザエンティティがエンドポイント機能を検証することを可能にすることができる。ユーザエンティティのエンドポイントが、電話通信アプリケーションをインストールされていないコンピュータである場合、又は、そのコンピュータがサウンドカードを有しない場合、この方法は、ブロック３１２に進んで終了することができる（３９５）。これに加えて又はこれに代えて、この方法は、ブロック３０６において選択された連絡先へメッセージを送信して、招待の試みが失敗したこと及びその失敗についてのあり得る理由をその連絡先に通知することができる。
【００３３】
代替的に、ユーザエンティティのエンドポイントがアクティビティをサポートする場合、この方法は、ブロック３１４において、メッセンジャー又は他の或るアプリケーションが招待を送信するか否か判断することができる。この方法は、メッセンジャーが常にこの招待を行うか、又は、アクティビティをサポートする特定のアプリケーションが招待を行うデフォルト設定を含むことができる。この方法は、前述の選択肢の１つを選ぶようにユーザエンティティを促すこともできる。メッセンジャーが招待を行う場合、この方法は、招待ＡＰＩを介して、ブロック３１６において、アクティビティをサポートする対応するアプリケーションを開始することができる。他方、アクティビティをサポートするアプリケーションは、招待ＡＰＩ２８２をコールすることによって招待を行うことができる。招待ＡＰＩ２８２は、ブロック３１８において、アプリケーションに環境変数を設定してこのようなアプリケーションを開始することもできる。また、招待ＡＰＩ２８２は、招待が、アプリケーション特有のデータを保持し、且つ／又は、アプリケーションにパラメータを渡すことを可能にすることもできる。このようなデータ及びパラメータは、リモートアプリケーションのハンドシェークに役立つ場合がある。環境変数は、被招待側のリスト、又は、アクティビティ、アクティビティをサポートするアプリケーション、及びアクティビティに参加するように招待された連絡先に関する他の情報を含むことができる。それらの変数がブロック３１８において設定されると、それらの変数を、ブロック３２０において、アプリケーション２８０が読み出すことができる。アプリケーションは、その後、ブロック３２２において、招待ＡＰＩ２８２からの関数コールを使用して、招待を送信することができる。一方、連絡先が複数のプレゼンスポイントを有する場合、招待ＡＰＩ２８２は、被招待側が関連付けられているすべてのエンドポイントへ招待を送信することができる。
【００３４】
代替形態において、コンピューティングアプリケーション３５２がメッセンジャーの代わりに招待を行うことになっている場合、制御は、コンピューティングアプリケーション３５２からブロック３５４に移動することに留意されたい。ブロック３５４において、ユーザエンティティは、共同アクティビティを共に行う連絡先を選択することができる。
【００３５】
招待ＡＰＩ２８２からの招待関数コールは、コール側アプリケーションがメッセンジャーであろうと、アクティビティをサポートするアプリケーションであろうと、コール側アプリケーションから導出されたパラメータの送信を必要とする場合がある。たとえば、送信パラメータは、いくつか例を挙げると、１つ又は複数の受信名、受信連絡先エンドポイント（たとえば、ＩＰアドレス及びポート）、アクティビティ情報、及び関数コールハンドルを含むことができる。通信システム２６０は、ブロック３２４において、連絡先名の特定エンドポイントが知られているか否かを判断することができる。知られていない場合、ブロック３２６は、通信システム２６０を使用して、連絡先の対応するＩＰアドレス及びポートを求めることができ、次に、ブロック３２８において、そのエンドポイントとの接続を確立することができる。通信システム２６０は、ＰＮＲＰ又は類似のものを用いて、サーバなしでこのようなエンドポイントクレデンシャルを解決することができる。また、アクティビティ情報は、所望のアクティビティをサポートできる被招待側（受信側）への適切なアプリケーションを識別するグローバル一意識別子（ＧＵＩＤ）も含むことができる。また、アクティビティ情報は、招待メッセージ（たとえば、「ＴＰＳ報告について今話し合おう。」）及びいずれかの特定のアクティビティのさまざまな要件をサポートする他の情報も含むことができる。ハンドルは、招待が被招待側へ送信された後に、関数コールがイベント情報を受信することを可能にすることができる。このようなハンドルは、非同期関数コールに特に役立つが、招待ＡＰＩ２８２によって用いられる関数コールは、同期して行うこともでき、この場合、応答は即座に受信され、そうでなければ、関数コールはタイムアウトする。加えて、別のハンドルは、キャンセル関数コールが、キャンセルする特定の招待を正しく識別できるように、招待インスタンスを識別することができる。一般的に言えば、ユーザが、招待を送信する関数コールを行うと、対応するＧＵＩＤを有する招待セッションが作成される。このＧＵＩＤは、この特定の招待の結果として受信される応答を識別するのに使用することができる。招待ＡＰＩは、通信システム２６０を介して被招待側へ送信する前にＸＭＬフォーマット（又は他のフォーマット）で招待をシリアル化することができる。
【００３６】
図４は、特許請求の範囲による方法４００の図解とすることができる。招待を受信するための例示的な方法は、３つの開始ブロック４０２、４２６、又は４５６の１つを含むことができる。開始ブロックは、タイプメッセンジャーのアプリケーション２８０を実行する（ブロック４０２）か、招待アクティビティをサポートするアプリケーション２８０を実行する（ブロック４２６）か、又は、これらのいずれも実行しない（ブロック４５６）かのいずれかとして、被招待側のエンドポイントステータスによって決定される。これらの３つの場合のいずれにおいても、図４の方法は、招待ＡＰＩ２８２からの関数コールを使用して招待を受信する。オプションとして、被招待側は、連絡先の特定のサブセット又はすべての連絡先から招待を受信することを選ぶこともできるし、いずれの連絡先からもまったく招待を受信しないことを選ぶこともできる。被招待側が一般ユーザインターフェース又は一般アプリケーション招待リスナを実行している場合、ブロック４０４において招待を受信すると、招待ＡＰＩ２８２は、エンドポイントが、４０６において機能ストア２１２への照会を通じて、要求されたアクティビティをサポートするか否かを判断する。機能ＡＰＩ２８４は、図２に示す機能ストア２１２において一致するＧＵＩＤをチェックすることによりこのような判断を行うことができる。サポートされていない場合（たとえば、一致する適切なＧＵＩＤが見つからなかった場合）、リスナの招待ＡＰＩ２８２は、ブロック４０８において、呼び出し関数（招待側）に辞退メッセージを送信する。代替的に、招待側が、要求されたアクティビティが被招待側のエンドポイントによってサポートされていないと判断すると、招待ＡＰＩ２８２は、招待側が、そのアクティビティをサポートできるアプリケーションを被招待側が取得できる場所に関する情報を提供することを可能にすることができる。たとえば、被招待側がチェスのゲームをプレイすることをサポートしていないことを招待側が知った場合、招待は、被招待側がそのアクティビティをサポートする適切なアプリケーションを獲得又はインストールすることを可能にするＵＲＬ又は他の役立つ情報を含むことができる。被招待側は、適切なアプリケーションをインストールすることを選ぶことができ、適切なアプリケーションは、ＧＵＩＤをさらに有することができる。保護対策は、新しいアプリケーションが既存のアプリケーションのＧＵＩＤを上書きすることをさらに防ぐことができる。
【００３７】
一方、アクティビティがリスナエンドポイントによってサポートされている場合、被招待側は、おそらくダイアログボックスを介して、受け付け、拒否、又は無視によって招待に確認応答することができる（４１０）。この場合も、ブロック４０８において辞退メッセージを送信することができる。ブロック４０８では、メッセージは、辞退の潜在的な理由（たとえば、アクティビティがこのエンドポイントではサポートされていない、ユーザがアクティビティを許可しなかった等）をさらに記述することができる。この応答は、被招待側がデフォルト設定（たとえば、ボブからのＨａｌｏ（登録商標）をプレイする招待を常に拒否する）を通じて自動的に送信することもできる。たとえば、被招待側は、デフォルトですべての招待を受け付けること、デフォルトですべての招待を拒否すること、又はデフォルトですべての招待を無視することができる。加えて、被招待側は、招待側の特定の識別情報に基づいて受け付け、拒否、又は無視のデフォルト設定を有することができる。たとえば、被招待側は、招待側が親友(buddy)である場合に、デフォルトですべての招待を受け付けることを選ぶことができ、招待側が知られていない（被招待側の連絡先ストアに存在しない）場合に、デフォルトですべての招待を拒否することを選ぶことができ、又は招待側が姻戚である場合に、デフォルトで招待を無視することを選ぶことができる。図３のブロック３１８と同様に、ブロック４１２において、環境変数が設定され、アクティビティをサポートするアプリケーションが開始される。このアプリケーションは、ブロック４１４において環境変数を読み出し、４１６において受け付け通知を返信し、ブロック４１８においてその共同アクティビティを開始する。これに加えて又はこれに代えて、ブロック４１４において、機能ＡＰＩ２８４をコールして、以下でさらに詳細に解説する関連情報を取得することができる。
【００３８】
被招待側のエンドポイントが、メッセンジャーアプリケーションを実行している場合、メッセンジャーアプリケーションは、適切な環境変数をすでに有している場合がある。したがって、ブロック４２６から４２８は、招待の受信及び共同アクティビティの起動を行う。同様に、被招待側が、共同アクティビティをサポートする実行中のアプリケーションを偶然にもすでに有している場合にも、ブロック４５６から４６６を実行することができる。このような場合、アプリケーションはすでに実行されているので、この方法は、共同アクティビティをサポートするアプリケーションについて被招待側のエンドポイントに照会する必要はないが、被招待側は、それでも、ブロック４６０において、受け付け、拒否、又は無視を選ぶことができる。
【００３９】
図３のブロック３１０並びに図４のブロック４０６及び４３０に一時的に戻って、機能ＡＰＩ２８４は、エンドポイントが、要求されたアクティビティをサポートするか否かを判断する。招待ＡＰＩ２８２が、アクティビティ、又は、そのアクティビティをサポートする特定のアプリケーションを開始できるようになる前に、そのエンドポイントにおいてサポートされる機能は知られていなければならない。したがって、機能ＡＰＩ２８４は、機能の登録のための関数、登録抹消のための関数、機能列挙のための関数、及び機能に関する情報の取り出しのための関数を含むことができる。ピア登録関数は、ユーザエンティティが、特定のアプリケーションによってサポートされる機能に関する情報を含むオペレーティングシステムレジストリにエントリーを追加することを可能にすることができる。加えて、この情報は、アプリケーション、アプリケーション構成、及び機能の記述を識別するＧＵＩＤを含むことができる。ピア登録関数は、他のどのユーザエンティティ又は連絡先が、登録されているアプリケーションにアクセスできるかをユーザエンティティが指定することをさらに可能にすることができる。代替的に、ユーザエンティティは、機能情報をレジストリから削除する登録抹消関数で機能を登録抹消することもできる。
【００４０】
ユーザエンティティは、ＧＵＩＤが判明した時に、アプリケーション機能について知るために、アプリケーション２８０を介して機能照会関数をコールすることができる。一方、ユーザエンティティは、最初に、機能列挙関数をコールし、ユーザエンティティのエンドポイントを含めて、或るエンドポイントにおいて現在登録されているすべての機能のリストを取得することができる。ユーザエンティティは、次に、列挙されたリストから１つの機能を選択することができ、その特定のアプリケーションによってサポートされているより具体的な機能情報を得るために機能照会関数をコールすることができる。
【００４１】
次の例示的なシナリオは、招待ＡＰＩの機能性を示している。トビーという名前のユーザエンティティは、彼の連絡先リストにボブ及びアリスという名前の友人を有する。ボブ及びアリスは、それぞれ、自身のプレゼンス情報のパブリケーションを許可しており、トビーは、ボブがオンラインであり、ゲームＨａｌｏ（登録商標）をインストールしていることに気付いている。トビーは、自身の連絡先リストからボブを選択し、Ｈａｌｏ（登録商標）をプレイする要求を含む招待をボブへ送信する。招待ＡＰＩ２８２は、エンドポイント接続が現在利用可能でないと判断し、その結果、通信モジュール２６０を用いる。通信モジュール２６０は、ＰＮＲＰを使用して、トビーの連絡先ストアにおけるボブの連絡先情報からエンドポイントを解決することができる。このようなエンドポイントが求められると、通信モジュール２６０は、オプションとして、ボブとトビーとの間で認証システム２７０を介した接続を認証することができ、次に、招待を送信することができる。ボブが、実行されている自身のメッセンジャーアプリケーションを有するものと仮定すると、このメッセンジャーアプリケーションは、招待を受信し、機能ＡＰＩ２８４がコールされて、Ｈａｌｏ（登録商標）がボブのコンピュータでサポートされていることを検証する。Ｈａｌｏ（登録商標）がサポートされている場合、招待ＡＰＩ２８２は、招待を「受け付ける」、「拒否する」、又は「無視する」選択肢を（ポップアップユーザインターフェースを介して）トビーに提示する。ボブは受け付け、Ｈａｌｏ（登録商標）アプリケーションが開始されて、「受け付け」メッセージが招待側（トビー）へ返される。
【００４２】
上記本文は、多数の異なる実施形態の詳細な説明を明記しているが、本特許の範囲は、本特許の最初に明記されている特許請求の範囲の語によって画定される。詳細な説明は、例示としてのみ解釈されるべきであり、あらゆる可能な実施形態を説明することは不可能ではないにしても実際的ではないので、詳細な説明は、あらゆる可能な実施形態を説明するものではない。現在の技術又は本特許の出願日後に開発される技術のいずれかを使用して、多数の代替的な実施形態を実施することができる。これらの代替的な実施形態も、依然として特許請求の範囲の範囲内に含まれる。
【００４３】
したがって、添付の特許請求の範囲の趣旨及び範囲から逸脱することなく、本明細書で説明すると共に図解した技法及び構造において、多くの変更及び変形を行うことができる。したがって、本明細書で説明した方法及び装置は、単なる例示であって、特許請求の範囲の範囲を限定するものではないことが理解されるべきである。
【図面の簡単な説明】
【００４４】
【図１】添付の特許請求の範囲に従って動作できるコンピューティングシステムのブロック図である。
【図２】ピアツーピアサーバレスのコラボレーション及び／又は通信を円滑にできる（facilitate）１つの例示的なシステムのブロック図である。
【図３】共同アクティビティを円滑にできる、招待を連絡先へ送信することに関係する１つの例示的な方法のフロー図である。
【図４】共同アクティビティを円滑にできる、招待を受信することに関係する１つの例示的な方法のフロー図である。
【図１】
2008538637.tif 000003
【図２】
2008538637.tif 000004
【図３】
2008538637.tif 000005
【図４】
2008538637.tif 000006