異種のサービスプロバイダ間における、インスタントメッセージングの相互運用性
【目的】異なるインスタントメッセージングサービスプロバイダネットワークのクライアント間におけるインスタントメッセージング通信を容易にする装置を提供する。
【解決課題】本装置は、インスタントメッセージングサービスに関する受信された通信、すなわち外部のインスタントメッセージングサービスプロバイダネットワークに関連する、第2のプロトコルに従ってフォーマットされた受信された通信を変換するための変換ロジックを含む。前記変換ロジックは、前記受信された通信を、第2のプロトコルから受信サービスプロバイダネットワークに固有のプライマリプロトコルへと変換する。前記通信は、固有のプライマリプロトコルに従って、前記プライマリネットワークのクライアントへ送られる。
【解決課題】本装置は、インスタントメッセージングサービスに関する受信された通信、すなわち外部のインスタントメッセージングサービスプロバイダネットワークに関連する、第2のプロトコルに従ってフォーマットされた受信された通信を変換するための変換ロジックを含む。前記変換ロジックは、前記受信された通信を、第2のプロトコルから受信サービスプロバイダネットワークに固有のプライマリプロトコルへと変換する。前記通信は、固有のプライマリプロトコルに従って、前記プライマリネットワークのクライアントへ送られる。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本願は、ここにすべてが記載されているように参照によって組み込まれた、2005年10月7日に提出され、「異種のサービスプロバイダ間における、インスタントメッセージングの相互運用性」とタイトルが付された、先に出願された米国特許仮出願第60/724,577号についての優先権の利益を主張する。
【0002】
分野
本件は、一般的に、インターネットやイントラネットのようなネットワークを通じたインスタントメッセージングに関し、特に、異種のインスタントメッセージングプロバイダにおける2以上のユーザ間におけるインスタントメッセージングに関する。
【0003】
関連技術の説明
インスタントメッセージング技術は、一般的に、2以上の参加者が、インターネット(Internet)やインターネット(internet)(例えばプライベートネットワーク)のようなコンピュータネットワークにわたって、事実上リアルタイムで通信することを可能とする。典型的には、各々の参加者はユーザインターフェースを通じてクライアントコンピュータシステムを使用し、メッセージ(例えばテキスト、音声、ファイル、及び同類のものを含む)を送信し、受信する。通信における各々のクライアントコンピュータはネットワークを通じて共通のインスタントメッセージングサービスプロバイダ、そして接続サーバに接続される。接続サーバは参加者からのメッセージを受信し、処理(他の参加者のクライアントシステムに、表示のために転送することによるものも含む)する。接続サーバはまた、例えば仲間の参加者が接続を断ったこと、もしくはログオフしたことを参加者に通知する等、システムに代わってメッセージを送信するために構成されることもできる。
【0004】
典型的には、クライアントシステムをインスタントメッセージングクライアントとして使用できるものとするため、各々のクライアントシステムにおいてはインスタントメッセージングアプリケーションソフトウェアがインストールされる。前記インスタントメッセージングソフトウェアは、例えばインターネットを通じてアクセス可能なウェブページからダウンロード可能となるよう作ることが可能である。ユーザは、1以上の他の参加者とインスタントメッセージングによって通信するために、クライアントシステム上でこのソフトウェアを起動する。クライアント側のアプリケーションソフトウェアは典型的にはクライアントシステムと接続サーバとの間の接続を確立し、そして自動的に前記ユーザを接続サーバにログインさせるか、または前記ユーザに、ログインするために必要な情報(ユーザ名とパスワードなど)の入力を促す。その後前記ユーザは、その時点でインスタントメッセージングシステムにログインしている1以上の他のユーザと、インスタントメッセージングを用いて通信することが可能となる。
【0005】
MSN(登録商標)メッセンジャー、Yahoo!(登録商標)メッセンジャー、AOL(登録商標)インスタントメッセンジャー(“AIM”)、及び同類のもの等、いくつかの知られたインスタントメッセージングシステム、そしてサービスプロバイダが存在する。殆どのインスタントメッセージングサービス(またはサービスプロバイダ)は独自仕様のソリューションを使用するために、大抵、あるインスタントメッセージングシステムを使用するクライアントは、異なるインスタントメッセージングシステムを使用するクライアントとインスタントメッセージを交換することができない。例えば、MSN(登録商標)メッセンジャーを使用するクライアントは通常、同じシステム(例えば同じインスタントメッセージングプロバイダ)を使用する他のクライアントと通信できるのであるが、しかしながら、Yahoo!(登録商標)メッセンジャー等、他のインスタントメッセージングサービスプロバイダを使用するクライアントと通信することはできない。
【0006】
従って、2以上のインスタントメッセージングシステムのためのネットワーク間で通信を可能とすること、及び相互運用性が望まれている。さらに、1以上の外部のネットワークとインスタントメッセージングプロバイダと関わりあいをもつ参加者のために、プレゼンスインジケータ(presence indicator)とバディ(仲間)リスト情報(buddy list information)を提供することが望まれている。
【発明の概要】
【0007】
概要
本発明の一つの態様と一つの例に従って、異種のインスタントメッセージングサービスプロバイダのユーザ間での、インスタントメッセージング通信とイベントを容易にするためのシステムが提供される。前記システムは外部サーバから受信された通信を変換するために動作可能な、プライマリインスタントメッセンジャーサービスプロバイダネットワークに関連する変換ロジックを含む。具体的には、前記変換ロジックは外部サーバから受信された通信を、第2のプロトコルから前記システム固有の(native)プライマリプロトコルへ変換する。
【0008】
一つの例において、異なるインスタントメッセージングサービスプロバイダのユーザ間でのインスタントメッセージング通信を容易にするための装置は、インターフェースロジックと変換ロジックとを含む。インターフェースロジックは、外部のインスタントメッセージングサービスプロバイダネットワークに関連し、かつ第2のプロトコルに従ってフォーマットされている、インスタントメッセージングサービスに関する通信、を受信する。
前記装置はさらに、受信された通信を第2のプロトコルから受信サービスプロバイダネットワーク固有のプライマリプロトコルへ変換するための変換ロジック、を含む。
【0009】
いくつかの例において、受信される通信は、外部のインスタントメッセージングサービスプロバイダネットワークから受信される(例えば、外部ネットワークのクライアントは、通信を該外部ネットワークへ送り、該外部ネットワークは順繰りに、前記通信をプライマリネットワークへ送る)。前記通信はさまざまのインスタントメッセージング通信とイベント、例えば、サブスクライブ(subscribe)のリクエスト、招待(invite)のリクエスト、サブスクライブ解除(unsubscribe)のリクエスト、ウォッチャー通知(watcher notifications)、及び同類のもの、等を含むことができる。
【0010】
加えて前記装置は、ゲートウェイイベントサーバ、イベントサーバ、SIPゲートウェイ、エッジ・プロキシ(edge proxy)、セッションマネージャ(例えば、ランタイムダイアログの状態(run−time dialog states)や、SIPダイアログのルーティング情報、その他を格納するため)、ゲートウェイデータベース(例えば、 バディリストや、永続性情報(persistent information)、その他を格納するため)、接続サーバ、接続マネージャ、その他からの1以上をさらに含むか、またはそれらと通信することができる。
【0011】
別の例に従えば、異なるインスタントメッセージングサービスプロバイダのユーザ間におけるインスタントメッセージング通信を容易にするための方法が提供される。一例を挙げれば、その方法は、外部のインスタントメッセージングサービスプロバイダネットワークから、インスタントメッセージングサービスに関する、第2のプロトコルに従ってフォーマットされている通信を受信する動作を含み、さらには受信された通信を第2のプロトコルからプライマリプロトコルへ変換する動作を含む。
【0012】
別の例に従えば、異なるサービスプロバイダネットワークを越えてのインスタントメッセージング通信を容易にするための命令を含む、コンピュータ読み取り可能な媒体が提供される。一例を挙げれば、前記命令は、外部のインスタントメッセージングサービスプロバイダネットワークに関連した、インスタントメッセージングサービスに関する、プライマリインスタントメッセージングサービスプロバイダネットワークに向けられた通信を、第2のプロトコルから、前記プライマリインスタントメッセージングサービスプロバイダネットワーク固有のプライマリプロトコルに変換することを含む方法の性能を引き起こすための命令である。
【0013】
本発明とそのさまざまの態様は、以下に詳述される説明を添付の図面、そして請求の範囲と併せて熟考することにより、より良く理解される。
【図面の簡単な説明】
【0014】
【図1】図1は、サーバ間での相互運用性を備えた二つのインスタントメッセージングサービスプロバイダ間での通信のための、典型的なシステム及び環境を図解的に説明する。
【図2】図2は、外部の、または第2のネットワーク/インスタント メッセージングサービスプロバイダネットワークと通信している第1のインスタントメッセージングプロバイダに関連する、典型的なプライマリネットワークのバックエンドを図解的に説明する。
【図3】図3は、プライマリサービスプロバイダネットワークのバックエンドと外部のネットワークの間における、典型的なゲートウェイと通信を図解的に説明する。
【図4】図4は、外部の、または第2のネットワーク/インスタント メッセージングサービスプロバイダと通信している第1のインスタントメッセージングサービスプロバイダに関連する、典型的なプライマリネットワークのバックエンドを図解的に説明する。
【図5】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図6】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図7】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図8】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図9】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図10】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図11】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図12】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図13】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図14】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図15】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図16】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図17】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図18】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図19】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図20】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図21】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。そして;
【図22】図22は、本発明のさまざまの態様のための処理機能を実装するために採用されうる、典型的なコンピューティングシステムを説明する。
【発明を実施するための形態】
【0015】
以下の説明は、当該技術分野において通常の技術を有する人が、本発明を作り、そして使用することを可能とするために、与えられるものである。特定の機器、技法、そして応用についての説明は、単なる例として提供される。ここにおいて説明される例のさまざまの改良が、当業者にとっては容易に明らかになるであろうし、ここにおいて明示される一般的原理は、本発明の精神と範囲から外れることなく、他の例や用途に適用することができる。それ故に、本発明はここにおいて説明され示される例に限定することを意図されているのではなく、請求の範囲に一致する範囲で認められることを意図されている。
【0016】
図1は、ここで説明されるいくつかの態様が使用されうる、典型的なシステムと環境を説明する。大まかに、複数の第1のクライアント110がログインしている(例えば、第1のサービスプロバイダプロトコルを通じて)第1のインスタントメッセンジャー(“IM”)サービスプロバイダ100と、複数の第2のクライアント112がログインしている(例えば、第2のサービスプロバイダプロトコルを通じて)第2のIMサービスプロバイダ102が説明されている。第1、第2のIMサービスプロバイダ100、102は、第1のクライアント110が第2のクライアント112とインスタントメッセージの送受信をすることを可能とするために、通信をする。一例を挙げれば、前記通信は第1、第2のネットワーク100、102の間での直接の通信であり、例えば各々のネットワークにおけるそれぞれのサーバ間、または他のネットワーク構成要素間での通信である(第1のクライアント110が第2のネットワーク102と直接通信し、または第2のクライアント112が第1のネットワーク100と直接通信するのではない)。そのようなシステムは、異種のIMプロバイダ間での相互運用性を可能とし得る。
【0017】
第1、第2のIMサービスプロバイダ100、102は、少なくとも一部分において、そして一例において、SIP(Session Initiation Protocol、セッション初期化プロトコル)とSIMPLE(Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions)に基礎を置くプロトコルにより通信することができる。SIP/SIMPLEは、IMとプレゼンスの機能性を提供する第1、第2のIMサービスプロバイダの間での、相互通信と相互運用性のためのプロトコルの例証となる。さらには、SIP/SIMPLEは、音声、映像、及び同類のもののサーバ間での相互運用性(server−to−server interoperability)を、サポートし得る。
【0018】
一例を挙げれば、サーバ間での相互運用性という目的のための特定のSIP/SIMPLEプロトコルは、SIP RFC 3261と、SIP RFC 3265と、そして/またはPIDF RFC 3863とを含む。さらに言えば、ネットワーク間の通信は、所望のレベルのセキュリティとIPフィルタリングを備えたTCPを越えて、サーバ間で通信し得る。
【0019】
当業者は、さまざまの他の通信プロトコル(オープンなプロトコルであるか独自仕様であるかは問わない)が、単独で使用されるか他の通信システム/方法と組み合わせて使用されるかに関わらず、可能であること、そして予期されることに気付くであろう。SIP/SIMPLEプロトコルに対しての、例えば特定のIMサービスプロバイダや所望の機能に依存した、さまざまの改良がなされ得る。例えば、SIP/SIMPLEのように良く知られた任意のプロトコルを、与えられたネットワーク内でより効果的に使用できるよう(例えば通信速度や、プロセスや、コスト等の点において)、改良することが可能である。さらには、XMPPもしくは同類のものなどの、異種のIMプロバイダ間における通信と相互運用性の両方、またはいずれか一方を可能とするか容易にする、他の適正なプロトコルを、単独で、またはSIP/SIMPLEプロトコルと組み合わせて使用することができる。
【0020】
クライアント110と112には、例えば、インターネットブラウザやパーソナルコンピュータ、携帯電話やノート型パーソナルコンピュータのようなモバイル機器、及び同類のものを通じて、IMアカウントにアクセスするユーザを含むことができる。ユーザは典型的には、特定のユーザIMアカウントに対するそれぞれのIMサービスプロバイダを含む、1以上のサーバへ、(インターネットやイントラネットなどの)ネットワークを通じて接続される。該ネットワークは更に、ゲートウェイサーバ、プロキシサーバ、アカウントサーバ、電子メールサーバ、モバイルサーバ、及び同類のもの等、さまざまの他のサーバを含むことができる。
【0021】
コンピュータ機器を通じたクライアントは、例えば携帯電話や人工衛星といった無線ゲートウェイのような無線ネットワーク、もしくは他の無線ネットワークを通じて通信することができる。さらには、前記コンピュータ機器は、ケーブルネットワークや光ファイバーネットワーク等の無線ではないネットワークを通じて、もしくは無線システムと無線ではないシステムの組み合わせを通じて、通信することができる。前記コンピュータ機器は、キーボードのような入力機器に接続されたプロセッサ、ネットワークインターフェース、メモリ、そしてディスプレイ等の、適正なハードウェアとソフトウェアを含むことができる。前記メモリは、ここにおいて説明される機能のいくつかを実行するために前記機器と共に動作可能な、ロジックもしくはソフトウェアを含むことができる。前記機器は、電子メールの受信トレイ、インスタントメッセージング(IM)、ショート・メッセージ・サービス(SMS:short messaging service)、マルチメディア・メッセージング・サービス(MMS:multimedia messaging service)、及び同類のもののようなメッセージング機能(messaging facility)のための適正なインターフェースを含んで、動作可能とすることができる。前記機器はさらに、例えばYahoo!(登録商標)メールアカウント、またはHotmail(登録商標)アカウントのようなウェブメール環境を含む、インターネット、もしくはユーザアカウントにアクセスするためのウェブブラウザを表示するよう動作可能とすることができる。
【0022】
ネットワーク100、102は、互いに通信していてさらには複数のユーザの機器と無線で通信することも可能である、1以上のサーバとデータベースのシステム、と通信すること、またはそれらシステムを含むことが可能である。典型的なサーバシステムは、さまざまなルータ、データベース、ゲートウェイ、そしてサーバ(エッジもしくはプロキシサーバ、ゲートウェイサーバ、モバイルサーバ、電子メールサーバ、ウェブサーバ、音声メッセージングサーバ、及び同類のものなど)を含むことができる。さらに、ネットワーク20は、さまざまのユーザ、機器、サーバ、エージェント、モジュール、クライアント、プロセッサ、及び同類のものの間での通信を可能とする、無線通信と、1以上のローカルエリアネットワーク(LANs)、そして/または インターネットのような広域ネットワーク(WAN)を含むことができる。
【0023】
ある典型的動作において、クライアント110を通じたユーザは、有効なIDとパスワードによって、プライマリネットワークにサインインする。ユーザがプライマリネットワーク100に無事にサインインした後、クライアント110そして/またはプライマリネットワーク110は、第2のネットワーク102上の仲間(バディ)のプレゼンス/ステータスに対するサブスクリプション(subscription)を送信し、さらには第2のネットワーク102上のウォッチャー(watcher)(例えばクライアント110と親交のあるクライアント112)へ、プライマリネットワークにおけるプレゼンス/ステータスを示す通知を送信する。もしユーザがプライマリネットワークからサインアウトすれば、適切なサブスクリプション/通知メッセージが、第2のネットワーク上の仲間(バディ)へ送信される。
【0024】
ユーザはまた、第2のネットワークからのコンタクトをブロック/無視することもでき;第2のネットワークからの新たなコンタクトを、そのコンタクトの第2のネットワークに対するIDを使って追加することもでき;第2のネットワークからのコンタクトを削除することもでき;第2のネットワークからのコンタクトの名前を変更することもできる。
【0025】
図2は、ここで説明するいくつかの態様が使用されうる、典型的なIMサービスプロバイダネットワークの概観を説明する。全ての構成要素が必要とされるとは限らず、該構成要素の配置や種類の変化は、さまざまの発明の精神と範囲から外れることなく、なされうる。
【0026】
一つの例において、第1のIMサービスプロバイダに対応するプライマリ、または第1のネットワーク200は、エッジ・プロキシ212を含む。前記エッジ・プロキシ212は、SIP/SIMPLEもしくは他の、単数または複数の通信プロトコル(第1のIMサービスプロバイダと、1以上のIMサービスプロバイダを含む1以上の、外部ネットワーク(external network)または202のような移動先ネットワーク(foreign network)との間で使用される)用に構成されることができる。
とりわけ、エッジ・プロキシ212は単数または複数の外部ネットワークへの接続の取り扱い(handling)とルーティングを提供する。前記エッジ・プロキシ212は省略可能な構成要素であって、別の例においてはゲートウェイ214が別のサーバ、またはネットワーク構成要素と直接(例えば、別のネットワークのエッジ・プロキシもしくはゲートウェイと直接)通信できる。しかしながら、一般のエッジ・プロキシ212を実装することは、2以上の外部ネットワークと連携する(federate)ことを容易にする。エッジ・プロキシ212の包含はまた、1以上の外部ネットワークへの連携のルーティングと接続の取り扱いを集中化することの助けとなる。
【0027】
この例において、ゲートウェイ214は第1のネットワーク内部への最後のSIPノードであり、そして単数または複数の外部ネットワークに対してのSIPエンドポイントとしての、第1のネットワークにおけるプロキシクライアントである。従ってゲートウェイ214は、ネットワーク200のバックエンドにおいて、SIP/SIMPLEの通信/イベント/その他を、固有なプロトコル、またはプライマリプロトコルの通信へ変換するよう動作可能な、ロジックを含む。例えば、ゲートウェイ214はSIPトラフィックを特定のプライマリネットワーク/IMサービスプロバイダにとっての固有なプロトコル、またはプライマリプロトコルへ変換するのに役立つし、逆もまた同様である。典型的には、ゲートウェイ214(または同等な構成要素)の拡張性(scalability)の限界は、SIPのスタック実装(stack implementation)の性能に依存する(図3に関して、より詳細に論じているように)。さらに、SIP層においては、特定のネットワーク 及び/または 構成要素に依存する拡張性を改善するための一括(batch)サブスクリプション、及び一括通知を実行するため、さまざまな最適化を行うことができる。ある例において、ゲートウェイ214は、SIPスタックが一括にされたサブスクリプションと通知を取り扱うのに最適化された、SIPゲートウェイである。
【0028】
ゲートウェイ216はゲートウェイイベントサーバ(ES)を含み、さまざまのバックエンドサーバ、例えばリバースバディイベントサーバ(reverse buddy event server)218、イベントサーバ220、そして接続サーバ222のような、固有のプライマリネットワークサーバとの通信を取り扱う。ゲートウェイ216はまた、任意の種類の外部IM/プレゼンス プロトコル(IM/presence protocol)を用いて使用され得る、一般のサブスクリプションとダイアログモデルをエクスポートするよう、動作可能である。ある例において、ゲートウェイ216は尚一層ステートレス(stateless)であり、そして大いに拡張性がある。
【0029】
ゲートウェイ216はランタイムダイアログの状態を格納するために、セッションマネージャ242を含むか、または242へアクセスすることができ、さらには外部ユーザからなるプライマリネットワークの仲間(バディ)を格納するため、バディストア(buddy store)240を含むか、または240にアクセスすることができる。バディストア240は、プライマリアカウントの仲間(バディ)(例えば Yahoo! での仲間(バディ)や、コンタクトや、同類のもの)を格納する代わりに外部ユーザから成っているデータベース、を含むことができ、該外部ユーザは例えば、外部ユーザのアドレスや他の識別子をそのキーとする。外部ユーザからのサブスクリプションが入ってきた場合、それらはバディストア240に反して承認される。上記はSQL実装により実行されるか、もしくは択一的に、独自仕様のデータベースにより置き換えられる。
【0030】
セッションマネージャ242は一般的に、ダイアログの過渡状態を格納する。一例を挙げれば、セッションマネージャ242は、記憶装置において、拡張性のある分散キャッシュ機構(scalable distributed caching mechanism)を使用するのであるが、しかし別の実装も可能である。
【0031】
第1のネットワークのバックエンド上で、他のさまざまのサーバからの追加的支援を含めることができる。例えばrbum/rbes218は、リバースバディリスト(reverse buddy lists)において、外部のID(external id’s)を格納し、また読み出すために、動作可能である。イベントサーバ(ES)220は、メッセージが適切にゲートウェイ216に、そしてそこからSIPゲートウェイ214に(そして最終的には適切な外部ネットワーク、そして外部ユーザに)転送されるように、外部ドメインを決定することができる。
【0032】
図3はある典型的ゲートウェイ300の構成要素のブロック図を説明する;
300は例えば、(図2で示されたSIPゲートウェイ214のような)SIP/SIMPLEゲートウェイを含む。SIP/SIMPLEゲートウェイは、ネットワークの両側にある(例えば、外部ネットワークとプライマリネットワーク/バックエンドの間での)、他の構成要素/サーバによってのネットワークの入出力(I/O)を取り扱うために動作可能である、“接続マネージャ(Connection Manager)”を含む。
前記ゲートウェイはまた、選択的なトランスポートレベルのセキュリティのために(例えば、暗号化、承認、及び同類のもの)動作可能であり、そして他の構成要素から、トランスポートレベルの詳細を抽出する。前記セキュリティの機構は、それが情報をやりとりしている構成要素の信頼レベルに依存した、Mutual Transport Layer Security (MTLS)のための単なるIPフィルタリングとは異なる。一例を挙げれば、ネットワーク通信のいくつか、あるいは全てに対して、I/Oに基づいたより効率的な非同期のキュー(kqueue)が実装可能である。更に言えば、接続プールのサイズと動作は、設定パラメータを通して制御可能である。
【0033】
一例を挙げれば、前記ゲートウェイはSIPスタック300を含み、該SIPスタックはオープンソースのSIPスタックと、商用のSIPスタックを含み、または独自仕様のSIPスタックを含む。さらには、SIP抽出層320は、現在使われているSIPスタック310に対して前記ゲートウェイの実装の残りを不可知にするように、動作可能である。一般のAPIやオブジェクトのセットは、この抽出を提供することができる。結果として、完全に異なった、または改良されたSIP実装を必要に応じて採用するのに、この構造はとても伝導性がある。
【0034】
この例において、SIPエンドポイントプレゼンス、ダイアログマネージャ(SIP End Point Presence,Dialog Manager)330が更に含まれる。例えば、外部/移動先のクライアント(例えばMSNクライアント)と通信したいと願っているプライマリネットワーククライアントに対して、この構成要素は論理的SIP終エンドポイント(termination point)(エンドポイント)を作成する。該終エンドポイントは、ネットワークの両側からの関心があるときはいつでも、オン・デマンドの基準で作成される。上記終エンドポイントのそれぞれに置かれたSIPの SUBSCRIBE、INVITEダイアログは、ダイアログマネージャによって探知され、そして管理される。以下のSIPの機能は、プライマリネットワーククライアントに代わって、SIPエンドポイントプレゼンス、ダイアログマネージャ330によって取り扱うことができる:
SUBSCRIBEを、プライマリネットワーククライアントに代わって送信/受信する。
SUBSCRIBEダイアログ(入って来るもの、出て行くもの両方)を、プライマリネットワーククライアントに代わって探知し、管理する。
SUBSCRIBEの再表示(refresh)を、プライマリネットワーククライアントに代わって送信し、処理する。
NOTIFYを、プライマリネットワーククライアントに代わって送信/受信する。
プレゼンス情報データ形式(PDIF: Presence Information Data Format)のプレゼンス情報を解析し、消化(digest)する。
プライマリネットワーククライアントのプレゼンスアラート(presence alerts)を、PDIF形式に変換する。
INVITEを、プライマリネットワーククライアントに代わって送信/受信する。
INVITEダイアログを、プライマリネットワーククライアントに代わって探知し、管理する。
IMを、プライマリネットワーククライアントに代わって送信/受信する。
タイピング通知(Typing Notification)を、プライマリネットワーククライアントに代わって送信/受信する。
UNSUBSCRIBEを、プライマリネットワーククライアントに代わって送信/受信する。
【0035】
SIPエンドポイントプレゼンス、ダイアログマネージャ330という構成要素はさらに、自身の状態情報を保持することができ、そしてさまざまのSIPダイアログをそれらに対応するプライマリネットワーククライアントの終エンドポイントにマッピングすることを手伝うためにテーブルを参照することができる。さらには、この構成要素は同一のプライマリネットワーククライアントに対して複数のプレゼンスポイント(MPOP:multiple points of presence)または複数の終エンドポイント(multiple termination points)を保持するように、動作可能である。
【0036】
一般的に、稼動しているゲートウェイマシンは2台以上あり(例えば、前記プライマリネットワークにおいて)、そして与えられた終エンドポイントはゲートウェイマシンのうちのただ1台における関連した状態を有するので、セッションマネージャ(例えば図4を参照)はさらに、ネットワークにおいてメッセージを適切なゲートウェイマシンに送ることに役立つし、逆もまた同様である。適切なロジックは、正式なダイアログの文脈中においてシステムの拡張性を落とすことなく、メッセージが処理されることを保証する。
【0037】
さらには、この例において、前記ゲートウェイはSIP固有ブリッジ340を含む。前記SIP固有ブリッジ340は一般に、SIP形式の間にあるメッセージを固有のバックエンド形式(native backend format)に(例えばネットワーク固有の形式に)変換するよう、そして同様に逆の変換を行うよう、動作する。例えばプライマリネットワークは、比較的速い集中型の状態ストレージ(state storage)を用いるサーバを含むことができるのであり、該状態ストレージは個々のマシンをステートレスにする。そのようなアーキテクチャは一般的に、ゲートウェイとプライマリネットワークサーバ間におけるシームレスなクラスター化/負荷の釣り合わせを可能とする。
前記SIP固有ブリッジ340は、プライマリネットワークサーバからなるこのクラスタに対して、該プライマリネットワーク固有のプロトコルによって通信する。それはまた、個々のプライマリネットワーククライアントから外部ネットワーククライアントに向けられたメッセージを受信し、処理する。
【0038】
図4から図21は、1以上の外部ネットワーク/インスタントメッセージングサービスプロバイダと通信している第1のネットワークのバックエンド構成要素間での、さまざまの典型的な通信とイベントのフローを説明する。
【0039】
図4は、外部ネットワークと通信するゲートウェイを含む、プライマリサービスプロバイダネットワークのバックエンドの全体的アーキテクチャを説明する。この例において、エッジ・プロキシ(EP)412は、接続プールと、SIP/SIMPLEメッセージの外部ネットワークへ、または外部ネットワークからの転送と、に加えて更に、アクセス制御と、プロビジョニングと、外部ネットワークへ、または外部ネットワークからのルーティングと、のために提供される。一般に、エッジ・プロキシ412は1以上のドメインと通信するように動作可能であり、構成されている。さらに、SIPゲートウェイ(SGW:SIP Gateway)414は外部ネットワークに対してのSIPエンドポイントとしてプライマリネットワーククライアントをプロキシ(代理)するよう動作し、またプライマリネットワークのインスタントメッセージングリクエストをSIP/SIMPLEメッセージにマップ(map)するよう、そしてその逆を行うよう動作する。ある例において、SGW414はSIPスタック(例えばオープンソースのSIPスタックや、商用SIPスタック、または独自仕様のSIPスタック)に依存し、そしてステートフル(stateful)である。ゲートウェイES(GWES:Gateway ES)416はドメイン間(inter−domain)ゲートウェイのリクエスト(主に、IMやプレゼンス)を取り扱うよう動作し;SIPゲートウェイ414と1以上のプライマリネットワークバックエンドサーバを橋渡し(bridge)する;GWES416は、ある例においては、ステートレスであり、高い拡張性を有する。
【0040】
前記アーキテクチャはさらに、プライマリネットワークのバックエンドサーバのためにSIPダイアログのルーティング情報を格納する、セッションマネージャ(SM)442を含む。例えば、各々のレコードは、プライマリネットワーククライアントidと、ゲートウェイidと、ダイアログタイプ(IM、プレゼンス、その他)とをそのキーとし、対応するSIPダイアログを保持する特定のSGWサーバ414を指し示す、SGWキーを含む。セッションマネージャサーバはメモリキャッシュマネジメントシステム内にあり、データ分割やピア・レプリケーション(peer replication)をサポートする。
【0041】
ゲートウェイデータベース(GWDB:gateway DB)440は、外部ユーザのために永続性情報を格納する(例えば、バディリストや他の情報)。ある例においては、永続性ストレージ(persistent storage)としてMySQLサーバが使われる。ある例においては、GWDB440はデータ分割とピア・レプリケーションをサポートするように構成されていて、しかしながら接続をプールする機能のような、shmプロキシ(shmproxy)を欠いている。
【0042】
図4は、外部ネットワークとの通信のための典型的アーキテクチャの、ある実装を説明する;しかしながら、さまざまな他のアーキテクチャが可能である。例えば、さまざまな構成要素を削除して、そして/または それらの機能性を他の構成要素と組み合わせることができる。例えば、GWES416とSGW414の機能を実行するためのロジックを、単独のゲートウェイ機器は含むことができる。さらには、いくつかの例において、エッジ・プロキシ412を取り除くか、もしくはその機能性を他のマシンによって実行することができる。
【0043】
図4を引き続き参照しつつ、図5ではプライマリネットワークへのユーザのログインを説明する。1.1においてユーザのログインがあると、イベントサーバ(ES:event server)420(図4参照)は以下のことを実行する:各々の仲間(バディ)に対して、ES420は彼の/彼女のドメインを識別し、この情報をプレログインデータ(prelogin data)1.3中でクライアントに送信する。さらには、ログイン1.3があると、例えばリバースバディ(reverse buddies)のような外部のユーザ/ウォッチャーに対して通知が送信される(例えば、ESサーバ420からGWES416へ、SGW414へ、そして外部ネットワークへ;2.1−2.2)。一例を挙げれば、ES420はユーザログインについてRBES(ES400内部に含まれて入れもよい)に通知を行い、RBESはクライアントのリバースバディリスト(reverse buddy list)上の外部ユーザ/ウォッチャーを、ドメイン情報を用いて識別し、そしてRBESはGWES416に対して通知を送信する。GWES416はSM442からSGWキーを参照し、外部ウォッチャーをしかるべくソートし、そしてSGW414に通知を送信する。SGW414はメモリキャッシュにおいて外部ウォッチャーのダイアログを参照し、それからSIPのNOTIFYリクエストを、ダイアログを通して、外部ネットワークに送信する。もしSGW414がある外部ウォッチャーに対してのダイアログを見つけられない場合、SGW414は今後の通知を取りやめるために、サブスクライブ解除のリクエストをGWES416に返信する。
【0044】
さらには、クライアントは外部の仲間(バディ)に関するプレゼンス情報のサブスクライブを行う(例えば、ES420からGWES416へ、SGW414へ、そして外部ネットワークへ;3.1−3.5)。一例を挙げれば、ES420はプライマリサービスプロバイダユーザのバディリスト上の外部の仲間(バディ)を、連携ドメイン情報を用いて識別し、GWES416に対してサブスクライブのリクエストを送信する。GWES416はサブスクライブリクエストをSGW414に送信し、そしてそれぞれの仲間(バディ)に対して、SGW414はサブスクリプションのダイアログが既に存在するかどうかをチェックする。もし存在すれば、SGW414はサブスクリプションを再表示するよう、外部ネットワークにリクエストを送信する;もし存在しなければ、SGW414は外部ネットワークの仲間(バディ)に対しての新しいダイアログを作成し、SIPのSUBSCRIBEリクエストを外部ネットワークに送信する。SGW414がokまたはerrorのレスポンスを外部ネットワークから得ると、SGW414は対応するキャッシュしていたダイアログを更新するか削除し、それから前記レスポンスをGWES416に通す。
レスポンスが“ok”であった場合、GWES416はSGWキーをSM442へ保存する。禁じられた(forbidden)errorをもってサブスクリプションが拒絶された場合、そのことは、もはやその外部ユーザが有効ではないことを意味する。GWES416はUDB422とGWDB440から前記外部ユーザを取り除き、プライマリネットワーククライアントに通知を送信することができる。
【0045】
ある例においては、無事にサブスクライブされた外部の仲間(バディ)に関する最初のプレゼンス通知が発行されることができ、そして該プレゼンス通知は、クライアント(例えば、外部のネットワークからSGW414へ、GWES416へ、そしてプライマリネットワーククライアントへ;4.1−4.3)がフィルタ除去できるオフライン通知(offline notification )を含むことができる。例えば、外部のネットワークはSGW414へ通知を送信する。もし対応するダイアログが見つからない場合、SGW414は前記通知を落とし(drop);そうでなければ前記通知をGWES416へ通す。GWES416は前記通知をプライマリ/固有のフォーマットもしくはプロトコルへ変換し、そしてGWES416は目標の接続情報をUM420から得て、前記通知をプライマリネットワーククライアントへ届ける。
【0046】
図6は外部ユーザに関しての典型的ログイン過程を説明する。この例において、外部ユーザによるログインがあると、通知がプライマリネットワークのウォッチャーへ送信される(例えば、外部ネットワークからSGW414へ、GWES416へ、単数または複数のプライマリネットワーククライアントへと送られる;1.1−1.3)。具体的に言うと、外部ネットワークはオンライン通知(online notification)を、各々のプライマリネットワークのウォッチャーに対するSGW414へ、送信する。SGW414は前記プライマリネットワークのウォッチャーついての対応するダイアログを参照し、そしてダイアログが見つからない場合は、SGW414はerrorレスポンスを外部ネットワークに対して送信するであろうし、そして前記通知は届けられないであろう。もしダイアログが見つかれば、SGW414は前記通知をGWES416に転送し、そこにおいてGWES416は前記通知をフィルター(filter)し、変換し、そしてプライマリネットワークのウォッチャーに届ける。
【0047】
外部ユーザはプライマリネットワーククライアントの仲間(バディ)のプレゼンス状態をウォッチするため、サブスクライブすることができる(例えば、外部ネットワークからSGW414へ、GWES416へと流れる:2.1−2.5)。具体的に言うと、外部ネットワークは各々のプライマリネットワークの仲間(バディ)に対するサブスクライブのリクエストを送信する。SGW414はサブスクリプションのためにダイアログを作成し、サブスクライブリクエストをGWES416へ送信する。GWES416はGWDB440を参照し、前記プライマリネットワーククライアントが前記外部ユーザのバディリスト上にあるのかどうかをチェックし、なかった場合には、前記リクエストをバディ追加(Add Buddy)のリクエストと解釈する。もし、前記プライマリネットワークライアントが前記バディリストに存在はするものの承認保留中(pending for approval)であったならば、GWES416はオフライン通知が付随するokレスポンスをSGW414に送信する。もし前記プライマリネットワーククライアントがアクティブな仲間(バディ)であったなら、GWES416は、前記外部ユーザを前記プライマリネットワーククライアントのリバースバディリストに加えるためのリクエストをRBES418に送信し、そしてそれから、プライマリネットワーククライアントの最初のプレゼンス状態をUM420から読み出し、必要ならば該状態を変換し、そしてSGW414に送信する。SGW414がGWES416からokレスポンスを得た場合、SGW414はキャッシュ中のダイアログを更新し、最初のプレゼンス状態の通知に加えて前記レスポンスも、外部ネットワークへ通す。SGW414がGWES416からerrorレスポンスを得た場合、SGW414はキャッシュ内のダイアログを削除し、errorレスポンスを外部ネットワークへ送信する。
【0048】
いくつかの例において、そしていくつかのネットワークバックエンドに対して、一人の外部ユーザが複数の場所からログインする場合には、該ユーザは複数のサブスクライブをプライマリネットワークに対して送信するであろう。そのような例においてSGW414は、外部ユーザidをキーとする複数のダイアログを、そのメモリキャッシュに作成し、そして保存することができる。後にプライマリネットワーククライアントの仲間(バディ)が前記外部ユーザに対してプレゼンス通知を送信する場合、該通知はSGW414に保存された複数のダイアログに対応した、各々の外部の場所へ届けられるであろう。
【0049】
図7と図8はプライマリユーザと外部ユーザそれぞれに対しての典型的ログオフ過程を説明する。プライマリネットワーククライアントがログオフすると、オフライン通知が外部ウォッチャーに対して送信される(例えばES418/RBESからGWES416へ、SGW414へ、そして外部ネットワークへ;1.1−1.3)。さらには、外部の仲間(バディ)のプレゼンスに関するサブスクライブ解除過程が実行される(例えばES418からGWES416へ;2.1−2.2)。例えば、GWES416はSM442からSGWキーを参照し、リクエストを対応するSGWs414へ通す。そして、SGWルートレコードがSM442から取り除かれる。SGWsはサブスクライブ解除リクエストを外部ネットワークに送信し、メモリキャッシュから対応するダイアログを削除する。
【0050】
外部ユーザがログオフすると、オフライン通知がプライマリネットワーククライアントのウォッチャーに対して送信される(例えば外部ネットワークからSGW414へ、GWES416へ、そしてプライマリネットワーククライアントへ;1.1−1.3)。さらには、プライマリネットワーククライアントの仲間(バディ)のプレゼンスに関するサブスクライブ解除過程が実行される(例えば外部ネットワークからSGW414へ、GWES416へ、そしてRBES418へ;2.1−2.2)。SGW414は対応するダイアログを削除し、GWES416に対してサブスクライブ解除リクエストを送信する。GWES416はSM442からSGW414ルート情報(route)を取り除き、そしてプライマリネットワーククライアントの仲間(バディ)の、ウォッチャーリスト(すなわちリバースバディリスト)から前記外部ユーザを取り除く。
【0051】
図9と図10は、プライマリネットワーククライアントと外部ユーザそれぞれが、各々のプレゼンス状態を変化させること、に関連する過程を説明する。ある例において、プライマリネットワーククライアントはそのプレゼンスを変化させ、それによりプレゼンス通知が発行される。RBES418は、どのリバースバディが外部ネットワークからのものであるかを連携ドメイン情報を用いて識別し、GWES416に対して通知を送信する。
プレゼンス通知の変化はそれから、外部ウォッチャーのために外部ネットワークへ送信される。ある例において、GWES416は、プライマリネットワーククライアントの状態を適切な外部の状態にフィルターするか変換する。GWES416はSM442からSGWキーを参照し、SGW414に対して通知を送信する。SGW414は通知を、各々の存在するダイアログに対応する外部ネットワークへ送信する;ダイアログが見つからない場合、SGW414は今後の通知を取りやめるために、サブスクライブ解除のリクエストをGWES416に返信する。ある例においては、プライマリネットワーククライアントの状態と外部の状態の一致が得られない場合には、前記通知はGWES416によって、フィルタ除去される(落とされる)。
【0052】
もし外部ユーザがプレゼンス状態を変化させると、SGW414は対応するダイアログを探索する(そしてダイアログが見つからない場合には、外部ネットワークに対してerrorレスポンスを送信することができる。)SGW414は通知をGWES416へ通し、そしてGWES416はプライマリネットワーククライアントのために、該プレゼンス通知を対応する状態(matching state)に変換する。プライマリネットワークは必要ならば、対応しない状態(non−matching state)を、カスタムメッセージ(custom message)を用いて固有の状態へと変換することができる。GWES416は目標の接続情報をUM420から得て、前記通知を適切なプライマリネットワーククライアントへ届ける。
【0053】
図11と図12は、異なるプロバイダのユーザからのプレゼンスサブスクリプションを打ち切る(terminate)ユーザに関しての典型的処理を説明する。例えば、図11においてプライマリネットワーククライアントは外部ユーザからのプレゼンスサブスクライブを打ち切る(スパム(spam)抑制や同類のもののために望ましいかもしれない)。打ち切るための前記クライアントのリクエストはGWES416によって取り扱われ、GWES416は外部ユーザのサブスクライブを打ち切るためのリクエストを行う。GWES416は外部ユーザのバディリストをGWDB440から得て、そしてGWES416は、各々のプライマリネットワーククライアントの仲間(バディ)についてのリバースバディリストから外部ユーザを取り除くために、RBESにリクエストを送信する。
【0054】
打ち切りのリクエストはそれから外部ユーザへ送信される(例えば、GWES416からSGW414へ、そして外部ユーザへ)。ある例において、GWES416はSM442からSGWキーを参照し、SGW414に対して打ち切りのリクエストを送信する。GWES416はSM442からSGWルートレコードを取り除き、SGW414はそのメモリキャッシュにおけるダイアログを片付け、そして外部ネットワークに対して打ち切りのリクエストを送信する。前記外部ネットワークはオフライン通知を外部ユーザへ送信し、そして前記外部ネットワークはそのサブスクリプションレコードを適切に更新する。GWES416はその打ち切りログ(termination log)に、前記リクエストを記録する。
【0055】
さらには、図12に示すように、外部ネットワークが固有のユーザからのプレゼンスサブスクライブを打ち切ることができる。一例を挙げると、SGW414はプライマリネットワーククライアントにおける外部ユーザのプレゼンスに対してのサブスクライブを打ち切るためのリクエストを受信する。SGW414はそのメモリキャッシュにおけるダイアログを片付け、そしてGWES416に対して打ち切りのリクエストを送信する。GWES416はSM442からルートレコードを取り除き、そしてGWES416はプライマリネットワーククライアントに対してオフライン通知を送信する。もし外部ユーザが既に前記プライマリネットワーククライアントに対してオフラインに見えている場合、前記プライマリネットワーククライアントは前記通知をフィルターするかどうか決めることができる。
【0056】
図13と図14は、外部ユーザの仲間(バディ)を追加する固有のユーザに関しての典型的処理を説明する。最初の例である図13において、プライマリネットワーククライアントは外部ユーザを仲間(バディ)として追加するようリクエストする(例えば、そのバディリストへの追加等)。外部ネットワークより、最初のオフライン通知、2.1−2.3(前記クライアントによるバディ追加リクエストを誘因としたサブスクライブへの確認として)があり、その後に、オンライン通知、3.1−3.3が続く(この過程は、前記外部ユーザがプライマリネットワーククライアントによるバディ追加リクエストに同意したと仮定している)。
【0057】
詳細には、プライマリネットワーククライアントが外部ユーザを追加するようリクエストするとき、ES418は該外部ユーザを、UDBとUM420とにおけるプライマリネットワーククライアントのバディリストに追加し、それから、新しい仲間(バディ)が外部ユーザであるので該リクエストをGWES416に通す。GWES416はそれから、外部ユーザのプレゼンスについてサブスクライブするために(プライマリネットワーククライアントが外部ユーザを仲間(バディ)として追加するようリクエストしている場合においてである)、SGW414に対して、それから外部ネットワークに対してその情報を通す。SGW414が外部ネットワークからokレスポンスを得た場合、SGW414はメモリキャッシュにダイアログを保存し、該レスポンスをGWES416へ通す。GWES416はSM442にルートレコードを追加し、そして前記プライマリネットワーククライアントに対してokレスポンスを送信する。もし、SGW414が、外部idが無効であることを示すerrorレスポンスを外部ネットワークより得た場合、SGW414は対応するダイアログを削除し、GWES416に対してerrorレスポンスを送信する。GWES416はUDBとUM420とにおける前記プライマリネットワーククライアントのバディリストから前記外部ユーザを取り除き、そして前記プライマリネットワーククライアントに対してerrorレスポンスを送信する。
【0058】
外部ネットワークより、最初にオフライン通知が、送信されたサブスクライブリクエストへの確認として送信される(例えば、SGW414からGWES416へ、そして前記外部ユーザがオフラインであった前記プライマリネットワーククライアントへ)。前記プライマリネットワーククライアントは、前記最初のオフライン通知を落とすどうか決めることができる。最終的に、外部ネットワークからの、ユーザがオンラインであるというオンライン通知(前記外部ユーザが前記バディ追加リクエストに同意したと仮定している)。
【0059】
一例を挙げると、前記外部ネットワークからの前記サブスクリプションリクエストに対するokレスポンスを得た直後に、前記外部ユーザがプライマリネットワーククライアントのバディリストへ追加される。この例での特定の構成においては、前記外部ユーザが前記追加のリクエストをいつ容認/拒否したかを検出する必要がないために、保留状態(pending state)は存在しない。
【0060】
図14は前記外部ユーザが追加を拒否する場合の例を説明する。その処理/イベントフローは図13のそれにおいてイベントの最後の一組3.1−3.3が欠けている場合とよく似ている(例えば、外部ユーザが追加を容認することが欠けている)。
【0061】
図15と図16は、プライマリネットワーククライアントを、仲間(バディ)として外部ユーザに対して追加するための典型的処理を説明する。一般に、前記外部ユーザは前記プライマリネットワーククライアントを仲間(バディ)として追加するようリクエストし、そして前記プライマリネットワーククライアントは該追加のリクエストに同意する。
【0062】
より詳細には、前記外部ユーザは前記プライマリネットワーククライアントを仲間(バディ)として追加することを、前記プライマリネットワーククライアントのプレゼンスに対してサブスクライブすることによりリクエストする(1.1)。SGW414はサブスクライブリクエストをGWES416に送信し、GWES416はGWDB440を参照し、前記プライマリネットワーククライアントは前記外部ユーザのバディリスト上にないことから、このリクエストが仲間(バディ)を追加することを意味含んでいると検出する。GWES416はUDB420を参照し、前記プライマリネットワーククライアントのidが有効かどうかチェックする。もし有効でなければ、SGW414を通して外部ネットワークにerrorレスポンスを送信する。もし前記プライマリネットワークidが有効であれば、GWES416はSGW414に対してokレスポンスを送信する。SGW414はキャッシュにダイアログを作成し、okレスポンスを前記外部ネットワークに通す。一例を挙げると、前記外部ユーザは、前記プライマリネットワーククライアントがオフラインであると通知される(例えば、GWES416からSGW414へ、そして外部ネットワークへ)。GWES416はSM442にルートレコードを追加し、そしてGWES416はGWDB440において前記外部ユーザのバディリストに前記プライマリネットワーククライアントを、保留状態で追加する。最終的に(例えばGWES416を通してCS420へ、そして前記プライマリネットワーククライアントへ)、前記プライマリネットワーククライアントに対して、同意することが要求される。
【0063】
前記プライマリネットワーククライアントが追加のリクエストに同意した場合、ES418はバディ追加同意リクエスト(add buddy approval request)をGWES416に送信する。GWES416はGWDB440において、前記プライマリネットワーククライアントの仲間(バディ)の状態を、保留からアクティブに変更する。GWES416は、外部ユーザを前記プライマリネットワーククライアントのリバースバディリストに追加するために、RBES418に対して更新リクエストを送信する。GWES416はUM420からプライマリネットワーククライアントのオンライン状態を得て、それを外部の状態に変換する。前記プライマリネットワーククライアントのオンラインプレゼンス通知は、前記外部ユーザに送信される(例えば、GWES416を通してSGW414に、そして前記外部ネットワークとユーザに)。
【0064】
GWDB440において、各々のバディレコードはある状態(例えば、アクティブ、保留、拒否された)と、タイムスタンプを含む。前記状態は、例えばバディ追加フローを管理すること等のさまざまな目的のために使用でき、前記タイムスタンプは、プライマリネットワーククライアントを外部ネットワークからの過剰なSUBSCRIBEより保護するために使用でき、そしてまたごみ収集(garbage collection)のためにも使用できる。
【0065】
図15は、前記プライマリネットワーククライアントが追加リクエストを拒否する場合の例を説明する。その処理/イベントフローは図14のそれにおいてイベントの最後の一組2.2−2.4が欠けている場合とよく似ている。さらに、イベント2.1は、GWDB440における前記外部ユーザのバディリスト上での前記プライマリネットワーククライアントの状態を“保留”から“拒否された”に変更する。いくつかの例においては、前記外部ネットワークは前記外部ユーザに拒否のイベントを通知しないであろう。しかしながら前記外部ユーザがログインしなおす度の、毎回のサブスクライブリクエストを避けるために、前記プライマリネットワークは前記拒否されたリクエストに関連して拒否された状態を維持することができる。拒否された状態のバディレコードは、一定時間間隔の後にごみとして収集されることができる。
【0066】
図17と図18は、外部ネットワークサービスプロバイダからの仲間(バディ)を削除するための典型的処理を説明する。図17において、プライマリネットワーククライアントは外部の仲間(バディ)を削除する。この例において、GWES416は前記外部のユーザが前記プライマリネットワーククライアントの仲間(バディ)であることを認証し、そしてGWES416はUDBとUM420における前記プライマリネットワーククライアントのバディリストから前記外部ユーザを取り除く。前記プライマリネットワーククライアントにはそれから、前記削除のリクエストへのレスポンスが通知される(例えばGWES416からCS420へ、そして前記プライマリネットワーククライアントへ、okやerror等が通知される)。さらには、GWES416は、前記外部ユーザのプレゼンスをサブスクライブ解除し、そしてダイアログとルートレコードを片付けるため、SGW414と(そして外部ネットワークと)通信する。
【0067】
図18においては、バディリストからプライマリネットワーククライアントを削除する、外部ユーザが示されている。この例において、前記外部ユーザは前記プライマリネットワーククライアントのプレゼンスをサブスクライブ解除する。SGW414はダイアログを片付け、そしてSGW414はGWES416に対してサブスクライブ解除のリクエストを送信する。GWES416はSGW414へのルートをSM442から取り除く。さらに、GWES416は、プライマリネットワーククライアントのリバースバディリストから前記外部ユーザを取り除く。
【0068】
図19はプライマリネットワーククライアントと外部ユーザの間でIMセッションを開始するための典型的過程を説明する。この例において、前記プライマリネットワーククライアントは、外部ユーザとのIMセッションを始めることをリクエストするためにプライマリネットワーククライアントを使って(例えば、プライマリネットワーククライアントからのリクエストがES418からGWES416へ通信される)、IMセッションを開始する。GWES416は、その新しいセッションを認証する。一例を挙げると、システムは前記プライマリネットワーククライアントがIMベースのセッションをサポートしていないのかどうかをチェックし、もしそうであるなら、クライアントにerror返答を送信し、そうでなければSGW414に対してIMセッション開始のリクエストを送信する。もしIMセッションのダイアログが既に存在するならば、GWES416にokの返答をし;そうでなければ、外部ネットワークに対してSIPのINVITEリクエストを送信する。
【0069】
SGW414は前記外部ネットワークからのレスポンスを得て、もし該レスポンスがokならば、セッションダイアログはキャッシュに保存され、そうでない場合にはダイアログは削除される。SGW414はさらに、レスポンスをGWES416へ送信する。GWES416はSGW414からレスポンスを得る;もしレスポンスがokならば、SGW414ルートレコードをSMに保存し、そして該レスポンスをプライマリネットワーククライアントに通す。この時点で、前記プライマリネットワーククライアントはIM通信を送ることができる。
【0070】
プライマリネットワーククライアントが、IMベースのセッションをサポートしないクライアントを使ってIMセッションを開始する例においての過程は、以下の通りである。
前記プライマリネットワーククライアントは、ES418に対して最初のIMを送信する。ES418は外部ユーザとしての受信者を識別し(連携ドメイン情報や同類のものを使って)、リクエストをGWES416へ転送する。GWES416はSM442を参照し、そして前記の送信者と受信者に対してのIMセッションが未だ存在しないと決定し、それゆえ新しいセッションの認証へと続行する(例えば、このケースにおいてはYPCの未成年チェックなど)。もし認証に失敗すると、前記プライマリネットワーククライアントに対してerrorが送信され、そうでなければ最初のIMがSGW414に送信される。SGW414はキャッシュを参照して未だセッションが存在しないことを発見し、それから前記IMをキャッシュに格納しSIPのINVITEリクエストを外部ユーザに送信する。SGW414は外部ユーザからのレスポンスを得る;セッションが容認された場合には、SGW414はキャッシュ中のダイアログを更新し、そしてIMを外部に流し出すのであり、もしセッションが拒絶された場合には、SGW414は最初のダイアログをキャッシュから削除し、キャッシュされたIMを落とし、そしてGWES416に対してレスポンスを送信する。GWES416はSGW414から、前記セッションが容認されたかどうかのレスポンスを得、そしてSGW414はSM442においてルートを保存する。
【0071】
図19においてはまた、外部ユーザがプライマリネットワーククライアントとのIMセッションを開始する場合の例が示されている。外部ネットワークはSGW414に対して、SIPのINVITEを送信する。もし、その送信者と受信者についてのIMダイアログが既に存在する場合は(例えば、マルチで(multiple)外部ネットワーククライアントが実行されている場合)、SGW414は過去のセッションを終了するために外部ユーザに対してSIPのBYEを送信し、それからキャッシュに新しいセッションのダイアログを保存する。SGW414はGWES416に対してIM開始のリクエストを送信し、そしてGWES416は前記新しいセッションを認証する。例えば、GWES416はプライマリネットワーククライアントのidが有効かどうかチェックし、YPC制限に関してチェックを行い、そしてプライマリネットワーククライアントの(受信者の)無視リスト(ignore list)をチェックする。認証がokならば、GWESはSMにSGWキーを保存し、SGW414に対してokの返答をする;そうでなければ、SGW414に対してerrorを送信する。SGW414はGWES416からのレスポンスをチェックし、それに応じて最初のダイアログを更新するか削除する。SGW414はそれから、外部ネットワークに対してokまたはerrorのレスポンスを送信する。
【0072】
図20は、プライマリネットワーククライアントと外部ユーザとの間でのタイピング通知についての典型的イベントフローを説明する。IMセッションが確立された後には、IMとタイピング通知のリクエストが交換され得る。プライマリネットワークより外部ネットワークへと来るリクエストに対しては、GWES416がSMからSGWキーを参照し、それから対応するSGW414サーバに対してリクエストを送信し、該SGW414サーバは該リクエストを外部ネットワークへ転送する。外部ネットワークよりプライマリネットワークへと来るリクエストに対しては、SGW414がキャッシュにおいて対応するダイアログを参照する;もしダイアログが見つからない場合、該リクエストは落とされるであろうし;そうでなければ、該リクエストはGWES416に対して送信されるであろう(GWES416はそれから、該リクエストを適切なプライマリネットワーククライアントへ届ける)。
【0073】
図21は、プライマリネットワークと外部ユーザとの間でのIMセッションの終了についてのイベントフローを説明する。プライマリネットワーククライアントがIMセッションを打ち切る場合、打ち切りのリクエストがES418を通してGWES416へ、IMセッションを終了させるために伝播される。GWES416がSM442からSGWキーを参照し、SGW414に対して前記リクエストを送信し、そしてSM442からSGWルートレコードを削除する。SGW414はキャッシュからダイアログを削除し、外部ユーザに対してSIPのBYEを、セッションを終了させるために送信する。
【0074】
外部ユーザがIMセッションを終了させる場合、該外部ユーザはSGW414に対してSIPのBYEを送信する。SGW414はキャッシュからダイアログを削除し、GWES416に対してIMセッション終了のリクエストを送信する。GWES416はSMにおけるSGWルートレコードを削除する。さらに、GWES416はプライマリネットワーククライアントに対して、IMセッション終了のリクエストを送信することができる。
【0075】
図22は、本発明のさまざまの態様のための処理機能を実施するために採用されうる、典型的なコンピューティング・システム600を説明する(例えば、ゲートウェイサーバやマシンとして)。当業者はまた、他のコンピュータ・システムやアーキテクチャを用いて本発明を実施する方法にも気付くであろう。コンピューティング・システム600は、与えられた応用または環境に対して望ましいかもしくは適切となるように、例えばデスクトップ、大型汎用コンピュータ(メインフレーム)、サーバ、クライアント、または任意の他の種類の特定用途向けまたは汎用コンピュータ機器を表すことができる。コンピューティング・システム600は、例えばプロセッサ604のような1以上のプロセッサを含むことができる。プロセッサ604は、汎用もしくは特定用途の処理エンジン(例えば、マイクロプロセッサや、マイクロコントローラなど)、または他の制御ロジックを使って実装することができる。この例においてプロセッサ604は、バス602、または他の通信媒体に接続されている。
【0076】
コンピューティング・システム600はまた、情報と、プロセッサ604により実行される命令を格納するためにメインメモリ608(好ましくはランダム・アクセス・メモリ(RAM)もしくは他の動的メモリ)を含むことができる。メインメモリ608はまた、プロセッサ604により実行される命令の実行途中における一時的変数や他の中間情報を格納するために用いることもできる。コンピューティング・システム600は同じく、静的情報やプロセッサ604のための命令を格納するために、リード・オンリー・メモリ(ROM)もしくは他の、バス602に連結された静的記憶装置を含むことができる。
【0077】
コンピューティング・システム600はまた、例えばメディアドライブ612とリムーバブル記憶装置インターフェース620を含む記憶装置610を、含むことができる。前記メディアドライブ612は、固定もしくはリムーバブルな記憶メディアをサポートするドライブもしくは他の機構(例えばハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、光ディスクドライブ、CDまたはDVDドライブ(RまたはRW)、もしくは他の、リムーバブルな、もしくは固定のメディアドライブなど)を含むことができる。記憶メディア618は、例えば、ハードディスク、フロッピー(登録商標)ディスク、磁気テープ、光ディスク、CDまたはDVD、または他の固定もしくはリムーバブルな、メディアドライブ614によって読み書きされるメディアを含むことができる。これらの例が説明するように、記憶メディア618は、特定のコンピュータソフトウェアやデータを記憶した、コンピュータ読み取り可能な記憶メディアを含むことができる。
【0078】
代替的実施例において、記憶装置610は、コンピュータプログラム、もしくは他の命令、またはデータをコンピューティング・システム600に読み込ませることを可能とするための、別の類似手段を含むことができる。そのような手段は、例えばプログラムカートリッジとカートリッジインターフェースや、リムーバブルメモリ(例えば、フラッシュメモリまたは他のリムーバブルなメモリモジュール)とメモリスロットや、そして他の、ソフトウェアとデータがリムーバブル記憶ユニット618からコンピューティング・システム600へ転送されることを可能とする、リムーバブル記憶ユニット622とインターフェース620等の、リムーバブル記憶ユニット622とインターフェース620を含むことができる。
【0079】
コンピューティング・システム600はまた、通信インターフェース624を含むことができる。通信インターフェース624は、ソフトウェアとデータがコンピューティング・システム600と外部機器との間で転送されることを可能とするために、使用されうる。通信インターフェース624の例としては、モデム、ネットワークインターフェース(イーサネット(登録商標)、もしくは他のNICカード等)、通信ポート(例えばUSBポートのような)、PCMCIAスロット及びカード等を含むことができる。通信インターフェース624を通して転送されるソフトウェアとデータは、電子的、電磁気的、光学的、もしくは他の、通信インターフェース624により受信可能な信号の形をとる。これらの信号はチャンネル628を通して、通信インターフェース624に提供される。このチャンネル628は、無線媒体、ワイヤーまたはケーブル、光ファイバー、もしくは他の通信媒体を用いて信号を運ぶことができ、実装されることができる。いくつかのチャンネルの例として、電話線、携帯電話リンク、ラジオ周波数(RF)リンク、ネットワークインターフェース、ローカルエリア・ネットワークまたは広域ネットワーク、そして他の通信チャンネルが含まれる。
【0080】
本文書において、“コンピュータプログラム製品”(computer program product)と“コンピュータ読み取り可能な媒体”(computer− readable medium)という用語は一般的に、例えばメモリ608、記憶メディア618、記憶ユニット622、もしくはチャンネル628における単数または複数の信号、のようなメディアに言及するために使用されうる。これらの、そして他の形のコンピュータ読み取り可能な媒体は、実行されるべき、プロセッサ604への、1以上の命令からなる1以上の命令の配列を提供することに関係しうる。そのような命令は、一般的に“コンピュータプログラムコード”(computer program code)と呼ばれるのであり(コンピュータプログラムの形式によって、もしくは他のグループ分けによって分類されうる)、実行されることで、コンピューティング・システム600が本発明の実施例における特徴を発揮すること、または機能を果たすことを可能とする。
【0081】
ソフトウェアを用いて要素群が実行されるような一実施例において、該ソフトウェアはコンピュータ読み取り可能な媒体に格納されることができ、そして、例えばリムーバブル記憶ドライブ614、ドライブ612、または通信インターフェース624を用いて、コンピューティング・システム600に読み込まれることができる。制御ロジック(この例においては、ソフトウェアの命令もしくはコンピュータプログラムコード)がプロセッサ604によって実行されると、該制御ロジックはプロセッサ604に、ここで説明されている本発明の機能を発揮させる。
【0082】
上記記述が、目的を明確にするため異なった機能ユニットやプロセッサに関連した本発明の実施例を説明してきたということは、評価されることではあろう。しかしながら、種々の機能ユニット、プロセッサまたはドメイン間における任意の適正な機能配置が、本発明を損なうことなく使用されうるということが明らかになるであろう。例えば、分離されたプロセッサ、または制御装置により実行されるように説明された機能は、同一のプロセッサ、または制御装置により実行することが可能である。よって、特定の機能ユニットに対しての言及は、厳密に、ある論理的または物理的な構造、及び組織を示しているというより、むしろ単に、説明される機能を提供するために適した方法の参考とみなされる。
【0083】
本発明はいくつかの実施例に関連して説明されてきたのではあるが、本発明はここで説明された特定の形式に限定されることを意図されているものではない。むしろ、本発明の範囲は請求の範囲によってのみ、制限されるものである。さらに言えば、一つの特徴が特定の実施例に関連して現れ、説明されたとしても、当業者は、説明された実施例のさまざま特徴が、本発明に従って結び付けられることに気付くであろう。
【0084】
さらに言えば、個別に挙げられた複数の方法、要素もしくは手法の段階であっても、例えば、単一のユニットやプロセッサによって実行されうる。
さらには、個々の特徴が別々の請求項に含まれうるのではあるが、これらは場合によっては、有利に結び付けられることができるし、そしてまた、別々の請求項に含まれているからと言って、特徴を結合することが実現可能でない そして/または 有利ではないということを、意味含むものではない。また、一つの請求項のカテゴリに特徴が含まれることはそのカテゴリへの制限を意味含むものではなく、むしろ必要に応じて、その特徴は、等しく他の請求項カテゴリに適用可能であってもよい。
【0085】
本発明はいくつかの実施例に関連して説明されてきたのではあるが、本発明は、ここで説明された特定の形式に制限されることを意図されているものではない。むしろ、本発明の範囲は請求の範囲によってのみ、制限されるものである。さらに言えば、一つの特徴が特定の実施例に関連して現れ、説明されたとしても、当業者は、説明された実施例のさまざま特徴が、本発明に従って結び付けられることに気付くであろう。さらには、ある実施例に関連して説明された本発明の態様は、発明として単独で成立しうるものである。
【0086】
さらには、当業者によって、本発明の精神と範囲から逸脱することなくさまざまの改良と交代がなされうることが、評価されるであろう。本発明は前述の実例的な詳細によって制限されるべきものではなく、請求の範囲に従って定義されるべきものである。
【技術分野】
【0001】
関連出願の相互参照
本願は、ここにすべてが記載されているように参照によって組み込まれた、2005年10月7日に提出され、「異種のサービスプロバイダ間における、インスタントメッセージングの相互運用性」とタイトルが付された、先に出願された米国特許仮出願第60/724,577号についての優先権の利益を主張する。
【0002】
分野
本件は、一般的に、インターネットやイントラネットのようなネットワークを通じたインスタントメッセージングに関し、特に、異種のインスタントメッセージングプロバイダにおける2以上のユーザ間におけるインスタントメッセージングに関する。
【0003】
関連技術の説明
インスタントメッセージング技術は、一般的に、2以上の参加者が、インターネット(Internet)やインターネット(internet)(例えばプライベートネットワーク)のようなコンピュータネットワークにわたって、事実上リアルタイムで通信することを可能とする。典型的には、各々の参加者はユーザインターフェースを通じてクライアントコンピュータシステムを使用し、メッセージ(例えばテキスト、音声、ファイル、及び同類のものを含む)を送信し、受信する。通信における各々のクライアントコンピュータはネットワークを通じて共通のインスタントメッセージングサービスプロバイダ、そして接続サーバに接続される。接続サーバは参加者からのメッセージを受信し、処理(他の参加者のクライアントシステムに、表示のために転送することによるものも含む)する。接続サーバはまた、例えば仲間の参加者が接続を断ったこと、もしくはログオフしたことを参加者に通知する等、システムに代わってメッセージを送信するために構成されることもできる。
【0004】
典型的には、クライアントシステムをインスタントメッセージングクライアントとして使用できるものとするため、各々のクライアントシステムにおいてはインスタントメッセージングアプリケーションソフトウェアがインストールされる。前記インスタントメッセージングソフトウェアは、例えばインターネットを通じてアクセス可能なウェブページからダウンロード可能となるよう作ることが可能である。ユーザは、1以上の他の参加者とインスタントメッセージングによって通信するために、クライアントシステム上でこのソフトウェアを起動する。クライアント側のアプリケーションソフトウェアは典型的にはクライアントシステムと接続サーバとの間の接続を確立し、そして自動的に前記ユーザを接続サーバにログインさせるか、または前記ユーザに、ログインするために必要な情報(ユーザ名とパスワードなど)の入力を促す。その後前記ユーザは、その時点でインスタントメッセージングシステムにログインしている1以上の他のユーザと、インスタントメッセージングを用いて通信することが可能となる。
【0005】
MSN(登録商標)メッセンジャー、Yahoo!(登録商標)メッセンジャー、AOL(登録商標)インスタントメッセンジャー(“AIM”)、及び同類のもの等、いくつかの知られたインスタントメッセージングシステム、そしてサービスプロバイダが存在する。殆どのインスタントメッセージングサービス(またはサービスプロバイダ)は独自仕様のソリューションを使用するために、大抵、あるインスタントメッセージングシステムを使用するクライアントは、異なるインスタントメッセージングシステムを使用するクライアントとインスタントメッセージを交換することができない。例えば、MSN(登録商標)メッセンジャーを使用するクライアントは通常、同じシステム(例えば同じインスタントメッセージングプロバイダ)を使用する他のクライアントと通信できるのであるが、しかしながら、Yahoo!(登録商標)メッセンジャー等、他のインスタントメッセージングサービスプロバイダを使用するクライアントと通信することはできない。
【0006】
従って、2以上のインスタントメッセージングシステムのためのネットワーク間で通信を可能とすること、及び相互運用性が望まれている。さらに、1以上の外部のネットワークとインスタントメッセージングプロバイダと関わりあいをもつ参加者のために、プレゼンスインジケータ(presence indicator)とバディ(仲間)リスト情報(buddy list information)を提供することが望まれている。
【発明の概要】
【0007】
概要
本発明の一つの態様と一つの例に従って、異種のインスタントメッセージングサービスプロバイダのユーザ間での、インスタントメッセージング通信とイベントを容易にするためのシステムが提供される。前記システムは外部サーバから受信された通信を変換するために動作可能な、プライマリインスタントメッセンジャーサービスプロバイダネットワークに関連する変換ロジックを含む。具体的には、前記変換ロジックは外部サーバから受信された通信を、第2のプロトコルから前記システム固有の(native)プライマリプロトコルへ変換する。
【0008】
一つの例において、異なるインスタントメッセージングサービスプロバイダのユーザ間でのインスタントメッセージング通信を容易にするための装置は、インターフェースロジックと変換ロジックとを含む。インターフェースロジックは、外部のインスタントメッセージングサービスプロバイダネットワークに関連し、かつ第2のプロトコルに従ってフォーマットされている、インスタントメッセージングサービスに関する通信、を受信する。
前記装置はさらに、受信された通信を第2のプロトコルから受信サービスプロバイダネットワーク固有のプライマリプロトコルへ変換するための変換ロジック、を含む。
【0009】
いくつかの例において、受信される通信は、外部のインスタントメッセージングサービスプロバイダネットワークから受信される(例えば、外部ネットワークのクライアントは、通信を該外部ネットワークへ送り、該外部ネットワークは順繰りに、前記通信をプライマリネットワークへ送る)。前記通信はさまざまのインスタントメッセージング通信とイベント、例えば、サブスクライブ(subscribe)のリクエスト、招待(invite)のリクエスト、サブスクライブ解除(unsubscribe)のリクエスト、ウォッチャー通知(watcher notifications)、及び同類のもの、等を含むことができる。
【0010】
加えて前記装置は、ゲートウェイイベントサーバ、イベントサーバ、SIPゲートウェイ、エッジ・プロキシ(edge proxy)、セッションマネージャ(例えば、ランタイムダイアログの状態(run−time dialog states)や、SIPダイアログのルーティング情報、その他を格納するため)、ゲートウェイデータベース(例えば、 バディリストや、永続性情報(persistent information)、その他を格納するため)、接続サーバ、接続マネージャ、その他からの1以上をさらに含むか、またはそれらと通信することができる。
【0011】
別の例に従えば、異なるインスタントメッセージングサービスプロバイダのユーザ間におけるインスタントメッセージング通信を容易にするための方法が提供される。一例を挙げれば、その方法は、外部のインスタントメッセージングサービスプロバイダネットワークから、インスタントメッセージングサービスに関する、第2のプロトコルに従ってフォーマットされている通信を受信する動作を含み、さらには受信された通信を第2のプロトコルからプライマリプロトコルへ変換する動作を含む。
【0012】
別の例に従えば、異なるサービスプロバイダネットワークを越えてのインスタントメッセージング通信を容易にするための命令を含む、コンピュータ読み取り可能な媒体が提供される。一例を挙げれば、前記命令は、外部のインスタントメッセージングサービスプロバイダネットワークに関連した、インスタントメッセージングサービスに関する、プライマリインスタントメッセージングサービスプロバイダネットワークに向けられた通信を、第2のプロトコルから、前記プライマリインスタントメッセージングサービスプロバイダネットワーク固有のプライマリプロトコルに変換することを含む方法の性能を引き起こすための命令である。
【0013】
本発明とそのさまざまの態様は、以下に詳述される説明を添付の図面、そして請求の範囲と併せて熟考することにより、より良く理解される。
【図面の簡単な説明】
【0014】
【図1】図1は、サーバ間での相互運用性を備えた二つのインスタントメッセージングサービスプロバイダ間での通信のための、典型的なシステム及び環境を図解的に説明する。
【図2】図2は、外部の、または第2のネットワーク/インスタント メッセージングサービスプロバイダネットワークと通信している第1のインスタントメッセージングプロバイダに関連する、典型的なプライマリネットワークのバックエンドを図解的に説明する。
【図3】図3は、プライマリサービスプロバイダネットワークのバックエンドと外部のネットワークの間における、典型的なゲートウェイと通信を図解的に説明する。
【図4】図4は、外部の、または第2のネットワーク/インスタント メッセージングサービスプロバイダと通信している第1のインスタントメッセージングサービスプロバイダに関連する、典型的なプライマリネットワークのバックエンドを図解的に説明する。
【図5】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図6】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図7】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図8】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図9】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図10】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図11】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図12】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図13】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図14】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図15】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図16】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図17】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図18】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図19】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図20】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。
【図21】図5から図21は、1以上の外部ネットワーク/インスタント メッセージングサービスプロバイダと通信しているプライマリネットワークサービスプロバイダのバックエンドの構成要素間における、さまざまの典型的通信とイベントフローとを説明する。そして;
【図22】図22は、本発明のさまざまの態様のための処理機能を実装するために採用されうる、典型的なコンピューティングシステムを説明する。
【発明を実施するための形態】
【0015】
以下の説明は、当該技術分野において通常の技術を有する人が、本発明を作り、そして使用することを可能とするために、与えられるものである。特定の機器、技法、そして応用についての説明は、単なる例として提供される。ここにおいて説明される例のさまざまの改良が、当業者にとっては容易に明らかになるであろうし、ここにおいて明示される一般的原理は、本発明の精神と範囲から外れることなく、他の例や用途に適用することができる。それ故に、本発明はここにおいて説明され示される例に限定することを意図されているのではなく、請求の範囲に一致する範囲で認められることを意図されている。
【0016】
図1は、ここで説明されるいくつかの態様が使用されうる、典型的なシステムと環境を説明する。大まかに、複数の第1のクライアント110がログインしている(例えば、第1のサービスプロバイダプロトコルを通じて)第1のインスタントメッセンジャー(“IM”)サービスプロバイダ100と、複数の第2のクライアント112がログインしている(例えば、第2のサービスプロバイダプロトコルを通じて)第2のIMサービスプロバイダ102が説明されている。第1、第2のIMサービスプロバイダ100、102は、第1のクライアント110が第2のクライアント112とインスタントメッセージの送受信をすることを可能とするために、通信をする。一例を挙げれば、前記通信は第1、第2のネットワーク100、102の間での直接の通信であり、例えば各々のネットワークにおけるそれぞれのサーバ間、または他のネットワーク構成要素間での通信である(第1のクライアント110が第2のネットワーク102と直接通信し、または第2のクライアント112が第1のネットワーク100と直接通信するのではない)。そのようなシステムは、異種のIMプロバイダ間での相互運用性を可能とし得る。
【0017】
第1、第2のIMサービスプロバイダ100、102は、少なくとも一部分において、そして一例において、SIP(Session Initiation Protocol、セッション初期化プロトコル)とSIMPLE(Session Initiation Protocol for Instant Messaging and Presence Leveraging Extensions)に基礎を置くプロトコルにより通信することができる。SIP/SIMPLEは、IMとプレゼンスの機能性を提供する第1、第2のIMサービスプロバイダの間での、相互通信と相互運用性のためのプロトコルの例証となる。さらには、SIP/SIMPLEは、音声、映像、及び同類のもののサーバ間での相互運用性(server−to−server interoperability)を、サポートし得る。
【0018】
一例を挙げれば、サーバ間での相互運用性という目的のための特定のSIP/SIMPLEプロトコルは、SIP RFC 3261と、SIP RFC 3265と、そして/またはPIDF RFC 3863とを含む。さらに言えば、ネットワーク間の通信は、所望のレベルのセキュリティとIPフィルタリングを備えたTCPを越えて、サーバ間で通信し得る。
【0019】
当業者は、さまざまの他の通信プロトコル(オープンなプロトコルであるか独自仕様であるかは問わない)が、単独で使用されるか他の通信システム/方法と組み合わせて使用されるかに関わらず、可能であること、そして予期されることに気付くであろう。SIP/SIMPLEプロトコルに対しての、例えば特定のIMサービスプロバイダや所望の機能に依存した、さまざまの改良がなされ得る。例えば、SIP/SIMPLEのように良く知られた任意のプロトコルを、与えられたネットワーク内でより効果的に使用できるよう(例えば通信速度や、プロセスや、コスト等の点において)、改良することが可能である。さらには、XMPPもしくは同類のものなどの、異種のIMプロバイダ間における通信と相互運用性の両方、またはいずれか一方を可能とするか容易にする、他の適正なプロトコルを、単独で、またはSIP/SIMPLEプロトコルと組み合わせて使用することができる。
【0020】
クライアント110と112には、例えば、インターネットブラウザやパーソナルコンピュータ、携帯電話やノート型パーソナルコンピュータのようなモバイル機器、及び同類のものを通じて、IMアカウントにアクセスするユーザを含むことができる。ユーザは典型的には、特定のユーザIMアカウントに対するそれぞれのIMサービスプロバイダを含む、1以上のサーバへ、(インターネットやイントラネットなどの)ネットワークを通じて接続される。該ネットワークは更に、ゲートウェイサーバ、プロキシサーバ、アカウントサーバ、電子メールサーバ、モバイルサーバ、及び同類のもの等、さまざまの他のサーバを含むことができる。
【0021】
コンピュータ機器を通じたクライアントは、例えば携帯電話や人工衛星といった無線ゲートウェイのような無線ネットワーク、もしくは他の無線ネットワークを通じて通信することができる。さらには、前記コンピュータ機器は、ケーブルネットワークや光ファイバーネットワーク等の無線ではないネットワークを通じて、もしくは無線システムと無線ではないシステムの組み合わせを通じて、通信することができる。前記コンピュータ機器は、キーボードのような入力機器に接続されたプロセッサ、ネットワークインターフェース、メモリ、そしてディスプレイ等の、適正なハードウェアとソフトウェアを含むことができる。前記メモリは、ここにおいて説明される機能のいくつかを実行するために前記機器と共に動作可能な、ロジックもしくはソフトウェアを含むことができる。前記機器は、電子メールの受信トレイ、インスタントメッセージング(IM)、ショート・メッセージ・サービス(SMS:short messaging service)、マルチメディア・メッセージング・サービス(MMS:multimedia messaging service)、及び同類のもののようなメッセージング機能(messaging facility)のための適正なインターフェースを含んで、動作可能とすることができる。前記機器はさらに、例えばYahoo!(登録商標)メールアカウント、またはHotmail(登録商標)アカウントのようなウェブメール環境を含む、インターネット、もしくはユーザアカウントにアクセスするためのウェブブラウザを表示するよう動作可能とすることができる。
【0022】
ネットワーク100、102は、互いに通信していてさらには複数のユーザの機器と無線で通信することも可能である、1以上のサーバとデータベースのシステム、と通信すること、またはそれらシステムを含むことが可能である。典型的なサーバシステムは、さまざまなルータ、データベース、ゲートウェイ、そしてサーバ(エッジもしくはプロキシサーバ、ゲートウェイサーバ、モバイルサーバ、電子メールサーバ、ウェブサーバ、音声メッセージングサーバ、及び同類のものなど)を含むことができる。さらに、ネットワーク20は、さまざまのユーザ、機器、サーバ、エージェント、モジュール、クライアント、プロセッサ、及び同類のものの間での通信を可能とする、無線通信と、1以上のローカルエリアネットワーク(LANs)、そして/または インターネットのような広域ネットワーク(WAN)を含むことができる。
【0023】
ある典型的動作において、クライアント110を通じたユーザは、有効なIDとパスワードによって、プライマリネットワークにサインインする。ユーザがプライマリネットワーク100に無事にサインインした後、クライアント110そして/またはプライマリネットワーク110は、第2のネットワーク102上の仲間(バディ)のプレゼンス/ステータスに対するサブスクリプション(subscription)を送信し、さらには第2のネットワーク102上のウォッチャー(watcher)(例えばクライアント110と親交のあるクライアント112)へ、プライマリネットワークにおけるプレゼンス/ステータスを示す通知を送信する。もしユーザがプライマリネットワークからサインアウトすれば、適切なサブスクリプション/通知メッセージが、第2のネットワーク上の仲間(バディ)へ送信される。
【0024】
ユーザはまた、第2のネットワークからのコンタクトをブロック/無視することもでき;第2のネットワークからの新たなコンタクトを、そのコンタクトの第2のネットワークに対するIDを使って追加することもでき;第2のネットワークからのコンタクトを削除することもでき;第2のネットワークからのコンタクトの名前を変更することもできる。
【0025】
図2は、ここで説明するいくつかの態様が使用されうる、典型的なIMサービスプロバイダネットワークの概観を説明する。全ての構成要素が必要とされるとは限らず、該構成要素の配置や種類の変化は、さまざまの発明の精神と範囲から外れることなく、なされうる。
【0026】
一つの例において、第1のIMサービスプロバイダに対応するプライマリ、または第1のネットワーク200は、エッジ・プロキシ212を含む。前記エッジ・プロキシ212は、SIP/SIMPLEもしくは他の、単数または複数の通信プロトコル(第1のIMサービスプロバイダと、1以上のIMサービスプロバイダを含む1以上の、外部ネットワーク(external network)または202のような移動先ネットワーク(foreign network)との間で使用される)用に構成されることができる。
とりわけ、エッジ・プロキシ212は単数または複数の外部ネットワークへの接続の取り扱い(handling)とルーティングを提供する。前記エッジ・プロキシ212は省略可能な構成要素であって、別の例においてはゲートウェイ214が別のサーバ、またはネットワーク構成要素と直接(例えば、別のネットワークのエッジ・プロキシもしくはゲートウェイと直接)通信できる。しかしながら、一般のエッジ・プロキシ212を実装することは、2以上の外部ネットワークと連携する(federate)ことを容易にする。エッジ・プロキシ212の包含はまた、1以上の外部ネットワークへの連携のルーティングと接続の取り扱いを集中化することの助けとなる。
【0027】
この例において、ゲートウェイ214は第1のネットワーク内部への最後のSIPノードであり、そして単数または複数の外部ネットワークに対してのSIPエンドポイントとしての、第1のネットワークにおけるプロキシクライアントである。従ってゲートウェイ214は、ネットワーク200のバックエンドにおいて、SIP/SIMPLEの通信/イベント/その他を、固有なプロトコル、またはプライマリプロトコルの通信へ変換するよう動作可能な、ロジックを含む。例えば、ゲートウェイ214はSIPトラフィックを特定のプライマリネットワーク/IMサービスプロバイダにとっての固有なプロトコル、またはプライマリプロトコルへ変換するのに役立つし、逆もまた同様である。典型的には、ゲートウェイ214(または同等な構成要素)の拡張性(scalability)の限界は、SIPのスタック実装(stack implementation)の性能に依存する(図3に関して、より詳細に論じているように)。さらに、SIP層においては、特定のネットワーク 及び/または 構成要素に依存する拡張性を改善するための一括(batch)サブスクリプション、及び一括通知を実行するため、さまざまな最適化を行うことができる。ある例において、ゲートウェイ214は、SIPスタックが一括にされたサブスクリプションと通知を取り扱うのに最適化された、SIPゲートウェイである。
【0028】
ゲートウェイ216はゲートウェイイベントサーバ(ES)を含み、さまざまのバックエンドサーバ、例えばリバースバディイベントサーバ(reverse buddy event server)218、イベントサーバ220、そして接続サーバ222のような、固有のプライマリネットワークサーバとの通信を取り扱う。ゲートウェイ216はまた、任意の種類の外部IM/プレゼンス プロトコル(IM/presence protocol)を用いて使用され得る、一般のサブスクリプションとダイアログモデルをエクスポートするよう、動作可能である。ある例において、ゲートウェイ216は尚一層ステートレス(stateless)であり、そして大いに拡張性がある。
【0029】
ゲートウェイ216はランタイムダイアログの状態を格納するために、セッションマネージャ242を含むか、または242へアクセスすることができ、さらには外部ユーザからなるプライマリネットワークの仲間(バディ)を格納するため、バディストア(buddy store)240を含むか、または240にアクセスすることができる。バディストア240は、プライマリアカウントの仲間(バディ)(例えば Yahoo! での仲間(バディ)や、コンタクトや、同類のもの)を格納する代わりに外部ユーザから成っているデータベース、を含むことができ、該外部ユーザは例えば、外部ユーザのアドレスや他の識別子をそのキーとする。外部ユーザからのサブスクリプションが入ってきた場合、それらはバディストア240に反して承認される。上記はSQL実装により実行されるか、もしくは択一的に、独自仕様のデータベースにより置き換えられる。
【0030】
セッションマネージャ242は一般的に、ダイアログの過渡状態を格納する。一例を挙げれば、セッションマネージャ242は、記憶装置において、拡張性のある分散キャッシュ機構(scalable distributed caching mechanism)を使用するのであるが、しかし別の実装も可能である。
【0031】
第1のネットワークのバックエンド上で、他のさまざまのサーバからの追加的支援を含めることができる。例えばrbum/rbes218は、リバースバディリスト(reverse buddy lists)において、外部のID(external id’s)を格納し、また読み出すために、動作可能である。イベントサーバ(ES)220は、メッセージが適切にゲートウェイ216に、そしてそこからSIPゲートウェイ214に(そして最終的には適切な外部ネットワーク、そして外部ユーザに)転送されるように、外部ドメインを決定することができる。
【0032】
図3はある典型的ゲートウェイ300の構成要素のブロック図を説明する;
300は例えば、(図2で示されたSIPゲートウェイ214のような)SIP/SIMPLEゲートウェイを含む。SIP/SIMPLEゲートウェイは、ネットワークの両側にある(例えば、外部ネットワークとプライマリネットワーク/バックエンドの間での)、他の構成要素/サーバによってのネットワークの入出力(I/O)を取り扱うために動作可能である、“接続マネージャ(Connection Manager)”を含む。
前記ゲートウェイはまた、選択的なトランスポートレベルのセキュリティのために(例えば、暗号化、承認、及び同類のもの)動作可能であり、そして他の構成要素から、トランスポートレベルの詳細を抽出する。前記セキュリティの機構は、それが情報をやりとりしている構成要素の信頼レベルに依存した、Mutual Transport Layer Security (MTLS)のための単なるIPフィルタリングとは異なる。一例を挙げれば、ネットワーク通信のいくつか、あるいは全てに対して、I/Oに基づいたより効率的な非同期のキュー(kqueue)が実装可能である。更に言えば、接続プールのサイズと動作は、設定パラメータを通して制御可能である。
【0033】
一例を挙げれば、前記ゲートウェイはSIPスタック300を含み、該SIPスタックはオープンソースのSIPスタックと、商用のSIPスタックを含み、または独自仕様のSIPスタックを含む。さらには、SIP抽出層320は、現在使われているSIPスタック310に対して前記ゲートウェイの実装の残りを不可知にするように、動作可能である。一般のAPIやオブジェクトのセットは、この抽出を提供することができる。結果として、完全に異なった、または改良されたSIP実装を必要に応じて採用するのに、この構造はとても伝導性がある。
【0034】
この例において、SIPエンドポイントプレゼンス、ダイアログマネージャ(SIP End Point Presence,Dialog Manager)330が更に含まれる。例えば、外部/移動先のクライアント(例えばMSNクライアント)と通信したいと願っているプライマリネットワーククライアントに対して、この構成要素は論理的SIP終エンドポイント(termination point)(エンドポイント)を作成する。該終エンドポイントは、ネットワークの両側からの関心があるときはいつでも、オン・デマンドの基準で作成される。上記終エンドポイントのそれぞれに置かれたSIPの SUBSCRIBE、INVITEダイアログは、ダイアログマネージャによって探知され、そして管理される。以下のSIPの機能は、プライマリネットワーククライアントに代わって、SIPエンドポイントプレゼンス、ダイアログマネージャ330によって取り扱うことができる:
SUBSCRIBEを、プライマリネットワーククライアントに代わって送信/受信する。
SUBSCRIBEダイアログ(入って来るもの、出て行くもの両方)を、プライマリネットワーククライアントに代わって探知し、管理する。
SUBSCRIBEの再表示(refresh)を、プライマリネットワーククライアントに代わって送信し、処理する。
NOTIFYを、プライマリネットワーククライアントに代わって送信/受信する。
プレゼンス情報データ形式(PDIF: Presence Information Data Format)のプレゼンス情報を解析し、消化(digest)する。
プライマリネットワーククライアントのプレゼンスアラート(presence alerts)を、PDIF形式に変換する。
INVITEを、プライマリネットワーククライアントに代わって送信/受信する。
INVITEダイアログを、プライマリネットワーククライアントに代わって探知し、管理する。
IMを、プライマリネットワーククライアントに代わって送信/受信する。
タイピング通知(Typing Notification)を、プライマリネットワーククライアントに代わって送信/受信する。
UNSUBSCRIBEを、プライマリネットワーククライアントに代わって送信/受信する。
【0035】
SIPエンドポイントプレゼンス、ダイアログマネージャ330という構成要素はさらに、自身の状態情報を保持することができ、そしてさまざまのSIPダイアログをそれらに対応するプライマリネットワーククライアントの終エンドポイントにマッピングすることを手伝うためにテーブルを参照することができる。さらには、この構成要素は同一のプライマリネットワーククライアントに対して複数のプレゼンスポイント(MPOP:multiple points of presence)または複数の終エンドポイント(multiple termination points)を保持するように、動作可能である。
【0036】
一般的に、稼動しているゲートウェイマシンは2台以上あり(例えば、前記プライマリネットワークにおいて)、そして与えられた終エンドポイントはゲートウェイマシンのうちのただ1台における関連した状態を有するので、セッションマネージャ(例えば図4を参照)はさらに、ネットワークにおいてメッセージを適切なゲートウェイマシンに送ることに役立つし、逆もまた同様である。適切なロジックは、正式なダイアログの文脈中においてシステムの拡張性を落とすことなく、メッセージが処理されることを保証する。
【0037】
さらには、この例において、前記ゲートウェイはSIP固有ブリッジ340を含む。前記SIP固有ブリッジ340は一般に、SIP形式の間にあるメッセージを固有のバックエンド形式(native backend format)に(例えばネットワーク固有の形式に)変換するよう、そして同様に逆の変換を行うよう、動作する。例えばプライマリネットワークは、比較的速い集中型の状態ストレージ(state storage)を用いるサーバを含むことができるのであり、該状態ストレージは個々のマシンをステートレスにする。そのようなアーキテクチャは一般的に、ゲートウェイとプライマリネットワークサーバ間におけるシームレスなクラスター化/負荷の釣り合わせを可能とする。
前記SIP固有ブリッジ340は、プライマリネットワークサーバからなるこのクラスタに対して、該プライマリネットワーク固有のプロトコルによって通信する。それはまた、個々のプライマリネットワーククライアントから外部ネットワーククライアントに向けられたメッセージを受信し、処理する。
【0038】
図4から図21は、1以上の外部ネットワーク/インスタントメッセージングサービスプロバイダと通信している第1のネットワークのバックエンド構成要素間での、さまざまの典型的な通信とイベントのフローを説明する。
【0039】
図4は、外部ネットワークと通信するゲートウェイを含む、プライマリサービスプロバイダネットワークのバックエンドの全体的アーキテクチャを説明する。この例において、エッジ・プロキシ(EP)412は、接続プールと、SIP/SIMPLEメッセージの外部ネットワークへ、または外部ネットワークからの転送と、に加えて更に、アクセス制御と、プロビジョニングと、外部ネットワークへ、または外部ネットワークからのルーティングと、のために提供される。一般に、エッジ・プロキシ412は1以上のドメインと通信するように動作可能であり、構成されている。さらに、SIPゲートウェイ(SGW:SIP Gateway)414は外部ネットワークに対してのSIPエンドポイントとしてプライマリネットワーククライアントをプロキシ(代理)するよう動作し、またプライマリネットワークのインスタントメッセージングリクエストをSIP/SIMPLEメッセージにマップ(map)するよう、そしてその逆を行うよう動作する。ある例において、SGW414はSIPスタック(例えばオープンソースのSIPスタックや、商用SIPスタック、または独自仕様のSIPスタック)に依存し、そしてステートフル(stateful)である。ゲートウェイES(GWES:Gateway ES)416はドメイン間(inter−domain)ゲートウェイのリクエスト(主に、IMやプレゼンス)を取り扱うよう動作し;SIPゲートウェイ414と1以上のプライマリネットワークバックエンドサーバを橋渡し(bridge)する;GWES416は、ある例においては、ステートレスであり、高い拡張性を有する。
【0040】
前記アーキテクチャはさらに、プライマリネットワークのバックエンドサーバのためにSIPダイアログのルーティング情報を格納する、セッションマネージャ(SM)442を含む。例えば、各々のレコードは、プライマリネットワーククライアントidと、ゲートウェイidと、ダイアログタイプ(IM、プレゼンス、その他)とをそのキーとし、対応するSIPダイアログを保持する特定のSGWサーバ414を指し示す、SGWキーを含む。セッションマネージャサーバはメモリキャッシュマネジメントシステム内にあり、データ分割やピア・レプリケーション(peer replication)をサポートする。
【0041】
ゲートウェイデータベース(GWDB:gateway DB)440は、外部ユーザのために永続性情報を格納する(例えば、バディリストや他の情報)。ある例においては、永続性ストレージ(persistent storage)としてMySQLサーバが使われる。ある例においては、GWDB440はデータ分割とピア・レプリケーションをサポートするように構成されていて、しかしながら接続をプールする機能のような、shmプロキシ(shmproxy)を欠いている。
【0042】
図4は、外部ネットワークとの通信のための典型的アーキテクチャの、ある実装を説明する;しかしながら、さまざまな他のアーキテクチャが可能である。例えば、さまざまな構成要素を削除して、そして/または それらの機能性を他の構成要素と組み合わせることができる。例えば、GWES416とSGW414の機能を実行するためのロジックを、単独のゲートウェイ機器は含むことができる。さらには、いくつかの例において、エッジ・プロキシ412を取り除くか、もしくはその機能性を他のマシンによって実行することができる。
【0043】
図4を引き続き参照しつつ、図5ではプライマリネットワークへのユーザのログインを説明する。1.1においてユーザのログインがあると、イベントサーバ(ES:event server)420(図4参照)は以下のことを実行する:各々の仲間(バディ)に対して、ES420は彼の/彼女のドメインを識別し、この情報をプレログインデータ(prelogin data)1.3中でクライアントに送信する。さらには、ログイン1.3があると、例えばリバースバディ(reverse buddies)のような外部のユーザ/ウォッチャーに対して通知が送信される(例えば、ESサーバ420からGWES416へ、SGW414へ、そして外部ネットワークへ;2.1−2.2)。一例を挙げれば、ES420はユーザログインについてRBES(ES400内部に含まれて入れもよい)に通知を行い、RBESはクライアントのリバースバディリスト(reverse buddy list)上の外部ユーザ/ウォッチャーを、ドメイン情報を用いて識別し、そしてRBESはGWES416に対して通知を送信する。GWES416はSM442からSGWキーを参照し、外部ウォッチャーをしかるべくソートし、そしてSGW414に通知を送信する。SGW414はメモリキャッシュにおいて外部ウォッチャーのダイアログを参照し、それからSIPのNOTIFYリクエストを、ダイアログを通して、外部ネットワークに送信する。もしSGW414がある外部ウォッチャーに対してのダイアログを見つけられない場合、SGW414は今後の通知を取りやめるために、サブスクライブ解除のリクエストをGWES416に返信する。
【0044】
さらには、クライアントは外部の仲間(バディ)に関するプレゼンス情報のサブスクライブを行う(例えば、ES420からGWES416へ、SGW414へ、そして外部ネットワークへ;3.1−3.5)。一例を挙げれば、ES420はプライマリサービスプロバイダユーザのバディリスト上の外部の仲間(バディ)を、連携ドメイン情報を用いて識別し、GWES416に対してサブスクライブのリクエストを送信する。GWES416はサブスクライブリクエストをSGW414に送信し、そしてそれぞれの仲間(バディ)に対して、SGW414はサブスクリプションのダイアログが既に存在するかどうかをチェックする。もし存在すれば、SGW414はサブスクリプションを再表示するよう、外部ネットワークにリクエストを送信する;もし存在しなければ、SGW414は外部ネットワークの仲間(バディ)に対しての新しいダイアログを作成し、SIPのSUBSCRIBEリクエストを外部ネットワークに送信する。SGW414がokまたはerrorのレスポンスを外部ネットワークから得ると、SGW414は対応するキャッシュしていたダイアログを更新するか削除し、それから前記レスポンスをGWES416に通す。
レスポンスが“ok”であった場合、GWES416はSGWキーをSM442へ保存する。禁じられた(forbidden)errorをもってサブスクリプションが拒絶された場合、そのことは、もはやその外部ユーザが有効ではないことを意味する。GWES416はUDB422とGWDB440から前記外部ユーザを取り除き、プライマリネットワーククライアントに通知を送信することができる。
【0045】
ある例においては、無事にサブスクライブされた外部の仲間(バディ)に関する最初のプレゼンス通知が発行されることができ、そして該プレゼンス通知は、クライアント(例えば、外部のネットワークからSGW414へ、GWES416へ、そしてプライマリネットワーククライアントへ;4.1−4.3)がフィルタ除去できるオフライン通知(offline notification )を含むことができる。例えば、外部のネットワークはSGW414へ通知を送信する。もし対応するダイアログが見つからない場合、SGW414は前記通知を落とし(drop);そうでなければ前記通知をGWES416へ通す。GWES416は前記通知をプライマリ/固有のフォーマットもしくはプロトコルへ変換し、そしてGWES416は目標の接続情報をUM420から得て、前記通知をプライマリネットワーククライアントへ届ける。
【0046】
図6は外部ユーザに関しての典型的ログイン過程を説明する。この例において、外部ユーザによるログインがあると、通知がプライマリネットワークのウォッチャーへ送信される(例えば、外部ネットワークからSGW414へ、GWES416へ、単数または複数のプライマリネットワーククライアントへと送られる;1.1−1.3)。具体的に言うと、外部ネットワークはオンライン通知(online notification)を、各々のプライマリネットワークのウォッチャーに対するSGW414へ、送信する。SGW414は前記プライマリネットワークのウォッチャーついての対応するダイアログを参照し、そしてダイアログが見つからない場合は、SGW414はerrorレスポンスを外部ネットワークに対して送信するであろうし、そして前記通知は届けられないであろう。もしダイアログが見つかれば、SGW414は前記通知をGWES416に転送し、そこにおいてGWES416は前記通知をフィルター(filter)し、変換し、そしてプライマリネットワークのウォッチャーに届ける。
【0047】
外部ユーザはプライマリネットワーククライアントの仲間(バディ)のプレゼンス状態をウォッチするため、サブスクライブすることができる(例えば、外部ネットワークからSGW414へ、GWES416へと流れる:2.1−2.5)。具体的に言うと、外部ネットワークは各々のプライマリネットワークの仲間(バディ)に対するサブスクライブのリクエストを送信する。SGW414はサブスクリプションのためにダイアログを作成し、サブスクライブリクエストをGWES416へ送信する。GWES416はGWDB440を参照し、前記プライマリネットワーククライアントが前記外部ユーザのバディリスト上にあるのかどうかをチェックし、なかった場合には、前記リクエストをバディ追加(Add Buddy)のリクエストと解釈する。もし、前記プライマリネットワークライアントが前記バディリストに存在はするものの承認保留中(pending for approval)であったならば、GWES416はオフライン通知が付随するokレスポンスをSGW414に送信する。もし前記プライマリネットワーククライアントがアクティブな仲間(バディ)であったなら、GWES416は、前記外部ユーザを前記プライマリネットワーククライアントのリバースバディリストに加えるためのリクエストをRBES418に送信し、そしてそれから、プライマリネットワーククライアントの最初のプレゼンス状態をUM420から読み出し、必要ならば該状態を変換し、そしてSGW414に送信する。SGW414がGWES416からokレスポンスを得た場合、SGW414はキャッシュ中のダイアログを更新し、最初のプレゼンス状態の通知に加えて前記レスポンスも、外部ネットワークへ通す。SGW414がGWES416からerrorレスポンスを得た場合、SGW414はキャッシュ内のダイアログを削除し、errorレスポンスを外部ネットワークへ送信する。
【0048】
いくつかの例において、そしていくつかのネットワークバックエンドに対して、一人の外部ユーザが複数の場所からログインする場合には、該ユーザは複数のサブスクライブをプライマリネットワークに対して送信するであろう。そのような例においてSGW414は、外部ユーザidをキーとする複数のダイアログを、そのメモリキャッシュに作成し、そして保存することができる。後にプライマリネットワーククライアントの仲間(バディ)が前記外部ユーザに対してプレゼンス通知を送信する場合、該通知はSGW414に保存された複数のダイアログに対応した、各々の外部の場所へ届けられるであろう。
【0049】
図7と図8はプライマリユーザと外部ユーザそれぞれに対しての典型的ログオフ過程を説明する。プライマリネットワーククライアントがログオフすると、オフライン通知が外部ウォッチャーに対して送信される(例えばES418/RBESからGWES416へ、SGW414へ、そして外部ネットワークへ;1.1−1.3)。さらには、外部の仲間(バディ)のプレゼンスに関するサブスクライブ解除過程が実行される(例えばES418からGWES416へ;2.1−2.2)。例えば、GWES416はSM442からSGWキーを参照し、リクエストを対応するSGWs414へ通す。そして、SGWルートレコードがSM442から取り除かれる。SGWsはサブスクライブ解除リクエストを外部ネットワークに送信し、メモリキャッシュから対応するダイアログを削除する。
【0050】
外部ユーザがログオフすると、オフライン通知がプライマリネットワーククライアントのウォッチャーに対して送信される(例えば外部ネットワークからSGW414へ、GWES416へ、そしてプライマリネットワーククライアントへ;1.1−1.3)。さらには、プライマリネットワーククライアントの仲間(バディ)のプレゼンスに関するサブスクライブ解除過程が実行される(例えば外部ネットワークからSGW414へ、GWES416へ、そしてRBES418へ;2.1−2.2)。SGW414は対応するダイアログを削除し、GWES416に対してサブスクライブ解除リクエストを送信する。GWES416はSM442からSGW414ルート情報(route)を取り除き、そしてプライマリネットワーククライアントの仲間(バディ)の、ウォッチャーリスト(すなわちリバースバディリスト)から前記外部ユーザを取り除く。
【0051】
図9と図10は、プライマリネットワーククライアントと外部ユーザそれぞれが、各々のプレゼンス状態を変化させること、に関連する過程を説明する。ある例において、プライマリネットワーククライアントはそのプレゼンスを変化させ、それによりプレゼンス通知が発行される。RBES418は、どのリバースバディが外部ネットワークからのものであるかを連携ドメイン情報を用いて識別し、GWES416に対して通知を送信する。
プレゼンス通知の変化はそれから、外部ウォッチャーのために外部ネットワークへ送信される。ある例において、GWES416は、プライマリネットワーククライアントの状態を適切な外部の状態にフィルターするか変換する。GWES416はSM442からSGWキーを参照し、SGW414に対して通知を送信する。SGW414は通知を、各々の存在するダイアログに対応する外部ネットワークへ送信する;ダイアログが見つからない場合、SGW414は今後の通知を取りやめるために、サブスクライブ解除のリクエストをGWES416に返信する。ある例においては、プライマリネットワーククライアントの状態と外部の状態の一致が得られない場合には、前記通知はGWES416によって、フィルタ除去される(落とされる)。
【0052】
もし外部ユーザがプレゼンス状態を変化させると、SGW414は対応するダイアログを探索する(そしてダイアログが見つからない場合には、外部ネットワークに対してerrorレスポンスを送信することができる。)SGW414は通知をGWES416へ通し、そしてGWES416はプライマリネットワーククライアントのために、該プレゼンス通知を対応する状態(matching state)に変換する。プライマリネットワークは必要ならば、対応しない状態(non−matching state)を、カスタムメッセージ(custom message)を用いて固有の状態へと変換することができる。GWES416は目標の接続情報をUM420から得て、前記通知を適切なプライマリネットワーククライアントへ届ける。
【0053】
図11と図12は、異なるプロバイダのユーザからのプレゼンスサブスクリプションを打ち切る(terminate)ユーザに関しての典型的処理を説明する。例えば、図11においてプライマリネットワーククライアントは外部ユーザからのプレゼンスサブスクライブを打ち切る(スパム(spam)抑制や同類のもののために望ましいかもしれない)。打ち切るための前記クライアントのリクエストはGWES416によって取り扱われ、GWES416は外部ユーザのサブスクライブを打ち切るためのリクエストを行う。GWES416は外部ユーザのバディリストをGWDB440から得て、そしてGWES416は、各々のプライマリネットワーククライアントの仲間(バディ)についてのリバースバディリストから外部ユーザを取り除くために、RBESにリクエストを送信する。
【0054】
打ち切りのリクエストはそれから外部ユーザへ送信される(例えば、GWES416からSGW414へ、そして外部ユーザへ)。ある例において、GWES416はSM442からSGWキーを参照し、SGW414に対して打ち切りのリクエストを送信する。GWES416はSM442からSGWルートレコードを取り除き、SGW414はそのメモリキャッシュにおけるダイアログを片付け、そして外部ネットワークに対して打ち切りのリクエストを送信する。前記外部ネットワークはオフライン通知を外部ユーザへ送信し、そして前記外部ネットワークはそのサブスクリプションレコードを適切に更新する。GWES416はその打ち切りログ(termination log)に、前記リクエストを記録する。
【0055】
さらには、図12に示すように、外部ネットワークが固有のユーザからのプレゼンスサブスクライブを打ち切ることができる。一例を挙げると、SGW414はプライマリネットワーククライアントにおける外部ユーザのプレゼンスに対してのサブスクライブを打ち切るためのリクエストを受信する。SGW414はそのメモリキャッシュにおけるダイアログを片付け、そしてGWES416に対して打ち切りのリクエストを送信する。GWES416はSM442からルートレコードを取り除き、そしてGWES416はプライマリネットワーククライアントに対してオフライン通知を送信する。もし外部ユーザが既に前記プライマリネットワーククライアントに対してオフラインに見えている場合、前記プライマリネットワーククライアントは前記通知をフィルターするかどうか決めることができる。
【0056】
図13と図14は、外部ユーザの仲間(バディ)を追加する固有のユーザに関しての典型的処理を説明する。最初の例である図13において、プライマリネットワーククライアントは外部ユーザを仲間(バディ)として追加するようリクエストする(例えば、そのバディリストへの追加等)。外部ネットワークより、最初のオフライン通知、2.1−2.3(前記クライアントによるバディ追加リクエストを誘因としたサブスクライブへの確認として)があり、その後に、オンライン通知、3.1−3.3が続く(この過程は、前記外部ユーザがプライマリネットワーククライアントによるバディ追加リクエストに同意したと仮定している)。
【0057】
詳細には、プライマリネットワーククライアントが外部ユーザを追加するようリクエストするとき、ES418は該外部ユーザを、UDBとUM420とにおけるプライマリネットワーククライアントのバディリストに追加し、それから、新しい仲間(バディ)が外部ユーザであるので該リクエストをGWES416に通す。GWES416はそれから、外部ユーザのプレゼンスについてサブスクライブするために(プライマリネットワーククライアントが外部ユーザを仲間(バディ)として追加するようリクエストしている場合においてである)、SGW414に対して、それから外部ネットワークに対してその情報を通す。SGW414が外部ネットワークからokレスポンスを得た場合、SGW414はメモリキャッシュにダイアログを保存し、該レスポンスをGWES416へ通す。GWES416はSM442にルートレコードを追加し、そして前記プライマリネットワーククライアントに対してokレスポンスを送信する。もし、SGW414が、外部idが無効であることを示すerrorレスポンスを外部ネットワークより得た場合、SGW414は対応するダイアログを削除し、GWES416に対してerrorレスポンスを送信する。GWES416はUDBとUM420とにおける前記プライマリネットワーククライアントのバディリストから前記外部ユーザを取り除き、そして前記プライマリネットワーククライアントに対してerrorレスポンスを送信する。
【0058】
外部ネットワークより、最初にオフライン通知が、送信されたサブスクライブリクエストへの確認として送信される(例えば、SGW414からGWES416へ、そして前記外部ユーザがオフラインであった前記プライマリネットワーククライアントへ)。前記プライマリネットワーククライアントは、前記最初のオフライン通知を落とすどうか決めることができる。最終的に、外部ネットワークからの、ユーザがオンラインであるというオンライン通知(前記外部ユーザが前記バディ追加リクエストに同意したと仮定している)。
【0059】
一例を挙げると、前記外部ネットワークからの前記サブスクリプションリクエストに対するokレスポンスを得た直後に、前記外部ユーザがプライマリネットワーククライアントのバディリストへ追加される。この例での特定の構成においては、前記外部ユーザが前記追加のリクエストをいつ容認/拒否したかを検出する必要がないために、保留状態(pending state)は存在しない。
【0060】
図14は前記外部ユーザが追加を拒否する場合の例を説明する。その処理/イベントフローは図13のそれにおいてイベントの最後の一組3.1−3.3が欠けている場合とよく似ている(例えば、外部ユーザが追加を容認することが欠けている)。
【0061】
図15と図16は、プライマリネットワーククライアントを、仲間(バディ)として外部ユーザに対して追加するための典型的処理を説明する。一般に、前記外部ユーザは前記プライマリネットワーククライアントを仲間(バディ)として追加するようリクエストし、そして前記プライマリネットワーククライアントは該追加のリクエストに同意する。
【0062】
より詳細には、前記外部ユーザは前記プライマリネットワーククライアントを仲間(バディ)として追加することを、前記プライマリネットワーククライアントのプレゼンスに対してサブスクライブすることによりリクエストする(1.1)。SGW414はサブスクライブリクエストをGWES416に送信し、GWES416はGWDB440を参照し、前記プライマリネットワーククライアントは前記外部ユーザのバディリスト上にないことから、このリクエストが仲間(バディ)を追加することを意味含んでいると検出する。GWES416はUDB420を参照し、前記プライマリネットワーククライアントのidが有効かどうかチェックする。もし有効でなければ、SGW414を通して外部ネットワークにerrorレスポンスを送信する。もし前記プライマリネットワークidが有効であれば、GWES416はSGW414に対してokレスポンスを送信する。SGW414はキャッシュにダイアログを作成し、okレスポンスを前記外部ネットワークに通す。一例を挙げると、前記外部ユーザは、前記プライマリネットワーククライアントがオフラインであると通知される(例えば、GWES416からSGW414へ、そして外部ネットワークへ)。GWES416はSM442にルートレコードを追加し、そしてGWES416はGWDB440において前記外部ユーザのバディリストに前記プライマリネットワーククライアントを、保留状態で追加する。最終的に(例えばGWES416を通してCS420へ、そして前記プライマリネットワーククライアントへ)、前記プライマリネットワーククライアントに対して、同意することが要求される。
【0063】
前記プライマリネットワーククライアントが追加のリクエストに同意した場合、ES418はバディ追加同意リクエスト(add buddy approval request)をGWES416に送信する。GWES416はGWDB440において、前記プライマリネットワーククライアントの仲間(バディ)の状態を、保留からアクティブに変更する。GWES416は、外部ユーザを前記プライマリネットワーククライアントのリバースバディリストに追加するために、RBES418に対して更新リクエストを送信する。GWES416はUM420からプライマリネットワーククライアントのオンライン状態を得て、それを外部の状態に変換する。前記プライマリネットワーククライアントのオンラインプレゼンス通知は、前記外部ユーザに送信される(例えば、GWES416を通してSGW414に、そして前記外部ネットワークとユーザに)。
【0064】
GWDB440において、各々のバディレコードはある状態(例えば、アクティブ、保留、拒否された)と、タイムスタンプを含む。前記状態は、例えばバディ追加フローを管理すること等のさまざまな目的のために使用でき、前記タイムスタンプは、プライマリネットワーククライアントを外部ネットワークからの過剰なSUBSCRIBEより保護するために使用でき、そしてまたごみ収集(garbage collection)のためにも使用できる。
【0065】
図15は、前記プライマリネットワーククライアントが追加リクエストを拒否する場合の例を説明する。その処理/イベントフローは図14のそれにおいてイベントの最後の一組2.2−2.4が欠けている場合とよく似ている。さらに、イベント2.1は、GWDB440における前記外部ユーザのバディリスト上での前記プライマリネットワーククライアントの状態を“保留”から“拒否された”に変更する。いくつかの例においては、前記外部ネットワークは前記外部ユーザに拒否のイベントを通知しないであろう。しかしながら前記外部ユーザがログインしなおす度の、毎回のサブスクライブリクエストを避けるために、前記プライマリネットワークは前記拒否されたリクエストに関連して拒否された状態を維持することができる。拒否された状態のバディレコードは、一定時間間隔の後にごみとして収集されることができる。
【0066】
図17と図18は、外部ネットワークサービスプロバイダからの仲間(バディ)を削除するための典型的処理を説明する。図17において、プライマリネットワーククライアントは外部の仲間(バディ)を削除する。この例において、GWES416は前記外部のユーザが前記プライマリネットワーククライアントの仲間(バディ)であることを認証し、そしてGWES416はUDBとUM420における前記プライマリネットワーククライアントのバディリストから前記外部ユーザを取り除く。前記プライマリネットワーククライアントにはそれから、前記削除のリクエストへのレスポンスが通知される(例えばGWES416からCS420へ、そして前記プライマリネットワーククライアントへ、okやerror等が通知される)。さらには、GWES416は、前記外部ユーザのプレゼンスをサブスクライブ解除し、そしてダイアログとルートレコードを片付けるため、SGW414と(そして外部ネットワークと)通信する。
【0067】
図18においては、バディリストからプライマリネットワーククライアントを削除する、外部ユーザが示されている。この例において、前記外部ユーザは前記プライマリネットワーククライアントのプレゼンスをサブスクライブ解除する。SGW414はダイアログを片付け、そしてSGW414はGWES416に対してサブスクライブ解除のリクエストを送信する。GWES416はSGW414へのルートをSM442から取り除く。さらに、GWES416は、プライマリネットワーククライアントのリバースバディリストから前記外部ユーザを取り除く。
【0068】
図19はプライマリネットワーククライアントと外部ユーザの間でIMセッションを開始するための典型的過程を説明する。この例において、前記プライマリネットワーククライアントは、外部ユーザとのIMセッションを始めることをリクエストするためにプライマリネットワーククライアントを使って(例えば、プライマリネットワーククライアントからのリクエストがES418からGWES416へ通信される)、IMセッションを開始する。GWES416は、その新しいセッションを認証する。一例を挙げると、システムは前記プライマリネットワーククライアントがIMベースのセッションをサポートしていないのかどうかをチェックし、もしそうであるなら、クライアントにerror返答を送信し、そうでなければSGW414に対してIMセッション開始のリクエストを送信する。もしIMセッションのダイアログが既に存在するならば、GWES416にokの返答をし;そうでなければ、外部ネットワークに対してSIPのINVITEリクエストを送信する。
【0069】
SGW414は前記外部ネットワークからのレスポンスを得て、もし該レスポンスがokならば、セッションダイアログはキャッシュに保存され、そうでない場合にはダイアログは削除される。SGW414はさらに、レスポンスをGWES416へ送信する。GWES416はSGW414からレスポンスを得る;もしレスポンスがokならば、SGW414ルートレコードをSMに保存し、そして該レスポンスをプライマリネットワーククライアントに通す。この時点で、前記プライマリネットワーククライアントはIM通信を送ることができる。
【0070】
プライマリネットワーククライアントが、IMベースのセッションをサポートしないクライアントを使ってIMセッションを開始する例においての過程は、以下の通りである。
前記プライマリネットワーククライアントは、ES418に対して最初のIMを送信する。ES418は外部ユーザとしての受信者を識別し(連携ドメイン情報や同類のものを使って)、リクエストをGWES416へ転送する。GWES416はSM442を参照し、そして前記の送信者と受信者に対してのIMセッションが未だ存在しないと決定し、それゆえ新しいセッションの認証へと続行する(例えば、このケースにおいてはYPCの未成年チェックなど)。もし認証に失敗すると、前記プライマリネットワーククライアントに対してerrorが送信され、そうでなければ最初のIMがSGW414に送信される。SGW414はキャッシュを参照して未だセッションが存在しないことを発見し、それから前記IMをキャッシュに格納しSIPのINVITEリクエストを外部ユーザに送信する。SGW414は外部ユーザからのレスポンスを得る;セッションが容認された場合には、SGW414はキャッシュ中のダイアログを更新し、そしてIMを外部に流し出すのであり、もしセッションが拒絶された場合には、SGW414は最初のダイアログをキャッシュから削除し、キャッシュされたIMを落とし、そしてGWES416に対してレスポンスを送信する。GWES416はSGW414から、前記セッションが容認されたかどうかのレスポンスを得、そしてSGW414はSM442においてルートを保存する。
【0071】
図19においてはまた、外部ユーザがプライマリネットワーククライアントとのIMセッションを開始する場合の例が示されている。外部ネットワークはSGW414に対して、SIPのINVITEを送信する。もし、その送信者と受信者についてのIMダイアログが既に存在する場合は(例えば、マルチで(multiple)外部ネットワーククライアントが実行されている場合)、SGW414は過去のセッションを終了するために外部ユーザに対してSIPのBYEを送信し、それからキャッシュに新しいセッションのダイアログを保存する。SGW414はGWES416に対してIM開始のリクエストを送信し、そしてGWES416は前記新しいセッションを認証する。例えば、GWES416はプライマリネットワーククライアントのidが有効かどうかチェックし、YPC制限に関してチェックを行い、そしてプライマリネットワーククライアントの(受信者の)無視リスト(ignore list)をチェックする。認証がokならば、GWESはSMにSGWキーを保存し、SGW414に対してokの返答をする;そうでなければ、SGW414に対してerrorを送信する。SGW414はGWES416からのレスポンスをチェックし、それに応じて最初のダイアログを更新するか削除する。SGW414はそれから、外部ネットワークに対してokまたはerrorのレスポンスを送信する。
【0072】
図20は、プライマリネットワーククライアントと外部ユーザとの間でのタイピング通知についての典型的イベントフローを説明する。IMセッションが確立された後には、IMとタイピング通知のリクエストが交換され得る。プライマリネットワークより外部ネットワークへと来るリクエストに対しては、GWES416がSMからSGWキーを参照し、それから対応するSGW414サーバに対してリクエストを送信し、該SGW414サーバは該リクエストを外部ネットワークへ転送する。外部ネットワークよりプライマリネットワークへと来るリクエストに対しては、SGW414がキャッシュにおいて対応するダイアログを参照する;もしダイアログが見つからない場合、該リクエストは落とされるであろうし;そうでなければ、該リクエストはGWES416に対して送信されるであろう(GWES416はそれから、該リクエストを適切なプライマリネットワーククライアントへ届ける)。
【0073】
図21は、プライマリネットワークと外部ユーザとの間でのIMセッションの終了についてのイベントフローを説明する。プライマリネットワーククライアントがIMセッションを打ち切る場合、打ち切りのリクエストがES418を通してGWES416へ、IMセッションを終了させるために伝播される。GWES416がSM442からSGWキーを参照し、SGW414に対して前記リクエストを送信し、そしてSM442からSGWルートレコードを削除する。SGW414はキャッシュからダイアログを削除し、外部ユーザに対してSIPのBYEを、セッションを終了させるために送信する。
【0074】
外部ユーザがIMセッションを終了させる場合、該外部ユーザはSGW414に対してSIPのBYEを送信する。SGW414はキャッシュからダイアログを削除し、GWES416に対してIMセッション終了のリクエストを送信する。GWES416はSMにおけるSGWルートレコードを削除する。さらに、GWES416はプライマリネットワーククライアントに対して、IMセッション終了のリクエストを送信することができる。
【0075】
図22は、本発明のさまざまの態様のための処理機能を実施するために採用されうる、典型的なコンピューティング・システム600を説明する(例えば、ゲートウェイサーバやマシンとして)。当業者はまた、他のコンピュータ・システムやアーキテクチャを用いて本発明を実施する方法にも気付くであろう。コンピューティング・システム600は、与えられた応用または環境に対して望ましいかもしくは適切となるように、例えばデスクトップ、大型汎用コンピュータ(メインフレーム)、サーバ、クライアント、または任意の他の種類の特定用途向けまたは汎用コンピュータ機器を表すことができる。コンピューティング・システム600は、例えばプロセッサ604のような1以上のプロセッサを含むことができる。プロセッサ604は、汎用もしくは特定用途の処理エンジン(例えば、マイクロプロセッサや、マイクロコントローラなど)、または他の制御ロジックを使って実装することができる。この例においてプロセッサ604は、バス602、または他の通信媒体に接続されている。
【0076】
コンピューティング・システム600はまた、情報と、プロセッサ604により実行される命令を格納するためにメインメモリ608(好ましくはランダム・アクセス・メモリ(RAM)もしくは他の動的メモリ)を含むことができる。メインメモリ608はまた、プロセッサ604により実行される命令の実行途中における一時的変数や他の中間情報を格納するために用いることもできる。コンピューティング・システム600は同じく、静的情報やプロセッサ604のための命令を格納するために、リード・オンリー・メモリ(ROM)もしくは他の、バス602に連結された静的記憶装置を含むことができる。
【0077】
コンピューティング・システム600はまた、例えばメディアドライブ612とリムーバブル記憶装置インターフェース620を含む記憶装置610を、含むことができる。前記メディアドライブ612は、固定もしくはリムーバブルな記憶メディアをサポートするドライブもしくは他の機構(例えばハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、磁気テープドライブ、光ディスクドライブ、CDまたはDVDドライブ(RまたはRW)、もしくは他の、リムーバブルな、もしくは固定のメディアドライブなど)を含むことができる。記憶メディア618は、例えば、ハードディスク、フロッピー(登録商標)ディスク、磁気テープ、光ディスク、CDまたはDVD、または他の固定もしくはリムーバブルな、メディアドライブ614によって読み書きされるメディアを含むことができる。これらの例が説明するように、記憶メディア618は、特定のコンピュータソフトウェアやデータを記憶した、コンピュータ読み取り可能な記憶メディアを含むことができる。
【0078】
代替的実施例において、記憶装置610は、コンピュータプログラム、もしくは他の命令、またはデータをコンピューティング・システム600に読み込ませることを可能とするための、別の類似手段を含むことができる。そのような手段は、例えばプログラムカートリッジとカートリッジインターフェースや、リムーバブルメモリ(例えば、フラッシュメモリまたは他のリムーバブルなメモリモジュール)とメモリスロットや、そして他の、ソフトウェアとデータがリムーバブル記憶ユニット618からコンピューティング・システム600へ転送されることを可能とする、リムーバブル記憶ユニット622とインターフェース620等の、リムーバブル記憶ユニット622とインターフェース620を含むことができる。
【0079】
コンピューティング・システム600はまた、通信インターフェース624を含むことができる。通信インターフェース624は、ソフトウェアとデータがコンピューティング・システム600と外部機器との間で転送されることを可能とするために、使用されうる。通信インターフェース624の例としては、モデム、ネットワークインターフェース(イーサネット(登録商標)、もしくは他のNICカード等)、通信ポート(例えばUSBポートのような)、PCMCIAスロット及びカード等を含むことができる。通信インターフェース624を通して転送されるソフトウェアとデータは、電子的、電磁気的、光学的、もしくは他の、通信インターフェース624により受信可能な信号の形をとる。これらの信号はチャンネル628を通して、通信インターフェース624に提供される。このチャンネル628は、無線媒体、ワイヤーまたはケーブル、光ファイバー、もしくは他の通信媒体を用いて信号を運ぶことができ、実装されることができる。いくつかのチャンネルの例として、電話線、携帯電話リンク、ラジオ周波数(RF)リンク、ネットワークインターフェース、ローカルエリア・ネットワークまたは広域ネットワーク、そして他の通信チャンネルが含まれる。
【0080】
本文書において、“コンピュータプログラム製品”(computer program product)と“コンピュータ読み取り可能な媒体”(computer− readable medium)という用語は一般的に、例えばメモリ608、記憶メディア618、記憶ユニット622、もしくはチャンネル628における単数または複数の信号、のようなメディアに言及するために使用されうる。これらの、そして他の形のコンピュータ読み取り可能な媒体は、実行されるべき、プロセッサ604への、1以上の命令からなる1以上の命令の配列を提供することに関係しうる。そのような命令は、一般的に“コンピュータプログラムコード”(computer program code)と呼ばれるのであり(コンピュータプログラムの形式によって、もしくは他のグループ分けによって分類されうる)、実行されることで、コンピューティング・システム600が本発明の実施例における特徴を発揮すること、または機能を果たすことを可能とする。
【0081】
ソフトウェアを用いて要素群が実行されるような一実施例において、該ソフトウェアはコンピュータ読み取り可能な媒体に格納されることができ、そして、例えばリムーバブル記憶ドライブ614、ドライブ612、または通信インターフェース624を用いて、コンピューティング・システム600に読み込まれることができる。制御ロジック(この例においては、ソフトウェアの命令もしくはコンピュータプログラムコード)がプロセッサ604によって実行されると、該制御ロジックはプロセッサ604に、ここで説明されている本発明の機能を発揮させる。
【0082】
上記記述が、目的を明確にするため異なった機能ユニットやプロセッサに関連した本発明の実施例を説明してきたということは、評価されることではあろう。しかしながら、種々の機能ユニット、プロセッサまたはドメイン間における任意の適正な機能配置が、本発明を損なうことなく使用されうるということが明らかになるであろう。例えば、分離されたプロセッサ、または制御装置により実行されるように説明された機能は、同一のプロセッサ、または制御装置により実行することが可能である。よって、特定の機能ユニットに対しての言及は、厳密に、ある論理的または物理的な構造、及び組織を示しているというより、むしろ単に、説明される機能を提供するために適した方法の参考とみなされる。
【0083】
本発明はいくつかの実施例に関連して説明されてきたのではあるが、本発明はここで説明された特定の形式に限定されることを意図されているものではない。むしろ、本発明の範囲は請求の範囲によってのみ、制限されるものである。さらに言えば、一つの特徴が特定の実施例に関連して現れ、説明されたとしても、当業者は、説明された実施例のさまざま特徴が、本発明に従って結び付けられることに気付くであろう。
【0084】
さらに言えば、個別に挙げられた複数の方法、要素もしくは手法の段階であっても、例えば、単一のユニットやプロセッサによって実行されうる。
さらには、個々の特徴が別々の請求項に含まれうるのではあるが、これらは場合によっては、有利に結び付けられることができるし、そしてまた、別々の請求項に含まれているからと言って、特徴を結合することが実現可能でない そして/または 有利ではないということを、意味含むものではない。また、一つの請求項のカテゴリに特徴が含まれることはそのカテゴリへの制限を意味含むものではなく、むしろ必要に応じて、その特徴は、等しく他の請求項カテゴリに適用可能であってもよい。
【0085】
本発明はいくつかの実施例に関連して説明されてきたのではあるが、本発明は、ここで説明された特定の形式に制限されることを意図されているものではない。むしろ、本発明の範囲は請求の範囲によってのみ、制限されるものである。さらに言えば、一つの特徴が特定の実施例に関連して現れ、説明されたとしても、当業者は、説明された実施例のさまざま特徴が、本発明に従って結び付けられることに気付くであろう。さらには、ある実施例に関連して説明された本発明の態様は、発明として単独で成立しうるものである。
【0086】
さらには、当業者によって、本発明の精神と範囲から逸脱することなくさまざまの改良と交代がなされうることが、評価されるであろう。本発明は前述の実例的な詳細によって制限されるべきものではなく、請求の範囲に従って定義されるべきものである。
【特許請求の範囲】
【請求項1】
異なるインスタントメッセージングサービスプロバイダネットワークのクライアント間におけるインスタントメッセージング通信を容易にするための装置であって、前記装置は、
外部のインスタントメッセージングサービスプロバイダネットワークにおけるインスタントメッセージングサービスに関する通信を受信するためのインターフェースロジックと、
受信された通信を第2のプロトコルから受信サービスプロバイダネットワークに固有なプライマリプロトコルへ変換するための変換ロジックと、
を含む装置。
【請求項2】
前記受信された通信は、前記外部のインスタントメッセージングサービスプロバイダネットワークから受信される、請求項1に記載の装置。
【請求項3】
前記受信された通信は、前記外部のインスタントメッセージングサービスプロバイダネットワークのクライアントから発せられ、前記外部のインスタントメッセージングサービスプロバイダネットワークを通して前記インターフェースロジックへ送られる、請求項1に記載の装置。
【請求項4】
前記受信された通信は、サブスクライブのリクエストと、招待のリクエストと、サブスクライブ解除のリクエストと、より成るグループからの少なくとも一つの通信を含む、請求項1に記載の装置。
【請求項5】
前記インターフェースロジックは、更に、通信を前記外部のインスタントメッセージングサービスプロバイダに送信するためのインターフェースロジックであり、そして前記変換ロジックは、更に、該通信を前記プライマリプロトコルから前記第2のプロトコルへ変換するための変換ロジックである、請求項1に記載の装置。
【請求項6】
送信される通信は、ウォッチャーへの通知と、サブスクライブのリクエストと、招待のリクエストと、サブスクライブ解除のリクエストと、より成るグループのうちの少なくとも一つを含む、請求項5に記載の装置。
【請求項7】
前記インターフェースロジックと変換ロジックは、ゲートウェイイベントサーバに含まれている、請求項1に記載の装置。
【請求項8】
前記受信された通信に関連するランタイムダイアログの状態を格納するために動作可能なセッションマネージャを更に含む、請求項1に記載の装置。
【請求項9】
前記受信された通信を処理するための接続マネージャであって、エンドポイントプレゼントダイアログマネージャを含む接続マネージャ、を更に含む、請求項1に記載の装置。
【請求項10】
前記第2のプロトコルは、SIP/SIMPLEプロトコルを含む、請求項1に記載の装置。
【請求項11】
異なるインスタントメッセージングサービスプロバイダネットワークのクライアント間におけるインスタントメッセージング通信を容易にするための装置であって、前記装置は、
受信されたインスタントメッセージング通信を、プライマリインスタントメッセージングサービスプロバイダネットワークに関連するプライマリプロトコルへ変換するための変換ロジックであって、該受信された通信は、外部のインスタントメッセージングサービスプロバイダネットワークに関する変換ロジック、
を含む装置。
【請求項12】
前記通信は、前記プライマリインスタントメッセージングサービスプロバイダネットワークのクライアントに向けられる、請求項11に記載の装置。
【請求項13】
前記プライマリプロトコルは、前記外部のインスタントメッセージングサービスプロバイダネットワークのプロトコルとは異なる、請求項11に記載の装置。
【請求項1】
異なるインスタントメッセージングサービスプロバイダネットワークのクライアント間におけるインスタントメッセージング通信を容易にするための装置であって、前記装置は、
外部のインスタントメッセージングサービスプロバイダネットワークにおけるインスタントメッセージングサービスに関する通信を受信するためのインターフェースロジックと、
受信された通信を第2のプロトコルから受信サービスプロバイダネットワークに固有なプライマリプロトコルへ変換するための変換ロジックと、
を含む装置。
【請求項2】
前記受信された通信は、前記外部のインスタントメッセージングサービスプロバイダネットワークから受信される、請求項1に記載の装置。
【請求項3】
前記受信された通信は、前記外部のインスタントメッセージングサービスプロバイダネットワークのクライアントから発せられ、前記外部のインスタントメッセージングサービスプロバイダネットワークを通して前記インターフェースロジックへ送られる、請求項1に記載の装置。
【請求項4】
前記受信された通信は、サブスクライブのリクエストと、招待のリクエストと、サブスクライブ解除のリクエストと、より成るグループからの少なくとも一つの通信を含む、請求項1に記載の装置。
【請求項5】
前記インターフェースロジックは、更に、通信を前記外部のインスタントメッセージングサービスプロバイダに送信するためのインターフェースロジックであり、そして前記変換ロジックは、更に、該通信を前記プライマリプロトコルから前記第2のプロトコルへ変換するための変換ロジックである、請求項1に記載の装置。
【請求項6】
送信される通信は、ウォッチャーへの通知と、サブスクライブのリクエストと、招待のリクエストと、サブスクライブ解除のリクエストと、より成るグループのうちの少なくとも一つを含む、請求項5に記載の装置。
【請求項7】
前記インターフェースロジックと変換ロジックは、ゲートウェイイベントサーバに含まれている、請求項1に記載の装置。
【請求項8】
前記受信された通信に関連するランタイムダイアログの状態を格納するために動作可能なセッションマネージャを更に含む、請求項1に記載の装置。
【請求項9】
前記受信された通信を処理するための接続マネージャであって、エンドポイントプレゼントダイアログマネージャを含む接続マネージャ、を更に含む、請求項1に記載の装置。
【請求項10】
前記第2のプロトコルは、SIP/SIMPLEプロトコルを含む、請求項1に記載の装置。
【請求項11】
異なるインスタントメッセージングサービスプロバイダネットワークのクライアント間におけるインスタントメッセージング通信を容易にするための装置であって、前記装置は、
受信されたインスタントメッセージング通信を、プライマリインスタントメッセージングサービスプロバイダネットワークに関連するプライマリプロトコルへ変換するための変換ロジックであって、該受信された通信は、外部のインスタントメッセージングサービスプロバイダネットワークに関する変換ロジック、
を含む装置。
【請求項12】
前記通信は、前記プライマリインスタントメッセージングサービスプロバイダネットワークのクライアントに向けられる、請求項11に記載の装置。
【請求項13】
前記プライマリプロトコルは、前記外部のインスタントメッセージングサービスプロバイダネットワークのプロトコルとは異なる、請求項11に記載の装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2012−190490(P2012−190490A)
【公開日】平成24年10月4日(2012.10.4)
【国際特許分類】
【出願番号】特願2012−144745(P2012−144745)
【出願日】平成24年6月27日(2012.6.27)
【分割の表示】特願2008−534634(P2008−534634)の分割
【原出願日】平成18年10月3日(2006.10.3)
【出願人】(501438485)ヤフー! インコーポレイテッド (200)
【Fターム(参考)】
【公開日】平成24年10月4日(2012.10.4)
【国際特許分類】
【出願日】平成24年6月27日(2012.6.27)
【分割の表示】特願2008−534634(P2008−534634)の分割
【原出願日】平成18年10月3日(2006.10.3)
【出願人】(501438485)ヤフー! インコーポレイテッド (200)
【Fターム(参考)】
[ Back to top ]