(58)【調査した分野】(Int.Cl.,DB名)
前記コンテンツがターゲットの指示であるかどうかを判定することが、ブラウザについてホバーされているデータを受領し、国コードを判別し、前記データおよび前記国コードを電話番号認識関数に提供し、前記ブラウザに前記ブラウザにおいて前記データを強調表示するよう命令し、ユーザが前記強調表示されたデータをクリックできることを示すようツールチップを提供することを含み、
自動的に前記音声接続を確立する段階は、VOIPで電話をかけるよう通信アプリケーションに命令することを含む、
請求項1記載の方法。
一つまたは複数のプロセッサと、前記一つまたは複数のプロセッサに結合されたメモリとを有するコンピューティングデバイスであって、前記メモリは、前記一つまたは複数のプロセッサによって実行されたときに前記一つまたは複数のプロセッサに方法を実行させる命令を記憶しており、前記方法は:
表示されている文書内のある位置にポインティングデバイスがホバーしているときにホバーイベントを生成する段階と、
前記ホバーイベントに応答して、前記ポインティングデバイスの前記位置から所定の短い距離内のコンテンツのサブセットを解析して前記コンテンツの前記サブセットが電話番号の識別情報を含むかどうかを判定する段階と、
前記コンテンツの前記サブセットが前記電話番号の指示を含むと判定することに応答して、前記コンテンツの前記サブセットを識別する段階であって、識別は、前記コンテンツの前記サブセットを電話をかけるための選択可能な項目にし、前記電話番号を強調表示することを含む、段階と、
前記ポインティングデバイスから前記選択可能な項目の選択を受領すると、電話番号ターゲットの前記指示およびユーザインタフェースを使ってデータネットワークを通じた音声接続を確立する段階とを含む、
コンピューティングデバイス。
前記一つまたは複数のプロセッサが、前記特定の正規化済みパターンに関連付けられた前記生パターンのうちの前記一つを用いてVOIP通信プログラムを実行することによって音声接続を確立させる、請求項17記載のコンピューティングデバイス。
前記ターゲットの前記指示は電話番号であり、前記判定することに応答して前記ターゲットの前記指示を識別することが、APIを介して前記ターゲットの前記指示を識別するようブラウザに命令することを含む、請求項1記載の方法。
【発明を実施するための形態】
【0011】
本明細書に述べる技術は、ユーザがユーザインタフェースのコンテンツ内にある電話番号の上でホバーすること、および/またはこの電話番号を選択することに応答して、音声接続を自動化することにより、通信システムの使用を容易にする。
【0012】
ユーザがウェブページ(または他のインタフェース)上の電話番号(または音声通信のターゲットを示す他の指示)の上でホバーすると、電話番号は強調表示され、強調表示された番号を使用して電話をかける機会がユーザに提供される。ユーザが強調表示された電話番号をクリック(または他の方法で選択)すると、電話番号は、この電話番号を使用して電話をかけることのできるVOIPアプリケーション(または他の通信アプリケーション)に自動的に提供される。ユーザが、強調表示された電話番号をクリックせずに離れた場合、強調表示は消える。
【0013】
代替実施形態では、ユーザは、ウェブページ(または他のインタフェース)中のテキストを選択することができ、選択したテキスト中に電話番号がある場合、この電話番号は自動的に、電話をかけるのを容易にするためにVOIPアプリケーションに提供されるものとすることができる。いくつかの実施形態では、システムは、コンテンツ中で電話番号を見つけて、これらの電話番号を、前述の挙動を可能にするためのハイパーリンクで置き換える。
【0014】
図1は、本明細書に述べるように電話呼の開始を自動化することのできる、ネットワークを介した通信(例えばVOIP)を可能にするシステムの一実施形態を示すブロック図である。
図1には、クライアントコンピューティングデバイス10がインターネット12と通信するのを示す。クライアントコンピューティングデバイス10は、パーソナルコンピュータ、ノートブックコンピュータ、ハンドヘルドデバイス、携帯電話機などを含めた、任意の適したコンピューティングデバイスとすることができる。クライアントコンピューティングデバイス10は、インターネット12を介した通信を可能にするためのソフトウェアおよび/またはハードウェアを備える。例えば、クライアントコンピューティングデバイスは、ネットワークインタフェースを介して通信するVOIPソフトウェアアプリケーションを備えることができる。
【0015】
図1にはまた、コンピューティングデバイス14がインターネット12(または他の手段)を介してインタフェース16と通信するのも示す。インタフェース16もまた、直接通信リンク、インターネット12、または別の手段を介して、電話網18と通信する。コンピューティングデバイス14は、他のコンピューティングデバイスと通信することのできる任意のタイプのコンピューティングデバイスとすることができる。電話網18は、周知のレガシー電話網および/またはセルラー電話網を含む。インタフェース16は、レガシー電話網18とインターネット12のデータネットワークとの間のインタフェースを提供するハードウェアおよびソフトウェアを備える。例えば、インタフェース16は、インターネット12を介してVOIP通信を受信して、これらの通信をレガシー電話網18に転送すること、ならびに、インターネット12を介して音声通信を電話網18からVOIP通信に転送することを行う、1つまたは複数のコンピュータとすることができる。クライアントコンピューティングデバイス10のユーザが、VOIP技術を使用して、コンピューティングデバイス14上の別のユーザに、あるいは電話網18上の従来型またはワイヤレス電話機のユーザに電話をかけることが企図される。他の実施形態では、電話をかけるユーザは、クライアントコンピューティングデバイス10ではなく、アダプタ付き電話機を使用していてもよい。
【0016】
図2は、クライアントコンピューティングデバイス10上にある様々なコンポーネントを示すブロック図である。一実施形態では、コンピューティングデバイス10は、ブラウザ30(例えば、本件特許出願人によるInternet Explorerまたは別のブラウザ)、およびソフトフォン(SoftPhone)40を備える。一実施形態では、ソフトフォン40は、VOIPを実施することのできるソフトウェアアプリケーションである。他の実施形態では、ソフトフォン40は、音声接続、または音声通信を含む他のタイプの接続を確立するのに使用することのできる他の通信プロトコルを実施することになる。ソフトフォン40は、インスタントメッセージング、電子メール、ファイル共有、および他のサービスを含む通信アプリケーションの一部とすることができる。
【0017】
ブラウザ30は、プラグイン32、URLモニカ(moniker)34、およびライブコール(LiveCall)ハンドラ36を備える。プラグイン32は、ブラウザによってロードされ、ブラウザ中で稼動しているソフトウェアモジュールである。ウェブページがロードされると、ブラウザは、ブラウザプラグインを呼び出して関数(function)を実施する。ユーザがテキストストリング上でホバーすると、ブラウザ30は、ブラウザプラグイン32を呼び出してテキストストリングを処理する。URLモニカ34は、ブラウザ30内のユーザインタフェースを実施するコード中のURLを受け取り、これらのURLに適したプロトコルハンドラを調べる。ライブコールハンドラ36は、プロトコルハンドラの一例である。後で論じるように、本明細書に述べる技術のいくつかの実施形態の一態様は、新しいハイパーリンクである。このハイパーリンクをライブコールハイパーリンクと呼ぶ。ライブコールハンドラ36は、ライブコールハイパーリンクのためのプロトコルハンドラである。ライブコールハイパーリンクに関しては、後でより詳細に論じる。
【0018】
ソフトフォン40は認証マネージャ42を備え、認証マネージャ42は、ソフトフォン40の使用前にユーザを認証するソフトウェアモジュールである。いくつかの実施形態では、認証マネージャ42はまた、ユーザの要求するアクションを実施することがユーザに許可されていることを検証する。
図2には、プラグイン32およびライブコールハンドラ36と通信する認証マネージャ42を示す。
【0019】
ユーザが認証された後、認証マネージャ42は、パーサ(parser)44または別のモジュールに制御を渡すことになる。パーサ44は、URLを様々な構成要素に解析するソフトウェアモジュールである。パーサ44は、これらの構成要素を、信号および音声エンジン46、ビジネスインテリジェンス48、プレゼンテーションロジック50、およびハイパーリンクリダイレクタ52に通信することになる。
【0020】
信号および音声エンジン46もまた認証マネージャ42と通信し、VOIP電話呼を開始および維持するためのエンジンを提供する。信号および音声エンジン46は、アドレス帳58と通信する。一実施形態では、アドレス帳58は、ユーザに関連する様々な人々に関する連絡先情報を記憶する。アドレス帳58は、個人情報管理アプリケーションの一部、またはソフトフォン40専用のデータストアとすることができる。
【0021】
ビジネスインテリジェンス48は、ソフトフォン40をビジネスインテリジェンス適用分野に使用することに関する情報を記憶するデータストアである。プレゼンテーションロジック50は、ソフトフォン40のためのユーザインタフェースを提供する。ハイパーリンクリダイレクタ52は、URL中のコマンドまたは情報に基づいてプレゼンテーションロジック50とブラウザ30とのいずれかをリダイレクトするのに使用することができる。一実施形態では、ハイパーリンクリダイレクタ52はブラウザ30と通信する。
【0022】
図2は、1つまたは複数の電話番号を含むコンテンツが、ブラウザ30に表示されたウェブページのコード中で使用され、ユーザが、インターネット12または他のネットワークを介したVOIP電話をかけるためにソフトフォン40を使用している環境を企図している。別の実施形態では、電話番号は、ブラウザ以外のアプリケーション内で使用されているコンテンツ中にあってもよい。例えば、電話番号は、ワードプロセッシング文書、スプレッドシート、または他の任意のアプリケーション中で使用されるものとすることができる。
図3に、ソフトフォン40とのソフトウェア間モジュール通信がAPIを介するものであり、アプリケーション(ブラウザ、およびブラウザ以外のソフトウェアアプリケーションを含む)からの電話番号を使用して、ソフトフォン40による通信がトリガされるシステムのブロック図を提供する。
図3には、ソフトフォン40と、ブラウザ30と、Windows(登録商標)シェル60と、アプリケーション64と、モニタ66とを備えるクライアントコンピューティングデバイス10Aを示す。ソフトフォン40およびブラウザ30は、
図2に示したコンポーネントを備える。Windows(登録商標)シェル60は、オペレーティングシステムのためのインタフェースである。一実施形態では、クライアントコンピューティングデバイス10A上のアプリケーションは、アクセシビリティAPI(アプリケーションプログラムインタフェース)を利用することができ、アクセシビリティAPIは、アクセシビリティエイド(accessibility aid)がMicrosoft Windows(登録商標)上で稼動するアプリケーションと動作する方法を改善する、COMベースの技術である。アクセシビリティAPIは、オペレーティングシステムに組み込まれるダイナミックリンクライブラリを提供し、かつ、ユーザインタフェース要素に関する情報を公開するための信頼できる方法を提供するCOMインタフェースおよびアプリケーションプログラミング要素を提供する。アクセシビリティAPIは、当技術分野で知られており、Windows(登録商標)オペレーティングシステムに組み込まれている。アプリケーション64は、ハイパーリンクを表示することのできるユーザインタフェースを有する任意のアプリケーションとすることができる。モニタ66は、本明細書に述べる特徴のいくつかを実施するためにアプリケーション64およびソフトフォン40と通信するソフトウェアモジュールである。
【0023】
図4に、
図1〜3に示した様々なコンポーネントを実現するのに使用できる適切な一般的コンピューティング環境の一例100を示す。例えば、コンピューティングシステム100を使用して、ユーザクライアントコンピューティングデバイス10、コンピューティングデバイス14、またはインタフェース16を実現することができる。コンピューティングシステム100は、適したコンピューティング環境の一例に過ぎず、本明細書に述べる技術の使用または機能の範囲についてどんな制限を示唆するものでもない。また、コンピューティングシステム100は、例示的な動作環境100に示すコンポーネントのいずれか1つまたはそれらの組合せに関するどんな依存または要件を有するとも解釈すべきではない。
【0024】
本明細書に述べる技術は、多くの汎用または専用コンピューティングシステム環境または構成で機能する。使用に適するであろう周知のコンピューティングシステム、環境、および/または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、パーソナルディジタルアシスタント、電話機(有線、ワイヤレス、またはセルラー)、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な消費者電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータや、以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれるが、これらに限定されない。
【0025】
システムは、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで述べることができる。一般に、プログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。システムはまた、分散コンピューティング環境で実現することもでき、その場合、タスクは通信ネットワークを介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ記憶媒体に位置することができる。
【0026】
図4を参照すると、例示的なシステムは、コンピュータ110の形の汎用コンピューティングデバイスを含む。コンピュータ110のコンポーネントは、処理ユニット120(複数のプロセッサを含むことができる)と、システムメモリ130と、システムメモリを含む様々なシステムコンポーネントを処理ユニット120に結合するシステムバス121とを含むことができるが、これらに限定されない。システムバス121は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バス、ローカルバスを含む、いくつかのタイプのバス構造のいずれかとすることができる。限定ではなく例として、このようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、および、メザニンバスとしても知られるPCI(Peripheral Component Interconnect)バスを含む。
【0027】
コンピュータ110は通常、様々なコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ110によってアクセスできる任意の利用可能な媒体とすることができ、揮発性と不揮発性の媒体、取外し可能と取外し不可能の媒体の両方を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性と不揮発性、取外し可能と取外し不可能の両方の媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD‐ROM、ディジタル多用途ディスク(DVD)、または他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶デバイス、あるいは、所望の情報を記憶するのに使用できコンピュータ110によってアクセスできる他の任意の媒体を含むが、これらに限定されない。通信媒体は通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波や他のトランスポート機構などの被変調データ信号に組み入れるものであり、任意の情報送達媒体を含む。用語「被変調データ信号」は、信号中の情報を符号化するようにしてその特性の1つまたは複数が設定または変更される信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体と、音響、無線周波数、赤外線などの無線媒体および他の無線媒体とを含む。以上のいずれかの組合せも、コンピュータ可読媒体の範囲に含めるべきである。
【0028】
システムメモリ130は、読取り専用メモリ(ROM)131やランダムアクセスメモリ(RAM)132など、揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。ROM131には通常、起動中などにコンピュータ110内の要素間で情報を転送するのを助ける基本ルーチンを含むBIOS(basic input/output system)133が記憶されている。RAM132は通常、処理ユニット120からすぐにアクセス可能な、かつ/または処理ユニット120が現在作用している、データおよび/またはプログラムモジュールを含む。限定ではなく例として、
図4には、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137を示す。
【0029】
コンピュータ110は、他の取外し可能/取外し不可能、揮発性/不揮発性コンピュータ記憶媒体を備えることもできる。例に過ぎないが
図4には、取外し不可能な不揮発性の磁気媒体に対して読取りまたは書込みを行うハードディスクドライブ141と、取外し可能な不揮発性の磁気ディスク152に対して読取りまたは書込みを行う磁気ディスクドライブ151と、CD ROMや他の光学媒体など、取外し可能な不揮発性の光学ディスク156に対して読取りまたは書込みを行う光学ディスクドライブ155を示す。この例示的な動作環境で使用することのできる他の取外し可能/取外し不可能、揮発性/不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、固体RAM、固体ROMなどを含むが、これらに限定されない。ハードディスクドライブ141は通常、インタフェース140などの取外し不可能メモリインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光学ディスクドライブ155は通常、インタフェース150などの取外し可能メモリインタフェースによってシステムバス121に接続される。
【0030】
上に論じ、
図4に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、本明細書に述べる方法を実施するようにプロセッサ(1つまたは複数)をプログラムするためのコンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶域を提供する。例えば
図4には、ハードディスクドライブ141がオペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147を記憶しているのが示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、その他のプログラムモジュール136、およびプログラムデータ137と同じものとすることも、異なるものとすることもできることに留意されたい。ここでは、オペレーティングシステム144、アプリケーションプログラム145、その他のプログラムモジュール146、およびプログラムデータ147が少なくとも異なるコピーであることを示すために、これらには異なる番号を付けてある。ユーザは、キーボード162、およびマウスやトラックボールやタッチパッドと一般に呼ばれるポインティングデバイス161などの入力デバイスを介して、コンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロホン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナなどを含むことができる。これらおよびその他の入力デバイスは、システムバスに結合されたユーザ入力インタフェース160を介して処理ユニット120に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)など、他のインタフェースおよびバス構造で接続されてもよい。モニタ191または他のタイプの表示デバイスも、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータは、スピーカ197やプリンタ196など、他の周辺出力デバイスも備えることができ、これらは出力周辺インタフェース195を介して接続することができる。
【0031】
コンピュータ110は、リモートコンピュータ180など1つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードとすることができ、通常は、コンピュータ110に関して上述した要素の多くまたは全てを備えるが、
図4にはメモリ記憶デバイス181のみが示してある。
図4に示す論理接続は、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含むが、他のネットワークを含んでもよい。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。
【0032】
LANネットワーキング環境で使用される場合、コンピュータ110は、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は通常、インターネットなどのWAN173を介して通信を確立するためのモデム172、ネットワークインタフェース、またはその他の手段を備える。モデム172は内蔵でも外付けでもよく、ユーザ入力インタフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関して示したプログラムモジュールまたはその一部をリモートのメモリ記憶デバイスに記憶することができる。限定ではなく例として、
図4には、リモートアプリケーションプログラム185がメモリデバイス181上にあることを示す。図示のネットワーク接続は例であり、コンピュータ間で通信リンクを確立するその他の手段を使用してもよいことは理解されるであろう。
【0033】
前述のように、本明細書に述べる技術の一特徴は、ユーザがユーザインタフェースのコンテンツ内にある電話番号の上でホバーするかまたはこの電話番号を選択することに応答して、呼(call)を自動化することである。
図5に、この特徴を実施する方法の一実施形態を提供する。
図5のステップ400で、ユーザインタフェース中にコンテンツが表示される。一例では、コンテンツは、ブラウザ30に表示されたウェブページである。他の実施形態では、他のコンテンツが他のアプリケーション中に表示されてよい。ステップ402で、システムはホバーイベントを待機する。一実施形態では、クライアントコンピューティングデバイス10のオペレーティングシステムは、ユーザがユーザインタフェース中のコンテンツの上でホバーしたときにホバーイベントを生成することができる。例えば、ユーザがブラウザ中のテキストの上でホバーした場合、ホバーイベントがあったことがプラグイン32に通知され、ホバーされているテキストがプラグイン32に提供される。例示的な一実装形態では、ブラウザ30は、ホバーを追跡し、適切なOnMouseOver()でプラグイン32に通知する。ホバーイベントがない場合は、プラグイン32はホバーイベントがあるまで待機する。ユーザがテキストの上でホバーを行ったときは、ステップ404が実施される。いくつかの実施形態では、ホバーイベントを生成するためにはユーザがコンテンツの上で直接にホバーする必要があるが、他の実施形態では、ユーザがコンテンツの上で直接に、またはその付近(所定の短い距離内)でホバーしたときにホバーイベントが発生するものとすることができる。
【0034】
ステップ404で、プラグイン32は、コンテンツに関連する国コードを決定する。例えば、プラグイン32は、ウェブページに関連するURLを見て、URLが国コードを識別するかどうか確認することができる。別法として、プラグイン32は、ドメイン名の逆IPアドレス検索を行うこともできる。異なる国が、異なる範囲のIPアドレスを有する。別の実施形態では、ブラウザ言語およびコーディングタイプが、国を示すことができる。Internet Explorer(登録商標)は、ページの言語を指定し、読み取るためのAPIを有する。ウェブページによっては、言語および起源国(country of origin)を示すHTMLコードを有するものもある。いくつかの実施形態では、この情報はHTMLヘッダ中にあるものとすることができる。いくつかの実施形態では、国コードを決定することはできない。
【0035】
ステップ406で、プラグイン32は、電話番号認識関数を実行する。電話認識関数への入力は、ホバーされた生入力ストリングと、(オプションで)国コードとを含む。電話認識関数の出力は、(1)生入力ストリングが電話番号を含むかどうかのブール判定、(2)正規化済みパターンの電話番号、および(3)生パターンの電話番号を含む。電話認識関数については、
図6に関してより詳細に後述する。
【0036】
ステップ408で、ホバーされたテキストが電話番号を含まない場合は、プロセスはステップ402にループバックし、別のホバーイベントを待機する。ホバーされたテキストが電話番号を含む場合は(ステップ408)、ステップ410で、プラグイン32は、APIを介して電話番号を強調表示するようブラウザ30に命令する。ステップ412で、プラグイン32は、ツールチップ(tool tip)を表示させる。このツールチップは、ユーザが強調表示された番号をクリックしてその番号に電話をかけることができることを示す。
【0037】
この時点で、ユーザは少なくとも2つのアクションを行うことができる。すなわち、ユーザは、強調表示された番号から離れることができ、あるいはユーザは、強調表示された番号をクリックすることによって(または他の何らかの選択手段によって)この番号を選択することができる。ユーザが強調表示された番号を選択した場合は、ステップ416で、プラグイン32は、ソフトフォン40を起動し、強調表示された電話番号をソフトフォン40に渡し、ブラウザ30に強調表示を除去するよう命令する。ステップ418で、ソフトフォン40は、強調表示された電話番号との通信を確立する。例えば、信号および音声エンジン46が、当技術分野で知られている技術を使用して、強調表示された電話番号への、適切なプロトコル(例えばVOIP)を使用した音声接続を生み出す。ユーザが強調表示された番号を選択せずにこの番号から離れた場合は(ステップ414)、ステップ420で、プラグイン32は、電話番号の強調表示を除去するようブラウザ30に命令し、プロセスはステップ402にループバックして、別のホバーイベントが発生したかどうかテストする。
【0038】
図6は、電話番号認識関数(
図5のステップ406参照)の一実施形態を記述するフローチャートである。この関数は、入力パターンを、1組の記憶済みパターンのうちの1つと合致させることを試みる。各国は、その一般的な電話番号フォーマットを有する。パターンを定式化するために、国コードを「C」として表し、数字を「D」として表し、英数字(数字および文字)を「A」として表し、区切り符号を「?」として表す。区切り符号は、電話番号をより人間に読みやすいものにするために使用される。例えば、「(」、「)」、「−」、「.」、「/」、およびスペースが、一般的な区切り符号である。例えば、電話番号1−800−FOR−PIZZAは、「C?D3?A3?A4」として定式化することができる。このパターンは、オプションの国コード、その後に3つの数字のエリアコード、その後に7つの数字の電話番号を有する。国コードは通常、オプションである。
【0039】
合致させる電話番号は正規化することができる。すなわち、全ての区切り符号が除去される。これにより、パターン照合が単純化されることになる。しかし、エリアコードは文字ではなく数字のみで書かれるので、区切り符号はエリアコードのヒントを提供する。
【0040】
2つの電話番号パターン、すなわち生パターンおよび正規化済みパターンがある。生パターンは、生の電話番号を合致させるのに直接使用できるパターンである。正規化済みパターンは、正規化された電話番号を合致させるのに使用できるパターンである。例えば、米国では、フォーマットは以下のうちの1つとすることができる。
【0042】
国によっては、エリアコードおよび電話番号は、常に同じ長さとは限らない。この場合、パターンは範囲として書かれることになる。例えば、「CD1−4A6−9」は、エリアコードが1つの数字から4つの数字までを有する可能性があり、市内電話番号が6つの数字/文字から9つの数字/文字までを有する可能性があることを表す。
【0043】
図6のステップ450で、生入力ストリングが受け取られる。いくつかの実施形態では、国コードも受け取られる。国コードが受け取られた場合は(ステップ452)、この特定の国コードに関するデータベースがアクセスされ使用される。国コードが利用可能でなかった場合は、ステップ456で、米国データベース(または他のデフォルトデータベース)が使用される。ステップ458で、生入力ストリングが正規化される。
【0044】
ステップ460で、関数は、正規化された生入力を、選択されたデータベース中の1組の正規化済みパターンと合致させることを試みる。合致が見つかった場合は(ステップ462)、ステップ466で、生入力ストリングを、この合致した正規化済みパターンに関連する生パターンのいずれかと合致させることが試みられる。合致が見つからなかった場合は、関数はステップ464で偽を返す。これは、入力ストリング中で電話番号が見つからなかったことを意味する。
【0045】
ステップ466で生入力ストリングを合致させる試みで合致が見つかった場合は(ステップ468)、プロセスはステップ470で真を返す。これは、入力ストリング中で電話番号が見つかったことを示す。ステップ470ではまた、正規化済みパターンと、合致した生パターンとの両方が返される。合致が見つからなかった場合は(ステップ468)、プロセスはステップ472で偽を返す。これは、入力ストリング中で電話番号が見つからなかったことを示す。
【0046】
図7は、ライブコールハイパーリンク(例えばLiveCall:+14257069606)によってPCから電話機への呼を実施する一例を示すブロック図であり、これは
図5のステップ418の一部として実施することができる。
図7には、クライアントコンピューティングデバイス10がインタフェース16のコールシグナリングサーバ480と(インターネット12を介して)通信するのを示し、コールシグナリングサーバ480自体は、電話会社プロバイダ482のコールシグナリングサーバ483と(インターネット12を介して)通信する。コールシグナリングサーバ483は、電話会社プロバイダ482の公衆交換電話網(「PSTN」)ゲートウェイ484と通信する。PSTNゲートウェイ484は、インターネット12を介してクライアントコンピューティングデバイス10と、またPSTN485を介して電話機486と通信する。
【0047】
クライアントコンピューティングデバイス10中のソフトフォン40は、コールシグナリングメッセージ(電話番号を含む)をコールシグナリングサーバ480に送信する(490参照)。コールシグナリングサーバ480は、ユーザを認証し、コールシグナリングメッセージを適切な電話会社プロバイダ482にルーティングする(491参照)。電話会社プロバイダ482のコールシグナリングサーバ483がコールシグナリングメッセージを受信すると、コールシグナリングサーバ483は、呼を認証し、呼を適切なPSTNゲートウェイ484に終端する(492参照)。PSTNゲートウェイ484は、呼を宛先電話回線にルーティングする(493参照)。ユーザが宛先電話回線において電話機486を取ると、(クライアントデバイス10中の)ソフトフォン40と、PSTNゲートウェイ484と、PSTN電話機486との間で音声ストリームが確立されることになる(494および495参照)。
【0048】
電話機486は、PSTN電話機、または携帯/セルラー電話機とすることができる。携帯/セルラー電話機の場合、PSTNゲートウェイ、PSTNネットワーク、およびPSTN電話機は、携帯ゲートウェイ、携帯ネットワーク、および携帯電話機でそれぞれ置き換えることができる。別の実施形態では、PSTN電話機は、携帯ゲートウェイ、携帯ネットワーク、および携帯電話機で置き換えることができる。一実装形態では、SIP(セッション開始プロトコル)がコールシグナリングに使用される。
【0049】
図8に、ブラウザ以外のアプリケーションで、ホバーに応答した発呼のプロセスを実施する代替実施形態を記述する。
図8のプロセスは、ブラウザに使用することもできる。モニタされているアプリケーションは、アクセシビリティAPIを利用することになる。この実施形態は
図3の環境に関連し、この環境は、アクセシビリティAPIによって提供されたストリングを処理するためにモニタ66を含む。いくつかの実施形態では、モニタ66は、
図3に示すようにそれ自体のプロセスとすることもでき、あるいはアプリケーション64の一部とすることもできることに留意されたい。いくつかの実施形態では、モニタ66はまた、Windows(登録商標)シェル60と直接に通信することになる。
図8のステップ500で、当該のコンテンツがアプリケーション64のユーザインタフェース中に表示される。ステップ502で、システムはホバーイベントを待機する。テキストの上でホバーイベントがあると、モニタ66は、ホバーされたテキストを受け取り、ステップ504が実施される。アクセシビリティAPIによって、モニタ66は単語を受け取ることに留意されたい。単語を見つけられない場合は、モニタ66は、文全体、行全体、またはいくつかの行を求めることができる。テキストがブラウザからのものである場合は、モニタ66は、ステップ504でブラウザに国コードを要求する。そうでない場合は、モニタ66は、オペレーティングシステムに国コードを照会する。いくつかの実施形態では、国コードは利用可能でない。ステップ506で、モニタ66は、電話番号認識関数を実行し、ホバーされたテキストをアプリケーション64から電話番号認識関数に渡す。このテキスト中に電話番号がない場合は(ステップ508)、プロセスはステップ502にループバックし、別のホバーイベントを待機する。
【0050】
このテキスト中に電話番号があった場合は(ステップ508)、ステップ510で、モニタ66は、アクセシビリティAPIを介して(または別のAPIを介して)マウスホバーの現在位置を照会し、オペレーティングシステムに(APIを介して)、電話番号を強調表示するよう命令する。代替の一実施形態では、モニタ66は、アプリケーション64と直接に通信し、テキストを強調表示するようアプリケーション64に伝えることができる。ステップ512で、モニタ66は(APIを介して)、ユーザが強調表示された番号をクリックして電話呼を開始できることを示すためのツールチップを表示する。ユーザが強調表示されたテキストから離れた場合は、モニタ66は電話番号の強調表示を除去し、プロセスはステップ502にループバックする。ユーザが強調表示されたテキストをクリックまたは他の選択手段によって選択した場合は、モニタ66は、ソフトフォン40を(まだ起動されていない場合に)起動し、強調表示された電話番号をソフトフォン40に渡し、強調表示を除去する。ステップ520で、ソフトフォン40は、強調表示された電話番号との音声通信を確立する。ステップ520の後、プロセスはステップ502にループバックし、別のホバーイベントを待機する。
【0051】
上の考察は、ユーザがコンテンツの上でホバーするのに応答して、電話呼を自動化することに関係する。別の代替形態では、ユーザがコンテンツを選択するのに応答して、電話呼を自動化することができる。
図9は、このような一実施形態を記述するフローチャートである。ステップ600で、前述のようにユーザインタフェース中にコンテンツが表示される。ステップ602で、ユーザはテキストを選択し、このテキストはプラグイン32に提供される。一実施形態では、ユーザは、マウスまたは他のポインティングデバイスを使用してテキストを強調表示することによって、テキストを選択することができる。ステップ604で、前述のようにプラグイン32は国コードを決定する。ステップ606で、プラグイン32は電話認識関数を呼び出す。電話番号が見つからなかった場合は(ステップ608)、プロセスはステップ602にループバックし、ユーザがさらにテキストを選択するのを待機する。電話番号が見つかった場合は(ステップ608)、ステップ610で、プラグイン32は、APIを介して電話番号を強調表示するようブラウザ30に命令する。いくつかの実施形態では、電話番号は強調表示されない。ステップ612で、プラグイン32はツールチップを表示させる。このツールチップは、ユーザが電話番号をクリックしてこの番号に電話をかけることができることを示す。ユーザが電話番号から離れた場合は(ステップ614)、ステップ616で、プラグイン32は、電話番号の強調表示を除去するようブラウザ30に命令し、プロセスはステップ602にループバックして、ユーザがテキストを選択するのを待機する。ユーザがクリックまたは他の方法の選択によって電話番号を選択した場合は(ステップ614)、ステップ618で、プラグイン32は、ソフトフォン40を起動し(必要なら)、強調表示された電話番号をソフトフォン40に渡し、ブラウザ30に強調表示を除去するよう命令する。ステップ620で、ソフトフォン40は、強調表示された電話番号との音声通信を確立する。ステップ620の後、プロセスはループバックして、ステップ602で再びユーザが次のテキストを選択するのを待機する。
【0052】
図9に関する考察は、選択されるコンテンツがブラウザ中にあることを企図している。
図10に、ブラウザであるアプリケーションおよびブラウザでないアプリケーションを含む種々のアプリケーション中のテキストをユーザが選択するのに応答して電話呼を自動化するためのプロセスを記述する(
図3の環境参照)。ステップ700で、ユーザインタフェース中にコンテンツが表示される。ステップ702で、ユーザがテキストを選択する。テキストがブラウザから選択されたものである場合は、モニタ66はブラウザに国コードを要求する。テキストがブラウザ以外のアプリケーションからのものである場合は、モニタ66は、オペレーティングシステムに国コードを照会する。場合によっては、国コードは利用可能でない。ステップ706で、モニタ66は電話認識関数を呼び出す。電話番号が見つからなかった場合は(ステップ708)、プロセスはループバックし、ステップ702で次のテキストが選択されるのを待機する。電話番号が見つかった場合は(ステップ708)、モニタ66は、アクセシビリティAPIまたは別のAPIを介して、マウスの現在位置を照会し、電話番号を強調表示する。ステップ712で、モニタ66はツールチップを表示させる。このツールチップは、ユーザが強調表示された番号をクリックして電話をかけることができることをユーザに示す。ユーザが選択せずに強調表示から離れた場合は(ステップ714)、ステップ716で、モニタ66は電話番号の強調表示を除去し、プロセスはステップ702にループバックして、次のユーザ選択を待機する。ユーザが強調表示されたテキストを選択した場合は(ステップ714)、ステップ718で、モニタ66は、ソフトフォン40を起動し、強調表示された電話番号をソフトフォン40に渡し、アプリケーション64のユーザインタフェースから強調表示を除去する。ステップ720で、ソフトフォン40は、強調表示された電話番号との通信を確立する。ステップ720の後、ステップ702で、プロセスはユーザがテキストを選択するのを待機する。
【0053】
前述の、ホバーに応答した発呼と選択に応答した発呼の技術は共に、ウェブページのコードを編集することなく、またウェブページを修正することなく実施されることに留意されたい。どちらのプロセスも、ウェブページのレンダリングを減速させない。
【0054】
別のプロセスセットは、ユーザがホバーする前にコンテンツの体裁を変更することによって、呼を自動化することができる。次いで、ユーザのホバーに応答して、電話呼を開始することができる。
【0055】
図11は、ユーザがユーザインタフェースのコンテンツ内にある電話番号の上でホバーするのに応答して呼を自動化する別の実施形態を記述するフローチャートである。ステップ850で、プラグイン32は、ウェブページのコード全体のコピーを読み取る。ステップ852で、プラグイン32は、
図6の電話認識関数を使用して、コード中で電話番号を見つける。ステップ854で、プラグイン32は、ウェブページ中で電話番号がある位置の座標(例えばx,y座標)を決定して記憶する。一実施形態では、記憶される座標は、ユーザインタフェース中で電話番号が位置する範囲を生み出すように、電話番号の左上の角および右下の角を含む。ステップ856で、プラグイン32は、ブラウザ用のAPIを使用して電話番号を強調表示するようブラウザ30に命令する。ステップ858で、システムはマウスクリックを待機する。マウスクリックがあると、システムは、マウスクリックが電話番号の範囲の1つの内にあるかどうか判定する。ウェブページは複数の電話番号を含む場合があることが企図される。ステップ858で識別されたマウスクリックがステップ860でいずれかの範囲内にある場合は、プラグイン32は、ソフトフォン40を起動し、強調表示された電話番号をソフトフォン40に渡し、ブラウザ30から強調表示を除去する。ステップ864で、ソフトフォン40は、強調表示された電話番号との音声通信を確立する。
【0056】
図12〜17に、電話番号の上でホバーするのに応答して電話呼を開始する能力をユーザに提供するためにハイパーリンクを使用する1組の実施形態を開示する。
図12に、ブラウザ30がソフトフォン40およびブラウザヘルパオブジェクト(BHO)900と通信するのを示す。ブラウザヘルパオブジェクトは、プロセス内コンポーネントオブジェクトモデル(COM)コンポーネントであり、ブラウザの特殊化バージョンを生み出すようにInternet Explorer(登録商標)ブラウザをカスタマイズするのを可能にするために適用することができる。BHOを使用して、ブラウザの典型的なイベントを検出することができ、あるいはInternet Explorer(登録商標)中のメッセージおよびアクションをモニタするためのフック(hook)をインストールすることができる。
【0057】
ユーザがInternet Explorer(登録商標)などのブラウザに新しいページをロードすると、このウェブページのコードがブラウザのデータ構造(例えばIMarkupContainerインタフェース)にロードされる。このデータ構造から、ウェブページがレンダリングされる。
図12の実施形態は、コンテンツがデータ構造にロードされた後であり、コンテンツがレンダリングされる前に、BHO900を使用してデータ構造にアクセスし、それにより、コンテンツ中で電話番号を見つけてこれらの電話番号のためのライブコールハイパーリンク(後で論じる)を追加する。
【0058】
Internet Explorer(登録商標)は起動されると、Windows(登録商標)レジストリをチェックして、BHOがあるかどうか判定する。ユーザがソフトフォン40をインストールするとき、BHOオブジェクト900もまたユーザのハードディスクにインストールされることになり、BHOオブジェクトをリストするようにレジストリが変更されることになる。加えて、ライブコールハイパーリンクがInternet Explorer(登録商標)に登録されることになる。
【0059】
図12のBHO900は、少なくとも3つのサービス、すなわちIWebBrowser2 902、IMarkupServices904、およびRegisterForDirtyRange906を含む。IWebBrowser2 902は、テキストのダウンロードが行われたときのDispid_DocumentComplete、および特定のウェブページに関するあらゆるもの(テキストおよび画像)のダウンロードが完了したときのDispid_DownloadCompleteを含むイベントを投げる。IMarkupServices904は、IWebBrowser2 902によって投げられた、上に識別した2つのイベントの一方が発生したときに、RegisterForDirtyRange906へのアクセスを可能にするために使用される。RegisterForDirtyRangeは、コンテンツの新しいバージョンと、コンテンツに変更があるかどうかとを示す。次いでシステムは、IMarkupContainerを使用するが、これは、ブラウザのデータ構造中の新しいコンテンツにアクセスするために、変更されたセクションを指す。次いでシステムは、新しいコンテンツを精査して、新しいコンテンツ中に電話番号があればそれらを識別する。電話番号が見つかった場合は、前述のデータ構造が編集されて、各電話番号のライブコールハイパーリンクが追加される。
【0060】
ライブコールハイパーリンクにより、アプリケーション開発者は、ウェブページまたはアプリケーションからVOIP電話をかけるための拡張可能アドレスを指定することができる。呼のタイプは、PCから電話機への呼、およびPCからPCへの呼を含む。PCから電話機への呼は、PCから発し、固定回線電話機または携帯電話機を含めた電話機で終端する。PCからPCへの呼は、音声、ビデオ、およびオプションのテキストチャットを含む。この呼は、PCから発し、PCで終端する。ライブコールハイパーリンク中のターゲットアドレスのタイプは、電話番号、連絡先(例えばアドレス帳の中の連絡先)、コンピュータ名(例えばJohnDoe PC)、またはIPアドレス(例えば124.38.110.25)を含む。
【0061】
ライブコールハイパーリンクの構文は、LiveCall:<パラメータ>である。電話番号に電話をかけるには、以下のパラメータを使用することができる。
【0062】
・Phone:市内番号、国内長距離番号、または国際番号とすることのできる電話番号
・Local:市内電話番号
・National:国内長距離番号
・Direct:直接ダイヤリング、例えば生の数字
・Contact:プレゼンスまたはアドレス帳の中の連絡先
いくつかの例は、以下のものを含む。
(1)LiveCall:+14257069606;電話番号+14257069606を使用して、PCから電話機への電話をかける。
(2)LiveCall:Phone=7069606;電話番号7069606を使用して、PCから電話機への電話をかける。この電話番号は、市内電話番号、国内電話番号、または国際電話番号とすることができる。ソフトフォン40は、その位置設定に基づいてこの電話番号を解析することになる。
(3)LiveCall:Phone=PIZZAUSA;電話番号74992872(PIZZAUSA)を使用して、PCから電話機への電話をかける。
(4)LiveCall:Local=7069606;市内電話番号7069606を使用して、PCから電話機への電話をかける。
(5)LiveCall:National=14257069606;国内長距離電話番号14257069606を使用して、PCから電話機への電話をかける。
(6)LiveCall:Direct=911;数字をそのまま使用して、PCから電話機への電話をかける。
(7)LiveCall:Contact=JohnDoe@hotmail.com;John Doeに対する、連絡先情報(またはアドレス帳)の中のデフォルト電話番号を使用して、PCから電話機への電話をかける。
【0063】
コンピュータに電話をかけるには、以下のパラメータを使用することができる。すなわち、(1)Online:オンラインプレゼンスID、および(2)Host:コンピュータ名またはIPアドレスである。いくつかの例は、以下のものを含む。
(1)LiveCall:Online=JohnDoe@hotmail.com;オンラインプレゼンスIDを使用して、PCからPCへの電話をかける。
(2)LiveCall:Host=JohnDoePC;宛先マシンのコンピュータ名を使用して、PCからPCへの電話をかける。
(3)LiveCall:Host=124.38.110.25;宛先マシンのIPアドレスを使用して、PCからPCへの電話をかける。
【0064】
ライブコールハイパーリンク中のソースパラメータ「Src」は、このライブコールハイパーリンクがクリックまたは実行される場所であるソースコンテキストを示す。この情報は、ビジネスインテリジェンスに有用である。ソースパラメータは、他のパラメータと組み合わせることができる。ライブコールハイパーリンク中のパラメータは、「&」符号で連結される。以下の例を考えてみる。
(1)LiveCall:Phone=7069606&Src=Messenger/Contact/Home;メッセンジャー(インスタントメッセージング)の連絡先にリストされている自宅電話番号を使用して、PCから電話機への電話をかける。
(2)LiveCall:Online=JohnDoe@hotmail.com&Src=Messenger/Buddy;メッセンジャーのバディーリストにリストされているオンラインプレゼンスIDを使用して、PCからPCへの電話をかける。
(3)LiveCall:?Signup&Src=Hotmail/Ads;このハイパーリンクがHotmail(ウェブベースの電子メールサービス)の広告欄にリストされている場合に、サインアッププロセスを開始するためのサインアップウェブサイトに行く。
【0065】
図13は、ライブコールハイパーリンクを追加するための一実施形態を記述するフローチャートである。ステップ1002で、新しいコンテンツがダウンロードされる。新しいコンテンツは、新しいウェブページ全体、またはウェブページの一部とすることができ、これは上に論じたイベントの1つを生成する。データは上述のデータ構造にロードされる。ステップ1004で、Dispid_DocumentCompleteおよび/またはDispid_DownloadCompleteを投げるIWebBrowser2 902から、新しいコンテンツがBHO900に通知される。RegisterForDirtyRangeサービス906が、新しいコンテンツへのポインタを提供する。ステップ1006で、BHO900は、単語、文、句読点間のテキスト、スペース間のテキスト、または他のコンテンツのグループにアクセスし、ステップ1008で、電話番号があれば見つけるために電話番号認識関数(
図6参照)を複数回呼び出す。電話番号が見つからない場合は(ステップ1010)、ステップ1014で、次いでウェブページは元々意図されたようにレンダリングされる。電話番号が見つかった場合は(ステップ1010)、ステップ1012で、各電話番号を除去してこれらをライブコールハイパーリンクで置き換えるために、データ構造が変更される。その後、ステップ1014でページはレンダリングされる。追加されたライブコールハイパーリンクは、ライブコールハイパーリンクの追加されたコンテンツを識別するためのソース(Src)パラメータを含む場合があることに留意されたい。
【0066】
図14Aに、2つの電話番号を含むウェブページの一部(例えば検索結果)を示す。
図14Bに、
図13のプロセスが実施されてライブコールハイパーリンクが追加された後にレンダリングされた、同じウェブページの部分を示す。
図14Bに見られる2つの電話番号には下線が付いていることに注目されたい。ユーザが下線付き電話番号の上でホバーすると、これらの色が変わることになる。他の実施形態では、ハイパーリンクは電話番号の体裁を変更せず、ユーザが電話番号の上でホバーすると、番号に下線が付き、かつ/または番号の色が変わる。
【0067】
図15は、ユーザが電話番号の上でホバーするのに応答して電話呼を開始するためのプロセスの一実施形態を記述するフローチャートである。
図13のプロセスに従ってウェブページがブラウザによってレンダリングされた後、ステップ1102で、システムはホバーイベントを待機する。ステップ1104で、ユーザがハイパーリンクの上でホバーすると、ブラウザはハイパーリンクを強調表示する。一実施形態では、ハイパーリンクは、色の変更、下線付加、またはこの両方を行うことができる。ユーザがハイパーリンクを選択した場合は(ステップ1106)、ブラウザは、ハイパーリンクがブラウザに登録されているかどうかチェックして確認する。登録されている場合、この登録は、どのプログラムを呼び出すべきかをブラウザに伝える。次いでブラウザは、ソフトフォン40を呼び出し(ステップ1108)、ハイパーリンクのコンテンツをソフトフォン40に渡す。ハイパーリンクのコンテンツは、この場合、電話番号を含む。
【0068】
図16は、ユーザがウェブページ、文書、ファイル、または他のユーザインタフェース中でライブコールハイパーリンクをクリックするかまたは他の方法で選択するのに応答して実施されるプロセスの一実施形態を記述するフローチャートである(
図15のステップ1108参照)。ハイパーリンクは通常、ユニフォームリソースロケータ(URL)として表現される。ステップ1200で、選択されたライブコールハイパーリンクのURLが、URLモニカ34に渡される(
図2参照)。ステップ1202で、URLモニカ34は、URL中のヘッダ情報(例えば「LiveCal:」)に基づいて、適切なプロトコルハンドラを調べる。ステップ1204で、URLモニカ34は、URLを適切なプロトコルハンドラに渡す。ライブコールハイパーリンクの場合、URLはライブコールハンドラ36に渡される。ステップ1206で、ライブコールハンドラ36は、ユーザがこのURLを実行したいことをユーザに確認する。いくつかの実施形態では、ステップ1206はオプションであり、飛ばすことができる。ステップ1208で、ライブコールハンドラ36は、ソフトフォン40を起動する。いくつかの実施形態では、ソフトフォン40がすでに稼動している場合は、再び起動する必要はない。ソフトフォン40は、ダイヤルするためのキーパッド、電話番号表示領域、通話履歴を表示する領域、サービスプロバイダ情報を表示する領域、通話情報を表示する領域、および(オプションで)ウェブまたはネットワーク内容を表示する領域を含むグラフィカルユーザインタフェースを備える。
【0069】
ステップ1210で、ライブコールハンドラ36は、URLをソフトフォン40に渡す。一実施形態では、URLは最初に認証マネージャ42に渡される。ユーザが認証されていない場合は(ステップ1212)、認証マネージャ42がユーザを認証する。一実施形態では、これは、ユーザがユーザ名およびパスワードを入力することのできるログイン画面を提供することを含む。ユーザが正しく認証されない場合、
図16のプロセスは終了する。ユーザを認証した後、認証マネージャ42は、ハイパーリンク中で識別される機能を実施することがユーザに許可されているかどうか検証する(ステップ1216)。ユーザが前に認証されている場合は(ステップ1212参照)、ステップ1214は飛ばされ、プロセスはステップ1216に進んで、ユーザが認証されるかどうか判定することに留意されたい。
【0070】
ステップ1218で、ハイパーリンクを表すURLはパーサ44に渡され、パーサ44は、URLの構文をチェックしてURLを様々な構成要素に分解する。ステップ1220で、パーサ44は、適切な構成要素を、信号および音声エンジン46、ビジネスプレゼンテーションロジック50、およびハイパーリンクリダイレクタ52に送る。一実施形態では、任意のコマンド(例えばアカウント維持)および被呼側が、信号および音声エンジン46に渡され、コマンドがプレゼンテーションロジック50に渡され、コマンドおよびハイパーリンクがハイパーリンクリダイレクタ52に渡される。ステップ1222で、パーサ44は、データ(例えばソースの指示を含めた全ての構成要素)を、ビジネスインテリジェンスデータストア48に保存する。ステップ1224で、信号および音声エンジン46は、アドレス帳58を使用して任意のパラメータを解決する。例えば、ターゲットが連絡先またはコンピュータ名で識別される場合、アドレス帳58を使用して、この連絡先を電話番号に変換し、あるいはコンピュータ名をIPアドレスに変換する。ステップ1226で、信号および音声エンジン46は、URLのターゲットとの音声接続を確立する。
【0071】
図17は、
図3の実施形態内で動作しているときにライブコールハイパーリンクが選択されるのに応答して実施されるプロセスの一実施形態を記述するフローチャートである。すなわち、APIを使用するアプリケーション中にハイパーリンクがある。ステップ1350で、アプリケーション64は、コマンドをAPIに発行する。例えば、ShellExecute()またはShellExecuteEX()が、Windowシェル60に発行される。ステップ1352で、Windowシェル60は、適切なプロトコルハンドラを調べる。プロトコルハンドラが見つかった場合は(ステップ1354)、ステップ1360で、Windows(登録商標)シェル60はプロトコルハンドラを起動する。例えば、ライブコールハンドラ36を起動することができる。プロトコルハンドラは、ブラウザ30とは別個に存在することもでき、あるいはブラウザ30の一部として存在することもできる。
【0072】
動作前に、ライブコールプロトコルハンドラを登録する必要がある。プロトコルハンドラを登録するには、2つの実装形態が可能である。一方は、プロトコルハンドラをWindows(登録商標)シェルに登録することである。他方は、プロトコルハンドラをブラウザに登録することである。プロトコルハンドラをブラウザに登録することの利点の1つは、プロトコルハンドラがサニティチェックを実施して、アプリケーションが実際に起動される前にユーザがURLの実行を確認する機会を有することを保証することができることである。このことは、ユーザがウェブサイトを訪れている間にURLのドライブバイ(drive−by)実行からユーザを保護するために重要な場合がある。
【0073】
ステップ1362で、URLはプロトコルハンドラに渡される。ステップ1364で、プロトコルハンドラは、ソフトフォン40がまだ起動されていない場合はこれを起動する。ステップ1366で、プロトコルハンドラは、URLをソフトフォン40に渡す。ステップ1366の後、プロセスは
図16のステップ1212に続く。
【0074】
Windows(登録商標)シェル60が適切なプロトコルハンドラを見つけなかった場合は(ステップ1354)、ステップ1370で、Windows(登録商標)シェル60は、適切なプロトコルハンドラを突き止めるようブラウザ30に求める。ブラウザ30が適切なプロトコルハンドラを見つけることができた場合は、ステップ1374で、ブラウザ30は、URLをURLモニカ34に渡す。ステップ1376で、このプロセスは、
図16のステップ1202に続く。ステップ1372で適切なプロトコルハンドラが見つからなかった場合は、ステップ1380でエラーが返される。
【0075】
構造上の特徴および/または方法上の動作に特有の言語で本主題を述べたが、添付の特許請求の範囲に定義する本主題は、前述の特定の特徴または動作に必ずしも限定されないことを理解されたい。そうではなく、前述の特定の特徴または動作は、特許請求の範囲に記載の発明を実施する例示的な形として開示する。本発明の範囲は、本明細書に添付する特許請求の範囲によって定義されるものとする。