(57)【要約】【課題】デバイス間の通信を拡張可能で、より柔軟に適応可能なソフトウェアコントロールの通信接続を行うこと。【解決手段】拡張可能通信コントロールは、コンピューティングデバイスとリモート通信デバイスとの間の通信に使用される。この拡張可能通信コントロールを使用するように適合されたコンピュータプログラムにおいては、連絡先人物に関する情報が検索され、その検索された連絡先情報から、リモート通信デバイスの連絡先人物と通信するのに使用可能なアクティビティのタイプが決定される。連絡先人物の情報から通信アクティビティが決定された後、通信要求が、その通信アクティビティに関連する通信アドレスに送信される。そして、受け入れられる時には、拡張可能通信コントロールが、リモート通信デバイスとの通信を開始する。【選択図】        図１
2004220549.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティングデバイスとリモート通信デバイスとの間の通信に関して拡張可能通信コントロールを使用する方法であって、
連絡先の情報から拡張可能通信アクティビティを決定するステップと、
前記拡張可能通信アクティビティの通信アドレスへの通信要求を生成するように前記拡張可能通信コントロールを適応させるステップと、
前記リモート通信デバイスとの前記拡張可能通信アクティビティに従って通信接続を確立するステップと
を具えたことを特徴とする方法。
【請求項２】
前記拡張可能通信コントロールは、オペレーティングシステムによって提供されることを特徴とする請求項１記載の方法。
【請求項３】
前記拡張可能通信コントロールを更新するステップをさらに具え、
これにより、前記拡張可能通信コントロールを使用するように適合されたすべてのコンピューティングプログラムを更新することを特徴とする請求項２記載の方法。
【請求項４】
前記コンピューティングプログラムは、前記拡張可能通信コントロールのシェルプログラムであることを特徴とする請求項１記載の方法。
【請求項５】
前記通信接続は、テキストチャット、インスタントメッセージ、ビデオストリーミング、およびオーディオストリームからなる群から選択されることを特徴とする請求項１記載の方法。
【請求項６】
前記通信接続は、コンピューティングネットワークを介することを特徴とする請求項１記載の方法。
【請求項７】
前記通信接続は、電話網を介することを特徴とする請求項１記載の方法。
【請求項８】
前記リモート通信デバイスは、非コンピューティングデバイスであることを特徴とする請求項１記載の方法。
【請求項９】
前記通信接続を確立するステップは、
会話を作成するステップと、
前記リモート通信デバイスおよび前記コンピューティングデバイスの両方が前記会話を介する接続を確立するステップと
をさらに具えたことを特徴とする請求項１記載の方法。
【請求項１０】
コンピューティングプログラムによる使用のために前記拡張可能通信コントロールおよび前記拡張可能通信アクティビティを指定するコンピューティングプログラムをさらに具えたことを特徴とする請求項１記載の方法。
【請求項１１】
前記コンピューティングプログラムは、拡張可能マークアップ言語（ＸＭＬ）を用いて拡張可能通信アクティビティを指定することを特徴とする請求項１０記載の方法。
【請求項１２】
コンピューティングプログラムから前記拡張可能通信コントロールをデタッチするステップをさらに具えたことを特徴とする請求項１記載の方法。
【請求項１３】
デタッチされた前記拡張可能通信コントロールを、前記拡張可能通信コントロールを利用するように適合された第２コンピューティングプログラムにアタッチするステップをさらに具えたことを特徴とする請求項１２記載の方法。
【請求項１４】
第２コンピューティングプログラムでの前記拡張可能通信コントロールのデタッチおよびアタッチは、前記確立された通信接続を維持することを特徴とする請求項１３記載の方法。
【請求項１５】
前記通信要求は、前記拡張可能通信アクティビティ、オリジネーション識別子、およびリターン識別子を具えたことを特徴とする請求項１記載の方法。
【請求項１６】
前記通信アクティビティは、前記通信要求に応答する特定の通信プログラムの指定をさらに具えたことを特徴とする請求項１５記載の方法。
【請求項１７】
前記通信要求は、複数の通信アクティビティを具え、
各アクティビティは、通信タイプを指定し、
通信接続を確立するステップは、各指定された通信アクティビティに対応する複数の通信接続を確立するステップを含むことを特徴とする請求項１５記載の方法。
【請求項１８】
コンピューティングデバイスとリモート通信デバイスとの間の通信に関して前記拡張可能通信コントロールを使用するコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
連絡先の情報から拡張可能通信アクティビティを決定するステップと、
前記拡張可能通信アクティビティの通信アドレスへの通信要求を生成するように拡張可能通信コントロールを適応させるステップと、
前記リモート通信デバイスとの前記拡張可能通信アクティビティに従って通信接続を確立するステップと
を具えたことを特徴とするコンピュータ可読媒体。
【請求項１９】
前記拡張可能通信コントロールは、オペレーティングシステムによって提供されることを特徴とする請求項１８記載のコンピュータ可読媒体。
【請求項２０】
前記拡張可能通信コントロールを更新するステップをさらに具え、
これにより、前記拡張可能通信コントロールを使用するように適合されたすべてのコンピューティングプログラムを更新することを特徴とする請求項１９記載のコンピュータ可読媒体。
【請求項２１】
前記通信接続は、テキストチャット、インスタントメッセージ、ビデオストリーミング、およびオーディオストリームからなる群から選択されることを特徴とする請求項１８記載のコンピュータ可読媒体。
【請求項２２】
前記通信接続を確立するステップは、
会話を作成するステップと、
前記リモート通信デバイスと前記コンピューティングデバイスの両方が前記会話を介する接続を確立するステップと
をさらに具えたことを特徴とする請求項１８記載のコンピュータ可読媒体。
【請求項２３】
コンピューティングプログラムは、コンピューティングプログラムによる使用のために前記拡張可能通信コントロールおよび前記拡張可能通信アクティビティを指定するステップをさらに具えたことを特徴とする請求項１８記載のコンピュータ可読媒体。
【請求項２４】
前記コンピューティングプログラムは、拡張可能マークアップ言語（ＸＭＬ）を用いて拡張可能通信アクティビティを指定することを特徴とする請求項２３記載のコンピュータ可読媒体。
【請求項２５】
前記通信要求は、前記拡張可能通信アクティビティ、オリジネーション識別子、およびリターン識別子を具えたことを特徴とする請求項１８記載のコンピュータ可読媒体。
【請求項２６】
前記通信アクティビティは、前記通信要求に応答する特定の通信プログラムの指定をさらに具えたことを特徴とする請求項２５記載のコンピュータ可読媒体。
【請求項２７】
前記通信要求は、複数の通信アクティビティを具え、
各アクティビティは、通信タイプを指定し、
通信接続を確立するステップは、各指定された通信アクティビティに対応する複数の通信接続を確立するステップを含むことを特徴とする請求項２５記載のコンピュータ可読媒体。
【請求項２８】
プロセッサおよびメモリを有するコンピューティング装置であって、
前記メモリは、リモート通信デバイスとの通信に関して前記拡張可能通信コントロールを使用するコンピュータ実行可能命令を有し、
連絡先の情報から拡張可能通信アクティビティを決定するステップと、
前記拡張可能通信アクティビティの通信アドレスへの通信要求を生成するように拡張可能通信コントロールを適応させるステップと、
前記リモート通信デバイスとの前記拡張可能通信アクティビティに従って通信接続を確立するステップと
を具えたことを特徴とするコンピューティング装置。
【請求項２９】
前記拡張可能通信コントロールは、オペレーティングシステムによって提供されることを特徴とする請求項２８記載のコンピューティング装置。
【請求項３０】
前記拡張可能通信コントロールを更新するステップをさらに具え、
これにより、前記拡張可能通信コントロールを使用するように適合されたすべてのコンピューティングプログラムを更新することを特徴とする請求項２９記載のコンピューティング装置。
【請求項３１】
前記通信接続は、テキストチャット、インスタントメッセージ、ビデオストリーミング、およびオーディオストリームからなる群から選択されることを特徴とする請求項２８記載のコンピューティング装置。
【請求項３２】
通信接続を確立するステップは、
会話を作成するステップと、
前記リモート通信デバイスと前記コンピューティングデバイスの両方が前記会話を介する接続を確立するステップと
をさらに具えたことを特徴とする請求項２８記載のコンピューティング装置。
【請求項３３】
コンピューティングプログラムは、コンピューティングプログラムによる使用のために前記拡張可能通信コントロールおよび前記拡張可能通信アクティビティを指定するステップをさらに具えたことを特徴とする請求項２８記載のコンピューティング装置。
【請求項３４】
前記コンピューティングプログラムは、拡張可能マークアップ言語（ＸＭＬ）を用いて拡張可能通信アクティビティを指定することを特徴とする請求項３３記載のコンピューティング装置。
【請求項３５】
前記通信要求は、前記拡張可能通信アクティビティ、オリジネーション識別子、およびリターン識別子を具えたことを特徴とする請求項２８記載のコンピューティング装置。
【請求項３６】
前記通信アクティビティは、前記通信要求に応答する特定の通信プログラムの指定をさらに具えたことを特徴とする請求項３５記載のコンピューティング装置。
【請求項３７】
前記通信要求は、複数の通信アクティビティを具え、
各アクティビティは、通信タイプを指定し、
通信接続を確立するステップは、各指定された通信アクティビティに対応する複数の通信接続を確立するステップを含むことを特徴とする請求項３５記載のコンピューティング装置。
【請求項３８】
コンピューティングデバイスから通信デバイスへの拡張可能通信要求に応答する方法であって、
受信された通信要求から拡張可能通信アクティビティを決定するステップと、
通信プログラムが前記拡張可能通信アクティビティに応答することを決定するステップと、
前記通信要求に応答して前記通信プログラムをアクティブにするステップと
を具えたことを特徴とする方法。
【請求項３９】
前記通信要求は、複数の拡張可能通信アクティビティを具え、
前記複数の拡張可能通信アクティビティに応答して複数の通信プログラムをアクティブにするステップをさらに具えたことを特徴とする請求項３８記載の方法。
【請求項４０】
前記通信要求は、複数の拡張可能通信アクティビティを具え、
前記複数の拡張可能通信アクティビティに応答して１つの前記通信プログラムだけをアクティブにするステップをさらに具えたことを特徴とする請求項３８記載の方法。
【請求項４１】
コンピューティングデバイスから通信デバイスへの拡張可能通信要求に応答するコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
受信された通信要求から拡張可能通信アクティビティを決定するステップと、
通信プログラムが前記拡張可能通信アクティビティに応答することを決定するステップと、
前記通信要求に応答して前記通信プログラムをアクティブにするステップと
を具えたことを特徴とするコンピュータ可読媒体。
【請求項４２】
プロセッサおよびメモリを有するコンピューティング装置であって、
前記メモリは、コンピューティングデバイスから通信デバイスへの拡張可能通信要求に応答するコンピュータ実行可能命令を有し、
受信された通信要求から拡張可能通信アクティビティを決定するステップと、
通信プログラムが前記拡張可能通信アクティビティに応答することを決定するステップと、
前記通信要求に応答して前記通信プログラムをアクティブにするステップと
を具えたことを特徴とするコンピューティング装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、全般的にはネットワーク通信に関し、具体的には、ネットワークを介する通信のアプリケーションに埋め込み可能なコントロールに関する。
【０００２】
【従来の技術】
通信ネットワークは、コンピュータ通信およびテレフォニ通信の分野で周知である。定義により、ネットワークは、通信ファシリティまたは通信リンクによって接続されたコンピュータおよび／またはデバイスのグループである。ネットワーク通信は、ケーブル経由など、永久的な性質とするか、電話リンクまたは無線リンクを介して行われる接続など、一時的な性質とすることができる。ネットワークは、サイズにおいて、少数のコンピュータまたはワークステーションおよび関連するデバイスからなるローカルエリアネットワーク（ＬＡＮ）から、地理的に分散されたコンピュータおよびＬＡＮを相互接続する広域ネットワーク（ＷＡＮ）、一時的通信リンクを介してリモートコンピュータを相互接続するリモートアクセスサービス（ＲＡＳ）まで変化することができる。インターネットワークは、さまざまなネットワークからのデータの転送および変換を容易にするゲートウェイまたはルータによる、類似するものと異なるものの両方の複数のコンピュータネットワークの結合である。用語インターネットワークの周知の省略形が、「インターネット」である。現在理解されているように、英語表記で語頭が大文字の「インターネット（Ｉｎｔｅｒｎｅｔ）」は、インターネットプロトコル（ＩＰ）を転送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）またはユニフォームデータグラムパケット／インターネットプロトコル（ＵＤＰ／ＩＰ）などの上位プロトコルと共に使用して互いに通信するネットワークおよびルータの集合を指す。
【０００３】
インターネットは、最近、世界中に配置されたコンピュータおよびデバイスをリンクする能力によって、爆発的に生長した。他の対話環境に、Ｍｉｃｒｏｓｏｆｔ  Ｎｅｔｗｏｒｋ（ＭＳＮ）または他のオンラインサービスプロバイダによって提供されるものなどの専用環境、ならびに、特にセル電話産業での、さまざまな無線ネットワーキングプロバイダによって提供される「無線ウェブ」を含めることができる。
【０００４】
以下の説明から理解されるように、本発明は、そのような対話環境のすべてに適用することができるが、議論のために、本発明を実施する例示的対話環境として、インターネットを使用する。
【０００５】
インターネットは、主にさまざまなフォーマットでデータを配送する能力に起因して、すばやく、通信の人気のある方法になった。インターネットを介して情報を通信するために、ユーザは、通常、やはりインターネットに接続されたリモートコンピュータで実行される他の通信プログラムと通信する通信プログラムを実行する。これらの普通の通信プログラムでは、一般に、通信プログラムのタイプに関連する単一の通信プロトコルが使用される。たとえば、ビデオ通信プログラムでは、専用のビデオ通信プロトコルが使用され、テキストチャットプログラムでは、専用のチャット通信プロトコルが使用される。異なるタイプの通信プロトコルが、特定の通信プログラムに固有であることがしばしばである。したがって、あるソフトウェアプロバイダのテキストチャットプログラムは、別のソフトウェアプロバイダのチャットプログラムが使用するものと同一のチャットプロトコルを、必ず使用するわけではない。そのような専用通信環境は、無数の異なるタイプの通信につながり、これらのタイプの通信の中に、各タイプの通信を可能にする無数の異なるプロトコルがある。
【０００６】
【発明が解決しようとする課題】
多様化された通信アプリケーション環境のもう１つの結果は、ベストプラクティスが特定のソフトウェア開発者によって発見され、彼らの通信プログラムで実施されるので、その通信プログラムだけが、これらのベストプラクティスから利益を得ることである。他のソフトウェア開発者は、新たに開発された「ベストプラクティス」を実施することが望まれる場合に、彼らのソフトウェアをそれぞれ個別に更新する必要がある。
【０００７】
現在の通信プログラムに関するもう１つの短所として、各アプリケーションプログラムによって、一般に、その特定の通信プログラムの他のユーザだけに関して連絡先情報が保管されることがある。したがって、ある通信プログラムを使用してオンラインである可能性がある特定のユーザに連絡することを試みる時に、そのユーザに連絡する処理は、一般に、正しい通信アプリケーションを突き止めるまでの試行錯誤過程になる。さらに、連絡先情報を、別々の通信プログラムごとに再入力する必要がある。
【０００８】
普通の通信プログラムのさらにもう１つの短所として、それらのプログラムが、一般に、コンピューティング環境で使用される他のアプリケーションから分離されていることがある。たとえば、ビデオ会議アプリケーションとワードプロセッシングアプリケーションを同時に実行することが可能であるが、一般に、同一のアプリケーション内にビデオ通信コンポーネントを含む協同ワードプロセッシングセッションを実行することは困難である。そのようなアプリケーションを設計することは可能ではあるが、この能力は、通信アプリケーションとワードプロセッシングアプリケーションを設計し、その後、必要な統合を手作業で作成することと同等である。そのような手作業の作成は、単一目的（たとえば、ワードプロセッシングとビデオ会議、ワードプロセッシングとテキストチャット、またはゲームプレイとオーディオチャット）である。これらの手作業の作成は、拡張可能でなく（たとえば、更新、修正、またはモジュラーコンポーネントとして置換することができない）、別々の連絡先を維持するという短所に苦しむ。また、新しいタイプの通信が使用可能になる時に、新しい通信のタイプまたはタイプの組合せを含めるように、そのようなハイブリッド通信アプリケーションを手作業で更新する必要がある。
【０００９】
そこで、本発明の目的は、デバイス間の通信を拡張可能で、より柔軟に適応可能なソフトウェアコントロールの通信接続を行うことが可能な、拡張可能通信コントロールを提供することにある。
【００１０】
【課題を解決するための手段】
したがって、より柔軟で拡張可能な通信環境の必要がある。新しい通信環境で、特定のユーザの連絡先情報を与えられて、プロトコルおよび／または通信タイプを動的に定義する能力を有することが望ましい。通信アプリケーションのどれかがベストプラクティスを得た時に、必ず、通信を使用するように適合されたすべてのアプリケーションが、そのベストプラクティスを受け取る形で、通信アプリケーションに関するベストプラクティスを得られることが、さらに望ましい。
【００１１】
本発明は、デバイス間の通信を処理する、拡張可能で適応可能なソフトウェア通信コントロール（プログラムコンポーネント）の提供を対象とする。本発明の一態様によれば、拡張可能な通信コントロールが、コンピューティングデバイスとリモート通信デバイスの間の通信に使用される。拡張可能通信コントロールを使用するように適合された、コンピューティングデバイス上のコンピューティングプログラム内で、連絡先人物に関する情報が検索される。検索された連絡先情報から、リモート通信デバイスの連絡先人物と通信するのにどのタイプのアクティビティを使用できるかが判定される。連絡先アクティビティには、連絡先人物の通信アドレスだけではなく、通信する時にどのタイプの通信および潜在的にどの通信プログラムを使用しなければならないかも含まれる。通信アクティビティを連絡先人物の情報から判定した後に、通信要求が、通信アクティビティに関連する通信アドレスに送信される。通信要求が受け入れられると仮定すると、拡張可能通信コントロールは、リモート通信デバイスとの通信を開始することができる。
【００１２】
本発明のいくつかの実施形態では、通信アクティビティによって、特定の通信プログラムを指定するのではなく、リモート通信デバイスが、通信するデフォルトプログラムを決定することが可能である。本発明のもう１つの例示的実施形態では、デフォルトプログラムが、拡張可能通信コントロールを収納したシェルプログラムである。デバイス間の通信は、テキストチャット、インスタントメッセージ、ビデオ会議、オーディオ会議、および類似物を含むがこれに制限されるものではなく、無数の通信タイプのどれにでもすることができる。これらの通信は、普通のコンピューティングネットワークと、電話網などの他のタイプのネットワークで行うことができる。
【００１３】
本発明のもう１つの態様では、通信デバイスおよびコンピューティングデバイスが、ピアツーピアの形で通信しない。したがって、両方のデバイスが通信すべき中間位置で連絡する別の「会話」が、作成される。そのような会話に、識別子を用いてラベルが付けられ、コンピューティングデバイスおよびリモート通信デバイスは、両方が会話への接続に会話識別子を使用した後に、互いに通信できるようになる。
【００１４】
本発明のもう１つの態様では、拡張可能通信コントロールが、通信プログラムを含むがこれに制限されるものではなく、多くのタイプのプログラムによって使用することができる適応可能モジュールである。本発明の拡張性のこの態様を用いると、通信コントロールを使用しなければならないことをプログラムから指定できるが、そのコントロールに、必要または望みに応じて異なる通信サービスを提供するように指示することができるようになる。これらのプログラムは、拡張可能通信コントロールによってどのタイプの通信、プロトコル、アドレス、および構成を使用しなければならないのかを、拡張可能に指定することができる。本発明のこの態様では、拡張可能通信コントロールが、それを使用するように適合されたアプリケーションに応答するモジュールであり、拡張可能通信コントロールを、あるプログラムからデタッチし、別のプログラムにアタッチすることができる。そのような実施形態では、デタッチおよびアタッチによって、通信接続が破壊されるが、拡張可能通信コントロールが別のプログラムにアタッチされた後に、再アタッチされる。本発明の代替実施形態では、拡張可能通信コントロールがあるプログラムからデタッチされた後であっても、別のプログラムにアタッチされるために転送されつつある間でも、通信を継続することができる。
【００１５】
本発明のもう１つの態様では、拡張可能通信コンロトールを、リモート通信デバイスとして非コンピューティングデバイスまたはコンピューティングデバイスのいずれかと通信するように適合させることができる。したがって、一実施形態では、リモート通信デバイスに、拡張可能通信コントロールからの通信要求に応答するプログラムも含めることができる。リモート通信デバイスのそのようなプログラムは、受信した通信要求から拡張可能通信アクティビティを決定することができ、リモート通信デバイスで１つまたは複数の通信プログラムをアクティブにして、そのような拡張可能通信アクティビティを使用して通信することができる。
【００１６】
上の要約からわかるように、本発明は、コンピュータ可読媒体およびシステムと共に、デバイス間の通信を提供する拡張可能で適応可能な通信環境を提供する。
【００１７】
本発明の前述の態様および付随する利点の多くは、添付図面と共に解釈される時の下記の詳細な説明を参照することによってよりよく理解されるので、すぐに理解されるようになる。
【００１８】
【発明の実施の形態】
以下の詳細な説明は、主に、プロセッサ、プロセッサ用のメモリストレージデバイス、接続されたディスプレイデバイス、および入力デバイスを含む普通のコンピュータコンポーネントによる処理と動作の記号的表現とに関して表現される。さらに、これらの処理および動作では、リモートファイルサーバ、コンピュータサーバ、およびメモリストレージデバイスを含む異機種分散コンピューティング環境内の普通のコンピューティングコンポーネントを使用することができる。これらの普通の分散コンピューティングコンポーネントのそれぞれが、通信ネットワークを介してプロセッサによってアクセス可能である。
【００１９】
本発明は、コンピューティングネットワーク環境および非コンピューティングネットワーク環境内の拡張可能通信コントロール間の通信の提供を対象とする。拡張可能通信コントロールは、コンピューティングデバイス２００とリモート通信デバイス１５０との間の通信に使用される。コンピューティングデバイス２００は、本発明による拡張可能通信コントロールを使用するように適合された少なくとも１つのコンピューティングプログラムを有する。この通信コントロールは、通信デバイス１５０など、ネットワーク内の他のデバイスと通信するのに使用することができる。通信コントロール、通信コントロールを使用するように適合されたプログラム、およびデバイス間のそのような通信および相互関係の詳細を、下で詳細に説明する。
【００２０】
前に説明したように、語頭が大文字の「インターネット（Ｉｎｔｅｒｎｅｔ）」は、互いとの通信を使用するネットワークおよびルータの集合を指す。図１に、デバイス間の通信接続を提供する通信システム１００の機能ブロック図を示す。システム１００は、一般に、ネットワーク１１０（インターネットなど）を介して相互接続された個々のコンピュータシステムを含む分散コンピューティング環境で動作するが、当業者は、システム１００が、下でさらに説明するＰＯＴＳ（Ｐｌａｉｎ  Ｏｌｄ  Ｔｅｌｅｐｈｏｎｅ  Ｓｙｓｔｅｍ）網などの非コンピューティングネットワークで同等に機能することができることを理解するであろう。
【００２１】
図１に示されたシステム１００には、クライアントデバイス２００、連絡先データベース１０５、通信デバイス１５０、通信サービスプロバイダ１２０、および会話ストア１２５が含まれ、これらのすべてがネットワーク１１０を介して相互接続される。クライアントデバイス２００は、コンピューティング機能を有するが、本発明のルーチンを処理することができるデバイスのどの形態にもすることができる。通信デバイス１５０も、コンピューティングデバイスまたは電話機などのより単純なデバイスとすることができる。当業者は、会話ストア１２５および連絡先データベース１０５が、通信システム１００内に図示されたクライアントデバイス２００によってアクセス可能などのデバイスにも常駐できる。例示的なコンピュータクライアントデバイス２００を、図２にさらに詳細に示し、以下に説明する。加えて、単一のクライアントデバイス２００および単一の通信デバイス１５０だけが図示されているが、より多数のクライアントデバイス２００および／または通信デバイス１５０をシステム１００に含めることができる。クライアントデバイス２００は、オリジネーティングデバイスと称する場合もあり、通信デバイス１５０は、連絡先デバイスと称する場合もある。
【００２２】
図２は、本発明の下に記載の態様を実施する例示的クライアントデバイス２００を示す。最も基本的な形では、クライアントデバイス２００は、通常は、少なくとも１つの処理ユニット２０２およびメモリ２０４を含む。クライアントデバイスの正確な構成およびタイプに応じて、メモリ２０４を、揮発性（ＲＡＭなど）、不揮発性（ＲＯＭ、フラッシュメモリなど）、またはこの２つの組合せとすることができる。この最も基本的な構成が、図２では破線２０６によって示される。クライアントデバイス２００は、追加の特徴／機能性も有することができる。たとえば、デバイス２００は、磁気または光学的なディスクまたはテープを含むがこれに制限されるものではなく、追加のストレージ（取外し可能および／または取外し不能）を含めることができる。そのような追加ストレージは、図２では、取外し可能ストレージ２０８および取外し不能ストレージ２１０によって示される。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報のストレージ用のあらゆる方法または技術で実施される揮発性および不揮発性の、取外し可能および取外し不能の媒体が含まれる。メモリ２０４、取外し可能ストレージ２０８、および取外し不能ストレージ２１０のすべてが、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、または他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）、または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、または他の磁気ストレージデバイス、あるいは、所望の情報の保管または読取に使用することができ、クライアントデバイス２００によってアクセスできる他のすべての媒体が含まれるが、これに制限はされない。そのようなコンピュータストレージのどれであっても、クライアントデバイス２００の一部とすることができる。
【００２３】
クライアントデバイス２００のコンピュータ記憶媒体には、通信サービスプロバイダ１２０およびリモートクライアントデバイス２００などのリモートコンピュータと通信し、それらからの情報を処理するのに適するコンピュータプログラムおよび／またはルーチンも含まれる。
【００２４】
クライアントデバイス２００は、デバイスが他のデバイスと通信できるようにする通信接続２１２も含めることができる。通信接続２１２は、通信媒体の例である。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータが、搬送波または他のトランスポート機構などの変調されたデータ信号内で実施され、また、すべての情報配布媒体を含む。用語「変調されたデータ信号」は、信号内で情報をエンコードする形でその特性の１つまたは複数を設定または変更された信号を意味する。制限ではなく例として、通信媒体に、有線ネットワークまたは直接配線接続などの有線媒体と、音響、高周波、赤外線、および他の無線媒体を含む無線媒体が含まれる。本明細書で使用される用語「コンピュータ可読媒体」には、記憶媒体、通信媒体、および当業者に既知の他のすべてのコンピュータ可読媒体が含まれる。
【００２５】
クライアントデバイス２００は、キーボード、マウス、ペン、音声入力デバイス、接触入力デバイスなどの入力デバイス２１４も有することができる。ディスプレイ、スピーカ、プリンタなどの出力デバイス２１６も含めることができる。これらのデバイスのすべてが当技術分野で周知なので、本明細書ではこれらを説明しない。
【００２６】
本発明に従って形成される通信コントロールの動作を示すために、図３は、図１に示されたデバイスと通信システム１００との間の対話の１つのシーケンスを示す。図３に示されたシステム１００のデバイスには、クライアントデバイス２００および通信デバイス１５０が、連絡先データベース１０５および会話ストア１２５と共に含まれる。さまざまなデバイスの対話およびこれらによって実行されるルーチンは、図４〜７に図示され、以下、詳細に説明する。
【００２７】
本発明のデバイスの間の通信の上の説明からわかるように、通信処理の多くが、クライアントデバイス２００によって処理される。本発明のもう１つの態様では、通信デバイス１５０を、クライアントデバイス２００よりはるかに洗練されていないものとすることができる。たとえば、あるタイプの音声通信テレフォニを使用する時に、クライアントデバイス２００が、電話機である通信デバイス１５０への通信要求を開始することが可能である。これは、電話機と通信し、特定の連絡先の通信デバイス（すなわち電話機）に到達するのに必要なアドレス（すなわち電話番号）を通信するのに必要なテレフォニプロトコルの定義を有することによって達成される。図６は、単純な連絡先の通信デバイス１５０の、より洗練されたクライアントデバイス２００との対話に入る単純化された処理を示す。
【００２８】
図３に戻ると、通信接続および処理は、クライアントデバイス２００が新しい通信「アクティビティ」３０２を開始する時に開始される。新しい通信アクティビティ３０２は、連絡先情報を必要とするが、この情報は、この例示的な対話では、連絡先データベース１０５へのアドレス要求３０４を使用して得られる。連絡先データベース１０５に送信されるアドレス要求３０４には、望まれる通信のタイプと、クライアントデバイス２００によって送信される好ましいプロトコルおよび／または通信の詳細とを含む開始される通信に関する情報が含まれる。連絡先データベース１０５は、アドレス要求によって送信された要件を満たすアドレスがある場合に、そのアドレスを決定する。たとえば、ビデオ要求とテキストチャット要求の両方が、連絡先データベース１０５に送信されるアドレス要求で示される場合に、連絡先データベース１０５は、アドレス要求３０４のビデオ要件およびテキストチャット要件のタイプに一致する可能なアクティビティ３０６を返す。
【００２９】
「アクティビティ」の概念には、アドレス、通信タイプ、および、任意選択として、通信プログラム、サービスプロバイダ、および／またはプロトコルが含まれる。アドレスは、アクティビティを使用して通信することの勧誘を送信する先を決定するのに使用される。通信タイプは、受信端で開始する通信勧誘のタイプを決定するのに使用される。サービスプロバイダが含まれる場合に、サービスプロバイダに、最初にアクティビティ勧誘を送信する先の情報も含めることができる（たとえば、おそらくは、勧誘がサービスプロバイダに送信され、その後、連絡先のアドレスに転送される）。特定の通信プログラム（または埋め込まれた拡張可能通信コントロールを有するプログラム）を含めることによって、さらに、通信デバイス１５０へのアクティビティ勧誘を向ける先に関する表示が与えられる。通信デバイス１５０は、指定されたプログラムをロードしていない場合、勧誘によって、そのプログラムがロードされるか、少なくともロードすべきプログラムの表示が、通信デバイス１５０に表示される。１つの例示的実施形態としては、連絡先デバイス１５０は、そのような勧誘を処理するプログラムを含む。図５は、そのようなプログラムの１つの例示的な流れ図を示し、以下説明する。通信タイプの通信プログラムが複数のプロトコルを使用することができる場合、アクティビティでプロトコルを指定することによって、通信勧誘内の正しいプロトコルが使用される。
【００３０】
１つの例示的なシナリオでは、連絡先のテキストチャットアクティビティがＵＮＩＸ（登録商標）の「ｔａｌｋ」セッションである場合に、ユーザ名およびＵＮＩＸ（登録商標）コンピュータのホスト名が、そのユーザ名およびホスト名の連絡先人物に連絡するためにＵＮＩＸ（登録商標）ｔａｌｋプロトコルが必要であることの表示と共に返される。もちろん、複数のタイプのアクティビティは、特定の連絡先について使用可能である場合があり、したがって、複数のタイプのアドレスおよびプロトコルを返すことができる（３０６）。当業者は、アクティビティの多数のタイプが可能であり、本発明との互換性を有することを理解できる。さらに、本発明の一態様では、アクティビティの定義を、クライアントデバイスによって拡張することができる。さらなる例示的な例が、下の説明から理解される。
【００３１】
次に、クライアントデバイス２００は、通信デバイス１５０の連絡先に連絡するのに使用される１つまたは複数のアドレスおよびプロトコルを決定する（３０８）。たとえば、連絡先またはクライアントデバイス２００のユーザのいずれかが、複数のタイプが使用可能でありながらアクティビティの特定のタイプに関するプリファレンスを示した場合に、このプリファレンスを、アドレスと共に送り返すことができ、アクティビティの好ましいタイプが、両方の当事者によって使用可能である場合に、そのタイプが選択される。判定処理３０８は、クライアントデバイス２００で排他的に実行することができ、あるいは、判定処理３０８に、連絡先が現在特定のアドレスで特定のタイプの通信を使用して使用可能であるかどうかを決定するための他のデバイスとの対話も含めることができる。たとえば、いくつかのインスタントメッセージングテキストチャットシステムでは、ユーザおよび連絡先が、チャットに使用可能な時の表示をブロードキャストする。したがって、通信に使用されるアドレスの判定は、さらに、連絡先が現在オンラインである可能性がある１つまたは複数のアドレスを決定することを含めることができる。
【００３２】
アドレス、プロトコル、およびおそらくは特定の通信プログラムが判定された（３０８）ならば、１つまたは複数（複数のタイプの通信が望まれる場合）の新しい通信要求が、生成される（３１０）。図３に示された対話では、連絡先との実際の通信がそれを介して行われる仲介サービスを有する非ピアツーピア通信がある。したがって、クライアントデバイス２００は、会話詳細３１２を会話ストア１２５に供給する。会話ストア１２５は、クライアントデバイス２００と通信デバイス１５０が出会い、「会話」で通信を処理する仮想会合場所である。当業者は、会話ストア１２５が、通信サービスプロバイダ１２０、クライアントデバイス２００、通信デバイス１５０、または当業者に既知のさらなるデバイスに常駐できることを理解できる。本発明で使用される会話は、性質においてピアツーピアでない環境での通信をホストする仲介サービスを呼び出すすべての通信である。会話詳細３１２が会話ストア１２５に送信された後、会話が会話ストアで作成される（３１４）。その後、会話確認３１６がクライアントデバイス２００に返され、作成された会話への接続の詳細が与えられる。
【００３３】
次に、通信要求３１８が、前に連絡先について突き止められたアドレスに送信される。この通信要求（勧誘）３１８は、この実施形態では、通信アドレスに対応する通信デバイス１５０に送信される。通信デバイス１５０は、通信要求を受信した後に、通信要求のアクティビティを認識する（３２０）。勧誘が受け入れられる場合には、通信デバイスは、通信要求の指定されたアクティビティに対応するアプリケーションを開始する（３２２）。たとえば、通信要求３１８で、名前または何らかの他の表示（たとえばプロトコル、ファイルタイプ、通信タイプなど）のいずれかによって、通信要求で指定されるアクティビティの一部として特定のアプリケーションを指定することができる。代替案では、通信デバイス１５０は、特定のアクティビティを処理するデフォルトアプリケーションを有することができる。通信デバイス１５０でアプリケーションが開始３２２された後に、接続詳細３２４が、会話ストア１２５に送り返され、これによって、通信デバイス１５０が会話ストア１２５に接続される。さらに、通信肯定応答３２６を、クライアントデバイス２００に直接に送り返すことができる。当業者および他者は、会話ストア１２５での通信への参加を、十分な通信肯定応答とすることができること、本発明のいくつかの実施形態で、追加の通信肯定応答３２６がクライアントデバイス２００に送り返されないことを理解できる。クライアントデバイス２００および通信デバイス１５０の両方は、会話ストア１２５への接続に関する接続詳細のすべてを有したのちに、会話ストア１２５を介するお互いとの通信３２８および３３０に進行することができる。
【００３４】
当業者および他者は、会話ストア１２５に、当技術分野で既知の無数の仲介通信プログラムのどれをも含められることを理解できる。通信ストア１２５は、ビデオ会議リフレクタ、テキストチャットサーバアプリケーション、音声チャットサーバアプリケーション、および類似物に存在するものとすることができる。
【００３５】
当業者は、図３が、システム１００のデバイスの間の対話の１つの例示的な組だけを表すことも理解するであろう。したがって、デバイスおよび接続の追加の構成を、他のそのような対話に含めることができる。図３の対話は、本発明を理解する際の支援のために例示的であることだけを意味し、本発明の範囲に関する制限であることを意味するものではない。
【００３６】
図１、図２、および図３からわかるように、本明細書に記載の通信システム１００の実施形態には、通信を開始し、その通信を処理するのに使用されるクライアントデバイス２００が含まれる。図４は、本発明の一実施形態による、クライアントデバイス２００から開始される通信のユーザ接続ルーチン４００を示す流れ図を示す。ユーザ接続ルーチン４００は、ブロック４０１で開始され、ブロック４０５に進んで、新しい通信が開始される。次に、ブロック４１０で、ルーチン４００は、連絡先人物について可能な通信アクティビティを得る。これらのアクティビティは、ユーザが手作業で入力するか、ローカル連絡先データベース１０５から得るか、会社内ディレクトリまたは検索エンジンおよび類似物などのリモートロケーションから得ることができる。
【００３７】
本発明の１つの例示的実施形態では、連絡先データベース１０５は、名前、メーリングアドレス、電子メールアドレス、リアルタイムアドレスなどを含むが、リアルタイムアドレスとアクティビティとの間のマッピングは保管されない。ユーザは、通信する連絡先を選択し、アクティビティを選択し、クライアントデバイス２００が、クライアントデバイス２００から使用可能なある特定のサービスプロバイダを介してそのアクティビティを実現するのに連絡先のアドレスのどれを使用するかを見つけ出す。本発明の代替実施形態では、連絡先レコードによって、アクティビティに関する好ましいアドレスを示すことができる。もう１つの実施形態では、好ましいアドレスを、他所に、たとえば、連絡先レコードに疎にリンクされるのみである「ユーザごとのタスクプリファレンスデータベース」内、すべてのユーザによって共有されるシステム全体にわたるプリファレンス内に保管するか、ユーザのプレゼンス設定（たとえば、セル電話を介してオンライン、ブロードバンド接続を介してオンライン、会社でオンライン、自宅でオンラインなど）に基づいてオンザフライで決定することができる。
【００３８】
次に、ブロック４１５では、どのアドレス（１つまたは複数）およびアプリケーションを、連絡先人物との通信に使用しなければならないかを決定する。上述したように、連絡先人物との通信の１つまたは複数のアドレスの決定は、さまざまな形で実行することができる。しかし、本発明の１つの例示的実施形態では、特定の連絡先人物に関する連絡先データベース１０５から使用可能なすべてのアクティビティを、ブロック４１０で検索し、その後、ブロック４０５で開始された新しい通信と比較して、連絡先人物に関連する通信デバイス１５０との通信に適当なアドレスおよび通信タイプの組合せがあるかどうかを決定する。
【００３９】
１つまたは複数のアドレスが、関連する通信タイプおよび他のアクティビティ情報と共に判定された後に、ブロック４２０で、少なくとも１つのアクティビティを含む新しい通信要求が生成される。判断ブロック４２５で、すべてのアクティビティの性質が、ピアツーピアである（たとえば、通信に参加するか通信を管理する仲介デバイスがない）かどうかの決定がなされる。すべてのアクティビティがピアツーピアである場合には、ブロック４３０で、通信要求を即座に通信デバイス１５０に送信することができる。しかし、判断ブロック４２５で、アクティビティの中にピアツーピアでないものがある（たとえば、通信に参加するか通信を管理する仲介デバイスが少なくとも１つある）と決定される場合には、処理は、ブロック４４０に継続され、ここで、リモート会話が開始され、その後、ブロック４３０で通信要求が送信される。次に、判断ブロック４３５で、要求が肯定応答されたかどうかを判定する。要求が肯定応答されない場合には、ルーチン４００は、ブロック４９９で終了する。しかし、通信要求の少なくとも１つのアクティビティが肯定応答された場合には、処理をサブルーチンブロック７００に継続することができ、このブロック７００で、デバイスの間で通信が開始される。図７は、通信サブルーチン７００を示し、以下詳細に説明する。通信サブルーチン７００からリターンした後に、ルーチン４００は、ブロック４９９で終了する。
【００４０】
図１および図３からわかるように、本明細書に記載の通信システム１００の実施形態は、連絡先人物がクライアントデバイス２００と通信するのに使用される通信デバイス１５０を含む。上述したように、通信デバイス１５０は、クライアントデバイス２００に似たコンピューティングデバイスとするか、電話機などのはるかに単純な通信デバイスとすることができる。したがって、図５および図６は、通信デバイス１５０を使用する連絡先人物の展望からの例示的な通信接続ルーチンを示す。
【００４１】
図５は、コンピューティングアプリケーションを実行する能力を含み、クライアントデバイス２００のコンポーネントに類似するコンポーネントからなる、通信デバイス１５０を使用する例示的通信接続ルーチン５００を示す。通信接続ルーチン５００は、着信通信要求を処理する通信デバイス１５０の常駐プロセスで実施することができる。そのような常駐プロセスは、通信デバイス１５０の状況も通信でき、その結果、連絡先人物と通信することを望むユーザが、連絡先人物の現在の状況を知るようになる。
【００４２】
連絡先通信接続ルーチン５００は、ブロック５０１で開始され、ブロック５０５に進んで、新しい通信要求を受信する。次に、ブロック５１０で、どのタイプのアクティビティが通信要求で実施されるかに関する決定がなされる。要求されたアクティビティをブロック５１０で決定した後、判断ブロック５１５で、判定されたアクティビティが使用可能であり、通信デバイス１５０のプログラムが通信要求に応答できるかどうかに関する決定がなされる。応答できる場合には、ブロック５２０で、通信要求に肯定応答する。通信が、サブルーチンブロック７００で開始される。サブルーチン７００は、図７に示されており、以下説明する。通信サブルーチン７００からリターンした後に、ルーチン５００は、ブロック５９９で終了する。しかし、判断ブロック５１５で、通信要求に応答する通信に使用可能なアクティビティがないと決定された場合には、ブロック５２５で、通信失敗通知がクライアントデバイス２００に送り返され、処理はブロック５９９で終了する。
【００４３】
図６にも、連絡先通信接続ルーチンが示される。しかし、図６に示された連絡先通信接続ルーチン６００は、電話機、ラジオ、ポケットベル、または類似物など、通信要求に応答してコンピューティングルーチンを実行することができない可能性がある、同一の通信デバイス１５０用である。したがって、ルーチン６００は、ブロック６０１で開始され、ブロック６０５に進んで、新しい通信要求を受信する。次に、判断ブロック６１０では、通信要求が認識されるかどうかについて決定がなされる。認識される場合には、ブロック６１５で、通信を接続する。その後、ブロック６２０で、通信要求から認識されたタイプの通信を使用して通信が開始される。ブロック６２０で通信が終了した後に、ルーチン６００はブロック６９９で終了する。判断ブロック６１０で、通信のタイプが認識されない場合には、ルーチン６００は、やはりブロック６９９で終了する。
【００４４】
当業者および他者は、クライアントデバイス２００で拡張可能通信コントロールを使用することによって、拡張可能通信コントロール内で複数の異なるタイプの通信を提供することが可能であることを理解できる。この通信コントロールは、クライアントデバイス２００内（およびより高度な通信デバイス１５０内）で他のコンピューティングプログラムに組み込むことができる。このコントロールは、実行される時にこのコントロールに、他のデバイスに連絡する時に使用する通信のタイプに関して指示することができるように、プログラムを開発する時に組み込むことができる。このプレースホルダ設計によって、コンピュータプログラムのより高い柔軟性が可能になり、通信コントロールを望みに応じてアップグレードでき、改善できるようになる。特定の通信デバイス１５０は、それに関する通信が望まれる可能性があるデバイスとして開発される時に、新しいプロトコルを定義し、通信要求を調整し、それらが通信接続ルーチン４００および連絡先接続ルーチン５００および／または６００の両方によって認識されるようにすることが可能である。たとえば、通信デバイス１５０の音声チャットプログラムに関するディジタル信号を送信するように適合された音声チャット通信コントロールは、その代って、電話通信デバイス１５０にテレフォニオーディオ信号を送信するように適合させることができ、電話通信デバイス１５０によって供給される信号が、クライアントデバイス２００の適合された通信コントロールによって認識されるようになる（たとえば、リングトーン、話中信号、ハングアップ、タッチトーン、ダイアルトーンなど）。
【００４５】
上述したように、図７は、例示的な通信サブルーチン７００を示す。例示的な通信サブルーチン７００は、ブロック７０１で開始され、ループブロック７０５に進み、ループブロック７０５では、通信接続の一部であるすべてのアプリケーション（指定されたアプリケーションまたは通信タイプのデフォルトアプリケーションのいずれか）を繰り返す。したがって、アプリケーションごとに、ブロック７１０で、そのアプリケーションが起動されていない場合に、アプリケーションを起動する。次に、ループブロック７１５で、現在のアプリケーションが使用する通信タイプ毎に、接続がピアツーピア通信であるかどうかの決定がなされる。その通信である場合には、ブロック７２５で、アプリケーションをそのピアデバイス（たとえば、クライアントデバイス２００または通信デバイス１５０）に接続する。判断ブロック７２０で、通信タイプがピアツーピアでないと判定される場合には、処理はブロック７４５に進み、ここで、アプリケーションが、会話ストア１２５のリモート会話に接続される。
【００４６】
ブロック７４５または７２５の後に、判断ブロック７３０で、これが現在のアプリケーションの通信の最後のタイプであるかどうかに関する決定がなされる。判断ブロック７３０で、これが通信の最後のタイプでないことがわかった場合には、処理は、ループブロック７１５にループバックする。しかし、判断ブロック７３０で、これが現在のアプリケーションの通信の最後のタイプであると決定された場合には、処理は判断ブロック７３５に継続され、ここで、これが最後のアプリケーションであるかどうかの決定を行う。そのアプリケーションでない場合には、処理は、ループブロック７０５にループバックし、ここで、次のアプリケーションが現在のアプリケーションになる。しかし、判断ブロック７３５で、これが最後のアプリケーションであると決定される場合には、処理は、ブロック７４０に進み、ここで、通信タイプに関連するすべてのアプリケーションを使用する通信の接続されたタイプを介する通信が、進行する。通信デバイスおよび／またはクライアントデバイスのいずれかによるものなどの通信が終了したならば、サブルーチン７００は、ブロック７９９で呼出し元ルーチンにリターンする。
【００４７】
図８は、アプリケーション８００および８５０に埋め込まれた通信コントロール８１０および８６０の間のテキストチャット通信およびビデオ通信を有する２つのアプリケーション８００および８５０の例示的な図を示す。通信コントロール８１０のテキストチャット８１５は、非ピアツーピアテキストチャットであり、したがって、会話８３０に接続される。それに対応して、アプリケーション８５０の通信コントロール８６０は、テキストチャット８１５と同一の会話８３０によって接続されるテキストチャット８６５を有する。したがって、アプリケーション８００およびアプリケーション８５０は、会話８３０を使用するテキストチャットを介して通信することができる。上述したように、会話８３０は、クライアントデバイス２００、通信デバイス１５０、通信サービスプロバイダ１２０、または通信ネットワーク１００と通信する他のデバイスの会話ストア１２５に常駐することができる。さらに、アプリケーション８００およびアプリケーション８５０には、ピアツーピア接続であるビデオ接続８４０が含まれる。したがって、通信コントロール８１０および通信コントロール８６０は、仲介「会話」を有しない、ビデオ通信８４０用の直接ピアツーピア接続を有する。当業者および他者は、図８は、本発明によるアプリケーションおよび通信の１つの例示的実施形態が示されているに過ぎないことを理解できる。図８は、アプリケーションおよび／または通信の可能なタイプの網羅的リストを提示することを意図されたものではない。
【００４８】
本発明による通信コントロールとのより複雑な対話が、可能である。たとえば、本発明による通信コントロールを使用するように適合されたアプリケーションの間で移動される通信コントロールを使用して、進行中の通信を維持することが可能である。１つの例として、ワードプロセッシングアプリケーションからテキストチャットを除去し、これをウェブブラウザアプリケーションに移動することである。これによって、ユーザが、不必要なアプリケーションを開いておく必要なしに、通信を維持できるようになる。さらに、ユーザによって選択されるアプリケーションでアクティブ通信コントロールを有することによって、よりよいコラボレーションが可能になる。通信のためにアプリケーションの間で切り替える必要は、もはやない。
【００４９】
図１０は、通信コントロールをあるアプリケーションからデタッチし、シェルアプリケーション９００などのデフォルトアプリケーション内でそれ自体を使用すること、またはデタッチされた通信コントロールをターゲットアプリケーションに再アタッチすることのいずれかを行うデタッチルーチン１０００を示す。デタッチルーチン１０００は、ブロック１００１で開始され、ブロック１００５に進み、ここで、アクティブである１つまたは複数の現在のアクティビティを含む、通信コントロールをデタッチすることの表示を受信する。デタッチの１つの例示的な表示が、ユーザがアプリケーションのウィンドウの外へコントロールを「ドラッグ」する（コントロールをクリックし、移動する）時である。当業者は、デフォルトに対する他の表示を使用できることを理解できる。次に、ブロック１０１０で、現在のアクティビティに関するデフォルトアプリケーションに関する決定がなされる。次に、ブロック１０１５で、現在の通信コントロールは、前のアプリケーションから物理的にデタッチされる。
【００５０】
図９は、本発明による通信コントロールを含むデフォルトシェルアプリケーションの例示的実施形態を示す。図９に示された例示的なシェル９００には、シェル通信プログラムを形成するコンポーネントとしてチャット通信コントロール９１０を含む。図１１は、シェルアプリケーション９００などのデフォルトアプリケーション１１２０にデタッチされた通信コントロール１１１０を有する例示的アプリケーション１１００を示す。デタッチルーチン１０００は、その後、ブロック１０２０へ継続し、ここで、通信コントロールが、シェルアプリケーション９００などのデフォルトアプリケーションにアタッチされる。
【００５１】
次に、判断ブロック１０２５で、１つまたは複数のターゲットアプリケーションが指定されたかどうかの決定がなされる。判断ブロック１０２５で、１つまたは複数のターゲットアプリケーションが指定されたと判定される場合には、処理はブロック１０３０に継続し、ここで、１つまたは複数の現在の通信が、１つまたは複数のターゲットアプリケーションにアタッチ（ドラッグ）される。当業者は、通信タイプの混合物が存在することができること、１つまたは複数の通信タイプが、ターゲットアプリケーションにアタッチされること、１つまたは複数をデフォルトアプリケーションにアタッチされたままにすることができることを理解できる。これによって、たとえば、アタッチされたテキストチャットウィンドウではなく、別の接続であるフローティングビデオウィンドウが可能になる。どの場合でもすなわち、判断ブロック１０２５でターゲットアプリケーションが指定されていることがわかった場合もそうでない場合も、通信が、上述したサブルーチンブロック７００で継続される。デタッチサブルーチンは、通信サブルーチン７００からリターンした時に、ブロック１０９９で終了する。
【００５２】
当業者および他者は、サブルーチン７００の通信を、複数の異なる形で実行できることを理解できる。たとえば、既存のアプリケーションからデタッチされ、別のアプリケーションにアタッチされる時に、通信コントロールが、現在の接続を維持するか、単純に現在のアプリケーションに再接続する方法を思い出すことができる。これは、通信タイプ（たとえば、いくつかの通信タイプは、シームレスな切断および再接続を扱えない可能性がある）、クライアントデバイス２００の異なるタイプ、および／または通信デバイス１５０に依存して、あるいは、単純に通信コントロールに関してユーザが構成することができるプリファレンスから、変更される可能性がある。
【００５３】
本発明の例示的実施形態を図示し、説明したが、本発明の趣旨および範囲から逸脱せずに、さまざまな変更を行えることを理解されたい。
【００５４】
排他的な所有または特権が請求される発明の実施形態は、請求項で定義される。
【００５５】
【発明の効果】
以上説明したように、本発明によれば、コンピューティングデバイスとリモート通信デバイスとの間の通信に使用される拡張可能通信コントロールを使用するように適合されたコンピュータプログラムにおいて、連絡先人物に関する情報が検索されてその連絡先情報から、リモート通信デバイスの連絡先人物と通信するのに使用可能なアクティビティのタイプが決定され、通信要求がその通信アクティビティに関連する通信アドレスに送信され、受け入れられる場合には、拡張可能通信コントロールがリモート通信デバイスとの通信を開始するようにしたので、これにより、デバイス間の通信を拡張することができると共に、ソフトウェアコントロールの通信接続をより柔軟に適応することができる。
【図面の簡単な説明】
【図１】本発明によるデバイス間の通信接続を提供する、ネットワークに接続された複数のデバイスの説明図である。
【図２】本発明による通信接続を可能にする、コンピュータなどの通信デバイスのブロック図である。
【図３】本発明による通信接続を提供する、クライアントデバイス、連絡先データベース、会話ストア、および通信デバイスによって行われるアクションを示す説明図である。
【図４】本発明による通信接続を提供する通信デバイスによって実施される通信接続ルーチンを示す概要流れ図である。
【図５】本発明による通信接続を形成する連絡先接続ルーチンを示す概要流れ図である。
【図６】本発明による通信接続を形成する連絡先接続ルーチンを示す概要流れ図である。
【図７】本発明による通信接続を確立し、それを介して通信する通信接続サブルーチンを示す概要流れ図である。
【図８】本発明による埋め込み通信コントロールを伴うアプリケーションの間の通信を表す簡略化された説明図である。
【図９】本発明による通信コントロールを含む例示的シェルアプリケーションを示す図である。
【図１０】本発明による通信コントロールデタッチルーチンを示す概要流れ図である。
【図１１】本発明による埋め込み通信コントロールを有するアプリケーションからデタッチされる通信コントロールの例示的な図である。
【符号の説明】
８００  アプリケーション
８１０  通信コントロール
８１５  テキストチャット
８３０  会話
８４０  ビデオ接続
８５０  アプリケーション
８６０  通信コントロール
８６５  テキストチャット
【図１】
2004220549.tif 000003
【図２】
2004220549.tif 000004
【図３】
2004220549.tif 000005
【図４】
2004220549.tif 000006
【図５】
2004220549.tif 000007
【図６】
2004220549.tif 000008
【図７】
2004220549.tif 000009
【図８】
2004220549.tif 000010
【図９】
2004220549.tif 000011
【図１０】
2004220549.tif 000012
【図１１】
2004220549.tif 000013