(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-03-29
(45)【発行日】2023-04-06
(54)【発明の名称】VOIPクライアントを通じたセルラーデバイスへの緊急呼のルーティング
(51)【国際特許分類】
H04M 11/04 20060101AFI20230330BHJP
H04M 3/58 20060101ALI20230330BHJP
H04W 40/20 20090101ALI20230330BHJP
H04W 80/10 20090101ALI20230330BHJP
【FI】
H04M11/04
H04M3/58 Z
H04W40/20
H04W80/10
(21)【出願番号】P 2020572934
(86)(22)【出願日】2019-06-18
(86)【国際出願番号】 US2019037564
(87)【国際公開番号】W WO2020005618
(87)【国際公開日】2020-01-02
【審査請求日】2022-05-10
(32)【優先日】2018-06-26
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ハッサン,アメル エー.
(72)【発明者】
【氏名】セカラン,マヘンドラ ディー.
(72)【発明者】
【氏名】デイビス,マイケル ジェイ.
【審査官】山岸 登
(56)【参考文献】
【文献】特開2014-116759(JP,A)
【文献】特表2009-522872(JP,A)
【文献】特開2013-046083(JP,A)
【文献】米国特許出願公開第2008/0089316(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G08B23/00-31/00
H04B7/24-7/26
H04M3/00
3/16-3/20
3/38-3/58
7/00-7/16
11/00-11/10
H04W4/00-99/00
(57)【特許請求の範囲】
【請求項1】
第2のコンピューティングデバイスを通じて、第1のコンピューティングデバイスにより開始された通信セッションをルーティングする方法であって、
第1のコンピューティングデバイスにより実行されている通信セッションアプリケーションから、第1の通信モードを使用して通信セッションを確立する要求を受信するステップ
であり、前記第1のコンピューティングデバイスはユーザを登録されている、ステップと、
前記第1のコンピューティングデバイスの位置に基づいて、前記第1の通信モードを使用して前記通信セッションが許容されるかどうかを判定するステップと、
前記第1の通信モードを使用して前記通信セッションが許容されないという判定に応答して、
前記ユーザのユーザ識別に基づいて、前記ユーザを登録された第2のコンピューティングデバイスが第2の通信モードを用いて前記通信セッションを確立する
のに利用可能かどうかを判定するステップであり、前記第2の通信モードは前記第1の通信モードと異なる、ステップと、
前記第2のコンピューティングデバイスが利用可能という判定に応答して、前記第2のコンピューティングデバイスに、前記第1の通信モードと異なる前記第2の通信モードを使用して前記通信セッションを確立する指示を送信するステップと、
を含む方法。
【請求項2】
前記第1のコンピューティングデバイスはユーザを登録されており、
当該方法は、
第3のコンピューティングデバイスが前記ユーザを登録されているかどうかを判定するステップであり、前記第3のコンピューティングデバイスは、前記第2の通信モードを使用して前記通信セッションを確立するように構成されている、ステップと、
前記第3のコンピューティングデバイスが前記ユーザを登録されているという判定に応答して、前記第3のコンピューティングデバイスを、前記通信セッションを確立するための前記第2のコンピューティングデバイスとして選択するステップと、
をさらに含む、請求項1に記載の方法。
【請求項3】
前記第3のコンピューティングデバイスが、前記第2の通信モードを使用して前記通信セッションを確立するように構成されていないという判定に応答して、
第4のコンピューティングデバイスが前記第1のコンピューティングデバイスに近接しているかどうかを判定するステップと、
前記第4のコンピューティングデバイスを、前記通信セッションを確立するための前記第2のコンピューティングデバイスとして選択するステップと、
をさらに含む、請求項2に記載の方法。
【請求項4】
第4のコンピューティングデバイスが前記第1のコンピューティングデバイスに近接しているかどうかを判定するステップは、
前記第1のコンピューティングデバイスの前記通信セッションアプリケーションに、前記第1のコンピューティングデバイスに近接した複数のコンピューティングデバイスを識別する指示を送信するステップと、
前記通信セッションアプリケーションから前記複数のコンピューティングデバイスのリストを受信するステップと、
前記複数のコンピューティングデバイスの前記リストから前記第4のコンピューティングデバイスを選択するステップと、
を含む、請求項3に記載の方法。
【請求項5】
前記第2のコンピューティングデバイスに、前記通信セッションを確立する前記指示を送信するステップは、前記第2のコンピューティングデバイスに存在する通信セッションアプリケーションに、前記通信セッションを確立する指示を送信するステップを含む、請求項1に記載の方法。
【請求項6】
前記通信セッションが許容されるかどうかを判定するステップは、
前記第1のコンピューティングデバイスの位置を決定するステップと、
前記通信セッションを確立する前記要求で受け取った電話番号を識別するステップと、を含み、
前記通信セッションの許容は、前記決定された位置及び前記識別された電話番号に基づく、請求項1に記載の方法。
【請求項7】
前記通信セッションを確立する前記要求が前記通信セッションのエンドポイントとして緊急電話番号を含む場合、前記第1の通信モードを使用して前記通信セッションは許容されないと判定される、請求項1に記載の方法。
【請求項8】
第2のコンピューティングデバイスを通じて、第1のコンピューティングデバイスにより開始された通信セッションをルーティングするシステムであって、
1つ以上のハードウェアプロセッサと、
コンピュータ実行可能命令を記憶したコンピュータ記憶デバイスと、を備え、
前記コンピュータ実行可能命令は、1つ以上のハードウェアプロセッサにより実行されたときに、当該システムを、
第1のコンピューティングデバイスにより実行されている通信セッションアプリケーションから、第1の通信モードを使用して通信セッションを確立する要求を受信し
、前記第1のコンピューティングデバイスはユーザを登録されており、
前記第1のコンピューティングデバイスの位置に基づいて、前記第1の通信モードを使用して前記通信セッションが許容されるかどうかを判定し、
前記第1の通信モードを使用して前記通信セッションが許容されないという判定に応答して、
前記ユーザのユーザ識別に基づいて、前記ユーザを登録された第2のコンピューティングデバイスが第2の通信モードを用いて前記通信セッションを確立する
のに利用可能かどうかを判定し、前記第2の通信モードは前記第1の通信モードと異なり、
前記第2のコンピューティングデバイスが利用可能という判定に応答して、前記第2のコンピューティングデバイスに、前記第1の通信モードと異なる前記第2の通信モードを使用して前記通信セッションを確立する指示を送信する
ように構成する、システム。
【請求項9】
前記第1のコンピューティングデバイスはユーザを登録されており、
当該システムは、
第3のコンピューティングデバイスが前記ユーザを登録されているかどうかを判定し、前記第3のコンピューティングデバイスは、前記第2の通信モードを使用して前記通信セッションを確立するように構成されており、
前記第3のコンピューティングデバイスが前記ユーザを登録されているという判定に応答して、前記第3のコンピューティングデバイスを、前記通信セッションを確立するための前記第2のコンピューティングデバイスとして選択する
ようにさらに構成される、請求項8に記載のシステム。
【請求項10】
当該システムは、
前記第3のコンピューティングデバイスが、前記第2の通信モードを使用して前記通信セッションを確立するように構成されていないという判定に応答して、
第4のコンピューティングデバイスが前記第1のコンピューティングデバイスに近接しているかどうかを判定し、
前記第4のコンピューティングデバイスを、前記通信セッションを確立するための前記第2のコンピューティングデバイスとして選択する
ようにさらに構成される、請求項9に記載のシステム。
【請求項11】
当該システムは、第4のコンピューティングデバイスが前記第1のコンピューティングデバイスに近接しているかどうかを、
前記第1のコンピューティングデバイスの前記通信セッションアプリケーションに、前記第1のコンピューティングデバイスに近接した複数のコンピューティングデバイスを識別する指示を送信することと、
前記通信セッションアプリケーションから前記複数のコンピューティングデバイスのリストを受信することと、
前記複数のコンピューティングデバイスの前記リストから前記第4のコンピューティングデバイスを選択することと
により判定するように構成される、請求項10に記載のシステム。
【請求項12】
当該システムは、
前記第2のコンピューティングデバイスに存在する通信セッションアプリケーションに、前記通信セッションを確立する指示を送信する
ようにさらに構成される、請求項8に記載のシステム。
【請求項13】
当該システムは、前記通信セッションが許容されるかどうかを、
前記第1のコンピューティングデバイスの位置を決定することと、
前記通信セッションを確立する前記要求で受け取った電話番号を識別することと
により判定するように構成され、
前記通信セッションの許容は、前記決定された位置及び前記識別された電話番号に基づく、請求項8に記載のシステム。
【請求項14】
前記通信セッションを確立する前記要求が前記通信セッションのエンドポイントとして緊急電話番号を含む場合、前記第1の通信モードを使用して前記通信セッションは許容されないと判定される、請求項8に記載のシステム。
【請求項15】
第2のコンピューティングデバイスを通じて、第1のコンピューティングデバイスにより開始された通信セッションをルーティングするシステムであって、
第1のコンピューティングデバイスにより実行されている通信セッションアプリケーションから、第1の通信モードを使用して通信セッションを確立する要求を受信する手段
であり、前記第1のコンピューティングデバイスはユーザを登録されている、手段と、
前記第1のコンピューティングデバイスの位置に基づいて、前記第1の通信モードを使用して前記通信セッションが許容されるかどうかを判定する手段と、
前記第1の通信モードを使用して前記通信セッションが許容されないという判定に応答して、
前記ユーザのユーザ識別に基づいて、前記ユーザを登録された第2のコンピューティングデバイスが第2の通信モードを用いて前記通信セッションを確立する
のに利用可能かどうかを判定する手段であり、前記第2の通信モードは前記第1の通信モードと異なる、手段と、
前記第2のコンピューティングデバイスが利用可能という判定に応答して、前記第2のコンピューティングデバイスに、前記第1の通信モードと異なる前記第2の通信モードを使用して前記通信セッションを確立する指示を送信する手段と、
を含むシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示される対象事項は、概してインターネットプロトコル(IP)電話及びボイスオーバーIP(Voice-Over-IP、VoIP)に関し、詳細には、第1のコンピューティングデバイスと通信する第2のコンピューティングデバイスを通じて通信プロトコルを使用して第1のコンピューティングデバイスにより開始された通信セッションをルーティングすることに関し、第1のコンピューティングデバイスが受け取ったオーディオ及び/又はビデオは第2のコンピューティングデバイスを介して意図された受信者に通信され、その逆もまた同様である。
【背景技術】
【0002】
IP電話及びVoIPは、インターネット上で通信セッションを実行する1つ以上の手法を一般に包含する技術である。いくつかの例において、通信セッションは、コンピューティングデバイスにより実行されているクライアントアプリケーション間にあり、通信セッションは、1つ以上のオーディオ及び/又はビデオストリームを含む。通信セッションは、これらに限られないがトランスミッションコントロールプロトコル(Transmission Control Protocol、TCP)、インターネットプロトコル(Internet Protocol、IP)、ユーザデータグラムプロトコル(User Datagram Protocol、UDP)、H.323、セッション開始プロトコル(Session Initiation Protocol、SIP)、リアルタイムトランスポートプロトコル(Real-time Transport Protocol、RTP)、スカイププロトコル、又はこれらの組み合わせ(例えば、TCP上のSIP)を含む1つ以上の通信プロトコルを使用して実行されることがある。
【0003】
コンピューティングデバイス及びクライアントアプリケーションを使用し、ユーザは、同じ又は類似のクライアントアプリケーションを実行する別のコンピューティングデバイスとの通信を確立することができる。さらに、ユーザは、通信セッションを実行するためにユーザが使用しているコンピューティングデバイスとは異なるネットワークに通信上結合されたデバイスとの通信セッションを確立することができる。例えば、コンピューティングデバイスは、インターネットなどのパケット交換網(packet-switched network)に通信上結合されることがある。代わりに、意図された受信者(又は、第2のコンピューティングデバイス)は、公衆交換電話網(public switched telephone network、PSTN)などの回線交換網に通信上結合されることがある。
【0004】
いくつかの場合、ユーザは、自身のコンピューティングデバイスを使用して緊急サービスなどの公共サービスを呼び出したい場合がある。クライアントアプリケーションを使用し、ユーザは、公共サービスがPSTNに通信上結合されている場合に、公共サービスとの通信セッションを確立するよう試みることがある。しかしながら、ユーザは、コンピューティングデバイスを使用して公共サービスとの通信セッションを確立することを禁止又は防止されている可能性がある。
【図面の簡単な説明】
【0005】
いくつかの実施形態が、添付の図面の図に限定でなく例として示される。
【
図1】いくつかの例示的な実施形態による、1つ以上のコンピューティングデバイスに通信上結合された通信セッションサーバを含むネットワーク化システムを示すブロック図である。
【
図2】
図1に示すネットワーク化システムの代替的な一実装を示し、通信セッションが通信セッションサーバを介して実行される。
【
図3】一例示的な実施形態による、
図1に示すデバイスのアプリケーションを示し、モバイルデバイスがPSTNを使用して確立された通信セッションを実行する。
【
図4】一例示的な実施形態による、
図3に示すデバイスのアプリケーション及びデータの別の実装を示し、モバイルデバイスが通信セッションサーバを使用して確立された通信セッションを実行する。
【
図5】一例示的な実施形態による、
図1に示すコンピューティングデバイスを使用して通信セッションを確立する方法を示す。
【
図6A】一例示的な実施形態による、
図1~
図2に示すモバイルデバイスを通じて通信セッションをルーティングする方法を示す。
【
図6B】一例示的な実施形態による、
図1~
図2に示すモバイルデバイスを通じて通信セッションをルーティングする方法を示す。
【
図7A】一例示的な実施形態による、
図1~
図2のモバイルデバイスが
図1のコンピューティングデバイスにより開始された通信セッションをルーティングするために使用される方法を示す。
【
図7B】一例示的な実施形態による、
図1~
図2のモバイルデバイスが
図1のコンピューティングデバイスにより開始された通信セッションをルーティングするために使用される方法を示す。
【
図8】いくつかの例示的な実施形態による、マシン読取可能媒体(例えば、マシン読取可能記憶媒体又はマシン読取可能記憶デバイス)から命令を読み出して本明細書で論じられる方法論のいずれか1つ以上を実行することができるマシンのコンポーネントを示すブロック図である。
【発明を実施するための形態】
【0006】
以下の説明は、本対象事項の例示的な実施形態を示すシステム、方法、手法、命令シーケンス、及びコンピューティングマシンプログラムプロダクトについて記載する。以下の記載では、説明の目的で、本対象事項の様々な実施形態の理解を提供するために、多くの特定の詳細が記載されている。しかしながら、当業者には、本対象事項の実施形態をこれらの特定の詳細のいくつか又は他のものなしに実施できることが明らかであろう。例は、可能なバリエーションの典型にすぎない。別段明示的に示されない限り、構造(例えば、モジュールなどの構造的コンポーネント)は任意であり、組み合わせられ又は細分化されてもよく、動作(例えば、手順、アルゴリズム、又は他の機能における)は順序が変化してもよく、あるいは組み合わせられ又は細分化されてもよい。
【0007】
本開示は、第1のコンピューティングデバイスにより要求された通信セッションのオーディオ及び/又はビデオを、第1のコンピューティングデバイスに通信上結合された第2のコンピューティングデバイスを通じてルーティングするシステム及び方法を提供する。一実施形態において、第1のコンピューティングデバイスは、第1のコンピューティングデバイスにより実行されるクライアントアプリケーションを通じて、緊急サービス(emergency service)又は他の公共サービス(public service)などの意図された受信者との通信サービスを確立するよう試みる。クライアントアプリケーションは、他のコンピューティングデバイスにより実行されるクライアントアプリケーションの1つ以上の間の通信セッションを容易にし(facilitate)及び/又は確立するように構成された通信セッションサーバと通信することができる。このようにして、通信セッションサーバは、クライアントアプリケーションが互いに1つ以上の通信セッションを確立するのを助ける仲介者として機能することができる。通信セッションサーバの一例は、ワシントン州レドモンドにあるMicrosoft(登録商標) Corporationから入手可能なSkype for Business Serverである。通信セッションサーバを介して1つ以上の通信セッションを確立するように構成されたクライアントアプリケーションの一例は、Microsoft Corporationから入手可能なSkype for Businessクライアントアプリケーションである。当業者には、Skype for Business Server及びSkype for Businessクライアントアプリケーションは単なる例であり、他の通信セッションサーバ及び/又はクライアントアプリケーションが使用されてもよいことが理解されるであろう。
【0008】
公共サービスとの通信セッションを確立するよう試みる際、通信セッションサーバは、第1のコンピューティングデバイスが通信セッションを確立することを認可及び/又は許可されていないと判定することがある。したがって、通信セッションサーバは、第1のコンピューティングデバイスに近接した第2のコンピューティングデバイスが、第1のコンピューティングデバイスのために通信セッションを確立することを認可及び/又は許可されているかどうかを判定し得る。したがって、第1のコンピューティングデバイスは通信セッションにおけるエンドポイントの1つを表し、公共サービスは別のエンドポイントを表す。
【0009】
一実施形態において、第2のコンピューティングデバイスは、ラップトップ、タブレット、スマートフォン、又は他のそのようなポータブルデバイスなどのモバイルデバイスであり、第2のコンピューティングデバイスは、通信セッションサーバと通信するように構成されたクライアントアプリケーションを含む。さらに、第2のコンピューティングデバイスは、様々な周波数及び/又はプロトコルを介した複数の通信モードをサポートすることができる。例えば、第2のコンピューティングデバイスは、無線ネットワークトランシーバ及びセルラー無線機(radio)を備え得る。この例において、通信セッションサーバは、第2のコンピューティングデバイスに無線ネットワークトランシーバを介して、セルラー無線機を介して公共サービスとの通信セッションを確立するように指示することができる。さらに、通信セッションサーバは、第2のコンピューティングデバイスに、公共サービスから受け取ったオーディオ及び/又はビデオを第1のコンピューティングデバイスに送信するように指示し、同様に、第2のコンピューティングデバイスに、第1のコンピューティングデバイスから受け取ったオーディオ及び/又はビデオを公共サービスに送信するように指示してもよい。したがって、この例において、通信セッションサーバと第2のコンピューティングデバイスは、第1のコンピューティングデバイスと公共サービスとの間の通信セッションにおける仲介者である。代替的な一例において、第2のコンピューティングデバイスと第1のコンピューティングデバイスは、直接通信チャネルを確立することができ、公共サービスに対して意図されたオーディオ及び/又はビデオは第2のコンピューティングデバイスに直接通信され、公共サービスから受け取ったオーディオ及び/又はビデオは第1のコンピューティングデバイスに直接通信される。デバイス間の直接通信をサポートする技術の例は、これらに限られないがユニバーサルシリアルバス(USB)、Wi-Fi Direct、Bluetooth(登録商標)、及び近距離通信(Near-Field Communications、NFC)を含む。
【0010】
本開示は、IP電話及びVoIPの分野におけるいくつかの技術的利点及び改良について記載する。1つの利点は、第1のコンピューティングデバイスのユーザが、第1のコンピューティングデバイスが要求した通信セッションを確立することを認可又は許可されていないと通信セッションサーバが判定したとしても、意図された受信者との通信セッションを確立できることである。例えば、いくつかの国又は地域において、コンピューティングデバイスは、コンピューティングデバイスの地理的位置を決定できず又は決定不可能な場合に、IP電話又はVoIP技術を使用して緊急サーバとの通信セッション(例えば、米国の911、英国の899、欧州連合の112など)を確立することを認可されていない場合がある。
【0011】
しかしながら、ユーザは、第2のコンピューティングデバイスの位置を(例えば、第2のコンピューティングデバイスの実際の位置から数フィート又は数インチの範囲内で)決定することができるような第2のコンピューティングデバイス(例えば、全地球測位システム(Global Positioning System、GPS)トランシーバを備えたスマートフォン)を有する可能性がある。したがって、第2のコンピューティングデバイスを、第1のコンピューティングデバイスの通信のためのリレー又はルータとしての機能を果たすように構成することで、ユーザは、第2のコンピューティングデバイスが公共サービスとのオーディオ及び/又はビデオを送受信する間、自身の第1のコンピューティングデバイスを使用して通信セッションを確立することができる。
【0012】
この構成は、ユーザが第1のコンピューティングデバイスを現在使用しており、緊急事態を体験しているが、第2のコンピューティングデバイスがユーザにかなり近接している可能性があってもユーザの第2のコンピューティングデバイスと対話することが不可能な場合に特に適用可能性を有する。このようにして、開示される方法論及び/又はコンポーネントは、第1のコンピューティングデバイスが最初に構成されていなかった方法で実行することを効果的に可能にするため、IP電話及び/又はVoIPの分野を向上させる。
【0013】
本明細書に開示される別の技術的利点は、通信セッションサーバの機能性及び実装である。この点に関し、開示される実施形態は、1つ以上のコンピューティングデバイス間のゲートウェイとしての機能を果たす通信セッションサーバの従来の役割を拡張する。より具体的には、開示される実施形態は、所与のコンピューティングデバイスが特定の当事者(party)及び/又はエンティティ(例えば、公共サービス)との通信セッションを確立することを認可及び/又は許可されているかどうかを検証及び/又は判定する通信セッションサーバを提供する。コンピューティングデバイスがそのように認可されていない場合、通信セッションサーバは、通信セッションを完了し又は通信セッションが生じるためのリレーとしての機能を果たすことができる互換性のあるコンピューティングデバイスを検索し、識別する。したがって、記載の通信セッションについての開示される実施形態は、従来の又は典型的な通信セッションサーバが採用又は実行し得る従来の機能を拡張する。
【0014】
次に、本開示は、本明細書に記載される技術的態様を実施する様々な開示される実施形態を参照する。
図1は、いくつかの例示的な実施形態によるネットワーク化システム102を示すブロック図であり、1つ以上のコンピューティングデバイス104、106、108(集合的に104~108)に通信上結合された通信セッションサーバ110を含む。通信セッションサーバ110は、ネットワーク114(例えば、インターネット又はワイドエリアネットワーク(WAN))を介して、サーバ側の機能性をコンピューティングデバイス104~108の1つ以上に提供する。コンピューティングデバイス104~108、例えばコンピューティングデバイス104は、通信セッションサーバ110と対話するクライアントアプリケーション及び/又はモジュールを含み得る。コンピューティングデバイス104によりインスタンス化され得るアプリケーションの例には、ウェブクライアント、単一目的アプリケーション(例えば、「アプリ」)、多目的アプリケーション(例えば、プログラムクライアント)、又はこれらの組み合わせが含まれる。通信セッションサーバ110は、さらに、コンピューティングデバイス104と同様のアプリケーション及び/又はプログラムを含み得る他のコンピューティングデバイス106、108に通信上結合される。
【0015】
コンピューティングデバイス104は、これらに限られないがモバイルフォン、デスクトップコンピュータ、ラップトップ、ポータブルデジタルアシスタント(PDA)、スマートフォン、タブレット、ウルトラブック、ネットブック、ラップトップ、マルチプロセッサシステム、マイクロプロセッサベース若しくはプログラマブルコンシューマ電子機器、又はユーザが通信セッションサーバ110にアクセスするために利用できる任意の他の通信デバイスを含んでもよい。いくつかの実施形態において、コンピューティングデバイス104は、情報を(例えば、ユーザインターフェースの形式で)表示する表示モジュール(図示せず)を含んでもよい。さらなる実施形態において、コンピューティングデバイス104は、タッチスクリーン、加速度計、ジャイロスコープ、カメラ、マイクロホン、全地球測位システム(GPS)デバイスなどのうち1つ以上を含んでもよい。コンピューティングデバイス104は、例えば、保険証券見積りの要求、支払情報の更新、保険証券文書の見直し、及び他のそのような対話などのための通信セッションサーバ110との様々な対話を実行するために使用されるユーザのデバイスでもよい。
【0016】
一実施形態において、通信セッションサーバ110は、コンピューティングデバイス104~108の1つ以上の間、及び/又はコンピューティングデバイス104~108の1つ以上と公共サービス112などの1つ以上のエンティティとの間の、双方向及び/又は単方向通信を容易にするネットワークベースの機器である。1以上のユーザが、コンピューティングデバイス104~108と対話する可能性があり、いくつかの例において、同じユーザが、コンピューティングデバイス104及びコンピューティングデバイス106、108と対話する可能性がある(例えば、コンピューティングデバイス104がラップトップコンピュータであり、コンピューティングデバイス106がスマートフォンである場合)。1以上のユーザは、人、マシン、又はコンピューティングデバイス104と対話する他の手段でもよい。様々な実施形態において、ユーザは、ネットワーク化システム102の一部でないが、コンピューティングデバイス104又は別の手段を介してネットワーク化システム102と対話することができる。例えば、ネットワーク114、116の1つ以上の部分が、アドホックネットワーク、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、ローカルエリアネットワーク(LAN)、無線LAN(WLAN)、WAN、無線WAN(WWAN)、メトロポリタンエリアネットワーク(MAN)、インターネットの一部、公衆交換電話網(PSTN)の一部、セルラー電話網、ワイヤレスネットワーク、Wi-Fiネットワーク、WiMAX(登録商標)ネットワーク、別のタイプのネットワーク、又は2つ以上のそのようなネットワークの組み合わせでもよい。
【0017】
コンピューティングデバイス104は、これらに限られないがウェブブラウザ、メッセージングアプリケーション、電子メール(eメール)アプリケーション、通信セッションアプリケーションなどの1つ以上のアプリケーション(「アプリ」とも呼ばれる)を含むことができる。いくつかの実施形態において、通信セッションアプリケーションがネイティブアプリケーションとしてコンピューティングデバイス104に記憶されている場合、このアプリケーションは、通信セッションサーバ110と通信する(例えば、ユーザを認証する、1つ以上のコンピューティングデバイス及び/又はサービス間の通信チャネルを確立する、オーディオ及び/又はビデオを表示又は出力する、1つ以上の入力デバイスを使用してオーディオ及び/又はビデオを捕捉する等)ために使用されるユーザインターフェース及び機能性の少なくとも一部をローカルに提供するように構成される。逆に、通信セッションクライアントがコンピューティングデバイス104に記憶されていない場合、コンピューティングデバイス104は、そのウェブブラウザを使用して通信セッションサーバ110により提供されるサービスにアクセスしてもよい。
【0018】
ユーザは、コンピューティングデバイス104又は他の手段を介してネットワーク化システム102と対話することができる。例えば、ユーザは、入力(例えば、タッチスクリーン入力又は英数字入力)をコンピューティングデバイス104に提供し、この入力は、ネットワーク122を介してネットワーク化システム102に通信される。この例において、通信セッションサーバ110は、ユーザからの入力の受信に応答して、ネットワーク122を介してコンピューティングデバイス104に、ユーザに提示すべき情報を通信する。このようにして、ユーザは、コンピューティングデバイス104を使用して通信セッションサーバ110と対話することができる。
【0019】
さらに、
図1に示すネットワーク化システム102はクライアントサーバアーキテクチャを採用しているが、本対象事項は当然ながらそのようなアーキテクチャに限定されず、例えば、分散型又はピアツーピアのアーキテクチャシステムにおいても同様に良好に適用することができる。
【0020】
コンピューティングデバイス104~108に追加で、通信セッションサーバ110は、異なるエンティティ及び/又はサービスと通信する。さらに、コンピューティングデバイス104~108の1つ以上が、第1の通信プロトコルセットを使用して通信セッションサーバ110と通信することができ、コンピューティングデバイス106~108の1つ以上が、第2の通信プロトコル又は技術セットを使用してエンティティ及び/又はサービス(例えば、公共サービス112)と通信することができる。例えば、コンピューティングデバイス106~108は、イーサネットなどの有線通信インターフェース、及び/又は802.11b/g/n(例えば、Wi-Fi)などの無線通信インターフェースを使用して通信セッションサーバ110と通信するように構成されてもよい。さらに、コンピューティングデバイス104~108は、TCP/IP、UDP、H.323、SIP、RTP、又はこれらの組み合わせ(例えば、TCP上のSIP、UDP上のSIP等)などの1つ以上の通信プロトコルを使用して通信サーバ110と通信し、1つ以上の通信セッションを確立するように構成された通信セッションアプリケーションを含むことができる。
【0021】
さらに、コンピューティングデバイス106~108の1つ以上は、セルラータワー118と通信するように構成されたトランシーバを含むことができる。例えば、コンピューティングデバイス106~108はスマートフォンでもよく、各スマートフォンは、ロングタームエボリューション(Long-Term Evolution、LTE)、符号分割多元接続(Code Division Multiple Access、CDMA)、及び/又はグローバルシステムフォーモバイル(Global System for Mobiles、GSM)などの1つ以上の移動通信標準を使用して通信するように構成されたセルラー無線機を含んでもよい。この点に関し、コンピューティングデバイス106~108は、ユーザとセルラー無線機との間のインターフェースとして動作するダイヤラアプリケーションを含むことができ、ダイヤラアプリケーションは、セルラータワー118にアクセスし、PSTNを介して1つ以上のエンティティ及び/又はサービス(例えば、公共サービス112)と通信するために使用され得る。
【0022】
図3~
図4を参照して以下で論じるように、ダイヤラアプリケーション及び/又はダイヤラアプリケーションが実行されるオペレーティングシステムは、通信セッションアプリケーションがダイヤラアプリケーションに1つ以上のコマンドを実行する(例えば、公共サーバ112に関連づけられた電話番号をダイヤルする)ように指示することを可能にするアプリケーションプログラミングインターフェース(API)を提供することができる。例えば、Android(登録商標)オペレーティングシステムは、クラスCALLを介してダイヤラアプリケーションの様々なダイヤル機能にアクセスするAPIを提供している。別の例として、iOS(登録商標)オペレーティングシステムは、CallKitフレームワークを介してダイヤラアプリケーションの1つ以上の機能性へのアクセスを提供する。したがって、コンピューティングデバイス106~108がAndroid(登録商標)オペレーティングシステム又はiOS(登録商標)オペレーティングシステムを使用するように構成されている場合、通信セッションアプリケーションは、対応するAPIを使用して対応するダイヤラアプリケーションにアクセスし、指示することができる。当業者は、Android(登録商標)オペレーティングシステム及びiOS(登録商標)オペレーティングシステムがスマートフォンにより実行され得るオペレーティングシステムの例であり、開示される実施形態は他のオペレーティングシステムにも同様に拡張され、適用でき得ることを理解するであろう。
【0023】
さらに、通信セッションアプリケーションは、通信セッションサーバ110から1つ以上のコマンドを受け入れるように構成することができ、それにより、通信セッションサーバ110は、コンピューティングデバイス106~108により実行されている通信セッションアプリケーションに、ダイヤラアプリケーションを介して公共サービス112との通信セッションを確立するように指示することができる。この点に関し、通信セッションサーバ110は、通信セッションアプリケーションに対して、所与の電話番号をダイヤルするようダイヤラアプリケーションに指示し、ダイヤラアプリケーションを介して受け取ったオーディオ及び/又はビデオを通信セッションアプリケーションを介して通信セッションサーバ110に送信するように指示することができる。
【0024】
このようにして、通信セッションサーバ110は、第1のコンピューティングデバイス(例えば、コンピューティングデバイス104)により開始され、第2のコンピューティングデバイス(例えば、コンピューティングデバイス106~108)を通じてルーティングされる通信セッションを容易にすることができる。
【0025】
一例として、コンピューティングデバイス104により実行される通信セッションアプリケーションは、通信セッションサーバ110を介して公共サービス112との通信セッションを確立するよう試み得る。この例において、コンピューティングデバイス104は、公共サービス112との、H.323又はSIPなどの1つ以上の通信プロトコルを使用した通信セッションを確立するよう試みてもよい。通信セッションサーバ110は、コンピューティングデバイス104が指定された通信プロトコルを使用して公共サービス112との通信を確立することを認可されておらず、あるいはその許可を有さないと判定し得る。例えば、通信セッションサーバ110はコンピューティングデバイス104の位置を決定することが不可能な場合があり、あるいは、コンピューティングデバイス104はその位置を提供することが不可能な場合があり、コンピューティングデバイス104の位置を有することは、通信セッションサーバ110が公共サービス112との通信セッションを確立することの前提条件であり得る。
【0026】
したがって、通信セッションサーバ110は、次いで、通信セッションが確立され得る他のコンピューティングデバイス(例えば、コンピューティングデバイス106~108)を検索及び/又は識別することができる。一実施形態において、コンピューティングデバイス104のユーザは、識別されたコンピューティングデバイスのうち1つ(例えば、コンピューティングデバイス106)のユーザでもある。さらに、通信セッションサーバ110は、通信セッションサーバ110に通信上結合された(例えば、「ログインされた」)コンピューティングデバイスのレコード又はログを、コンピューティングデバイスによりローカルに実行可能な対応する通信セッションアプリケーションを介して維持することができる。レコード又はログは、これらに限られないがコンピューティングデバイスの地理的位置、コンピューティングデバイスのタイプ(例えば、スマートフォン、タブレット、デスクトップコンピュータなど)、コンピューティングデバイスが通信セッションサーバ110に接続するために使用しているオペレーティングシステム、接続されたコンピューティングデバイスに関連づけられ、かつ通信セッションアプリケーションを介して取得されたユーザ識別子、及び他のそのような情報又はこれらの組み合わせを含む、接続されたコンピューティングデバイスに関する情報を含んでもよい。このようにして、通信セッションサーバ110は、通信セッションサーバ110に通信上結合されたコンピューティングデバイスを、コンピューティングデバイス106のユーザに関連づけられたコンピューティングデバイスと比較するように構成される。
【0027】
通信セッションサーバ110は、コンピューティングデバイス106により実行可能な通信セッションアプリケーションを使用し、識別されたコンピューティングデバイス106がその位置を(例えば、コンピューティングデバイス106内に収容されたGPSトランシーバを介して)確認し、あるいはその他の方法でその位置の比較的正確な識別を提供することを要求することができる。一実施形態において、通信セッションサーバ110は、識別されたコンピューティングデバイス106が所定の許容度の範囲内(例えば、最も近い都市、最も近い町区等に対して±1フィート以上)のジオロケーション位置を提供することを要求する。この文脈において、比較的正確な識別であり得る。通信セッションサーバ110は、次いで、識別されたコンピューティングデバイス106により実行可能な通信セッションアプリケーションに指示して、コンピューティングデバイス106により実行可能なダイヤラアプリケーションに(例えば、セルタワー118を介して)公共サービス112との通信セッションを確立するように指示することができる。
【0028】
一実施形態において、ダイヤラアプリケーションが受け取ったオーディオ及び/又はビデオは次いで、コンピューティングデバイス106の通信セッションアプリケーションへの入力として提供され、これは次いで、通信セッションサーバ110に通信される。次いで、通信セッションサーバ110は、受け取ったオーディオ及び/又はビデオをコンピューティングデバイス104の通信セッションアプリケーションに通信することができ、これは次いで、コンピューティングデバイス104の1つ以上の出力デバイスにより(例えば、ディスプレイ、1つ以上のスピーカ、ヘッドフォン等により)出力され得る。
【0029】
同様に、コンピューティングデバイス104が受け取ったオーディオ及び/又はビデオ入力は次いで、通信セッションサーバ110に通信され得、通信セッションサーバ110は次いで、受け取ったオーディオ及び/又はビデオをコンピューティングデバイス106の通信セッションアプリケーションに通信する。このようにして、コンピューティングデバイス104は、通信セッションサーバ110及びコンピューティングデバイス106(又は、コンピューティングデバイス108)を介して公共サービス112と通信し、ここで、コンピューティングデバイス104及びコンピューティングデバイス106は、通信セッションサーバ110と通信するために第1の通信プロトコル(例えば、H.323又はSIP)を使用することができ、コンピューティングデバイス106は、セルタワー118を介して公共サービス112と通信するために第2の通信プロトコル(例えば、LTE、CDMA、GSMなど)を使用する。
【0030】
前述の例は、コンピューティングデバイス106が通信セッションサーバ110を介してコンピューティングデバイス104と通信することについて説明しているが、コンピューティングデバイス106は、コンピューティングデバイス104と直接通信し、公共サービス112から受信したオーディオ及び/又はビデオをコンピューティングデバイス104にリレーしてもよく、オーディオ及び/又はビデオを通信セッションサーバ110に送ってそれをコンピューティングデバイス104に通信する必要はない。一実施形態において、コンピューティングデバイス104及びコンピューティングデバイス106は、Bluetooth(登録商標)、Wi-Fi Direct、及びNFCなどの1つ以上の通信プロトコルにより通信上結合され、コンピューティングデバイス104~106のクライアントアプリケーションは、Skypeプロトコルなどのピアツーピア通信プロトコルを使用してオーディオ及び/又はビデオを送信及び/又は受信する。コンピューティングデバイス106がコンピューティングデバイス104と直接通信するための指示は、(例えば、通信セッションサーバ110とコンピューティングデバイス106との間の通信チャネルが不十分な品質の場合に)通信セッションサーバ110から生じてもよく、かつ/あるいは、この指示は、通信セッションサーバ110がコンピューティングデバイス104に公共サービス112との通信セッションを確立することを許可及び/又は認可できないという通知を通信セッションサーバ110から受信した後、コンピューティングデバイス104から生じてもよい。
【0031】
さらに、前述の例は、コンピューティングデバイス106がコンピューティングデバイス104のユーザにより所有及び/又は操作されていることと、通信セッションサーバ110が(例えば、コンピューティングデバイス104及びコンピューティングデバイス106を同じユーザ識別子に関連づけるデータベースを参照することにより)所有権を決定及び/又は確認するように構成されることを仮定している。しかしながら、前述の例は、第2のコンピューティングデバイスが第1のコンピューティングデバイスのユーザにより所有及び/又は操作されていない場合にも実施されてもよい。この実施形態は、コンピューティングデバイス104が緊急サービスとの通信セッションを確立するよう試みているが通信セッションサーバ112によってそのようにする認可及び/又は許可を拒否されている場合に実施することができる。したがって、コンピューティングデバイス104は、通信セッションを確立し、通信セッション中にオーディオ及び/又はビデオをルーティングするために、別のコンピューティングデバイスへのアクセスを必要とし得る。
【0032】
この点に関し、通信セッションサーバ110は、コンピューティングデバイス104に近接したコンピューティングデバイスにブロードキャストメッセージを通信することができる。一実施形態において、通信セッションサーバ110は、どのコンピューティングデバイスがコンピューティングデバイス104に近接しているかを、コンピューティングデバイスに割り当てられたインターネットプロトコル(IP)アドレスを比較することにより判定する。別の実施形態において、コンピューティングデバイス104により実行される通信セッションアプリケーションは、ユーザにその近似の(approximate)地理的位置について促す(prompt)ことができ、この情報は、通信セッションサーバ110に通信され得、そこで、将来の参照のためにロギングされる。この実施形態において、地理的位置についてのプロンプトは、ユーザが公共サービス112との通信セッションを確立するよう試みる前(例えば、コンピューティングデバイス104が通信セッションアプリケーションを最初にロードするとき)に表示されてもよい。
【0033】
通信セッションサーバ110が、コンピューティングデバイス104に近接し、かつ通信セッションサーバ112に通信上結合された1つ以上のコンピューティングデバイス(例えば、コンピューティングデバイス108)を識別した場合、通信セッションサーバ112は、識別されたコンピューティングデバイスの1つ以上に、通信セッションサーバ112が公共サーバ112との通信セッションを確立する際に識別されたコンピューティングデバイスの使用を許可されることを要求するメッセージを送信することができる。一実施形態において、要求を受信したコンピューティングデバイス(例えば、コンピューティングデバイス108)は、コンピューティングデバイス108のユーザに通信セッションサーバ112による使用を認可するように要求するプロンプトを表示する。別の実施形態において、コンピューティングデバイス108は、通信セッションサーバ112からの要求を自動的に受け入れる(例えば、通信セッションサーバ112が、通信セッションの他方のエンドポイント上のエンティティが緊急サービスであると判定した場合)。このようにして、コンピューティングデバイス104が通信セッションサーバ110により公共サービス112との通信セッションを確立することを防止されている場合、通信セッションサーバ110は、識別されたコンピューティングデバイス(例えば、コンピューティングデバイス108)を通じた通信セッションのルーティングを、識別されたコンピューティングデバイスがコンピューティングデバイス106のユーザにより登録又は所有されていないとしても容易にすることができる。
【0034】
図1において、コンピューティングデバイス106~108は、セルタワー118及びネットワーク116を介して公共サーバ112と通信するように構成される。しかしながら、いくつかの例において、コンピューティングデバイス106~108は、セルタワー118に接続不可能な場合がある(例えば、コンピューティングデバイス106~108が、セルタワー118との間で十分なセルラー信号を有さない場合)。したがって、いくつかの例において、コンピューティングデバイス106~108は、コンピューティングデバイス106~108により実行可能な通信セッションアプリケーションを介して公共サービス112との通信セッションを確立し、公共サービス112から受信したオーディオ及び/又はビデオを通信セッションサーバ110を介してコンピューティングデバイス104にルーティングすることができる。
【0035】
図2は、
図1に示すネットワーク化システムの代替的な一実装202を示し、通信セッションが通信セッションサーバ110を介して実行される。
図1の実装と同様に、通信セッションサーバ110は、最初、コンピューティングデバイス104が公共サービス112との通信セッションを確立することを拒否、防止、及び/又は禁止する可能性がある(例えば、通信セッションサーバ110が、コンピューティングデバイス104の位置を検証及び/又は確認することが不可能な場合)。
【0036】
図1のように、通信セッションサーバ110は、コンピューティングデバイス104のユーザが、コンピューティングデバイス104に通信上結合され(例えば、NFCを介して、Bluetooth(登録商標)を介して、Wi-Fi Directを介して、同じサービスセット識別子(Service Set Identifier、SSID)を使用してネットワークに接続されている等)、及び/又はコンピューティングデバイス104に近接した任意のコンピューティングデバイスにさらに関連づけられているかどうかを判定することができる。さらに及び/又は代わりに、通信セッションサーバ110は、任意のコンピューティングデバイスがコンピューティングデバイス104に近接しているかどうかを、コンピューティングデバイス104のユーザがそのようなデバイスに関連づけられているかどうかにかかわらず判定することもできる。
図1を参照して説明したように、通信セッションサーバ110は、通信セッションサーバ110に現在接続されているコンピューティングデバイスのレコード又はログを(例えば、対応する通信セッションアプリケーションを介して)維持することもでき、このレコード又はログを使用して、コンピューティングデバイス104に近接したコンピューティングデバイスを識別することができる。
【0037】
第2のコンピューティングデバイスが識別された場合(例えば、コンピューティングデバイス106及び/又はコンピューティングデバイス108)、通信セッションサーバ110は、識別されたコンピューティングデバイスがその位置を検証することを要求することができる。したがって、一実施形態において、識別されたコンピューティングデバイスは、GPSトランシーバを関与させてその位置を決定し、これは次いで、通信サーバ110に通信される。次いで、通信セッションサーバ110は、識別されたコンピューティングデバイスにより実行可能な通信セッションアプリケーションに、コンピューティングデバイス104のために公共サービス112との通信セッションを開始するように指示又は要求することができる。したがって、コンピューティングデバイス(例えば、コンピューティングデバイス106及び/又はコンピューティングデバイス108)が受け取ったオーディオ及び/又はビデオは次いで、通信セッションサーバ110に通信され、通信セッションサーバは同様に、オーディオ及び/又はビデオをコンピューティングデバイス104に通信する。このようにして、コンピューティングデバイス106及び/又はコンピューティングデバイス108は、コンピューティングデバイス104、通信セッションサーバ110、及び公共サービス112の間の通信をルーティングする。
【0038】
一実施形態において、通信セッションサーバ110は、公共サービス112から受信したオーディオ及び/又はビデオをコンピューティングデバイス104に、及び/又はコンピューティングデバイス106及び/又はコンピューティングデバイス108に送信する。この実施形態において、通信セッションサーバ110は、オーディオ及び/又はビデオをコンピューティングデバイス106(又は、コンピューティングデバイス108)に通信し、次いでコンピューティングデバイス106(又は、コンピューティングデバイス108)から同じオーディオ及び/又はビデオを再度受信し、最終的にオーディオ及び/又はビデオをコンピューティングデバイス106に通信する代わりに、公共サービス112から受信されるオーディオ及び/又はビデオを受信し、それをコンピューティングデバイス104に通信する。
【0039】
コンピューティングデバイス106及び/又はコンピューティングデバイス108に公共サービス112との通信セッションを確立させることにより、開示される実施形態は、コンピューティングデバイス104がその地理的位置を識別することが不可能な問題を克服する。さらに、通信セッションが通信セッションサーバ110を使用して公共サービス112からオーディオ及び/又はビデオを受信する場合、この実装はネットワーク輻輳を低減させ、なぜならば、通信セッションサーバ110は、最初にオーディオ及び/又はビデオをコンピューティングデバイス106及び/又はコンピューティングデバイス108に通信し、その同じオーディオ及び/又はビデオをコンピューティングデバイス106及び/又はコンピューティングデバイス108から受信し、次いでそのオーディオ及び/又はビデオをコンピューティングデバイス104に通信することによりネットワーク帯域幅を消費するのでなく、オーディオ及び/又はビデオを意図された受信者(例えば、コンピューティングデバイス104)に通信するためである。したがって、
図2に示す実装202及びその変形は、複数のデバイス間でオーディオ及び/又はビデオを分散させる際に生じる複数の技術的及びエンジニアリング上の問題を解決する。
【0040】
図3は、一例示的な実施形態による、
図1に示したデバイス104~106のアプリケーション及びデータを示し、モバイルデバイス106がPSTNを使用して確立された通信セッションを実行する。
図3に示すように、一実施形態において、コンピューティングデバイス106はモバイルデバイス106である。コンピューティングデバイス104、モバイルデバイス106、及び通信セッションサーバ110は各々、PSTNに通信上結合され、かつコンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110によりアクセス可能な公共サービスとの通信セッションを容易にするための、様々なアプリケーション及び/又はモジュールを含むことができる。
【0041】
コンピューティングデバイス104、モバイルデバイス106、及び通信セッションサーバ110は、記載のアプリケーション及び/又はモジュールの1つ以上の機能性をサポートするための様々なデータ及びハードウェアをさらに含む。詳細には図示されていないが、コンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110は、1つ以上のコンピューティングデバイスに典型的に実装されるハードウェア及び/又はソフトウェアコンポーネント、例えば、1つ以上のハードウェアプロセッサ、1つ以上のコンピュータ読取可能媒体、1つ以上の通信インターフェース、1つ以上の入力及び/又は出力デバイス、及びコンピューティングデバイスに見られる他のそのようなコンポーネントなどをさらに含んでもよい。
【0042】
コンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110の様々な機能コンポーネントは、単一のデバイス上に存在してもよく、あるいは様々な配置で複数のコンピュータにわたり分散されてもよい。コンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110の様々なコンポーネントは、1つ以上のデータベース(例えば、登録デバイスデータベース326)にアクセスすることができ、コンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110の様々なコンポーネントの各々は、互いに通信することができる。さらに、
図3のコンポーネントは単数形の意味で論じられているが、他の実施形態において、コンポーネントの複数のインスタンスが採用されてもよいことが理解されよう。
【0043】
コンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110は、様々なアプリケーション/モジュールをインスタンス化する1つ以上のコンピュータ実行可能命令を実行するように構成された1つ以上のプロセッサ(図示せず)を含んでもよい。コンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110のプロセッサは、任意タイプの市販のプロセッサ、例えば、Intel Corporation、Advanced Micro Devices、Texas Instrumentsから入手可能なプロセッサ、又は他のそのようなプロセッサなどでもよい。さらに、1つ以上のプロセッサは、フィールドプログラマブルゲートアレイ(FPGA)又は特定用途向け集積回路(ASIC)などの1つ以上の専用プロセッサを含んでもよい。プロセッサは、特定の動作を実行するためにソフトウェアにより一時的に構成されるプログラマブル論理又は回路をさらに含んでもよい。したがって、そのようなソフトウェアによりひとたび構成されると、プロセッサは、構成された機能を実行するように一意に調整された特定のマシン(又は、マシンの特定コンポーネント)になり、もはや汎用プロセッサではない。
【0044】
コンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110は、様々なデバイス、サーバ、及び機器との1つ以上の通信チャネルを確立する1つ以上の通信インターフェースをさらに含む。一実施形態において、コンピューティングデバイス104は、無線トランシーバ304、Bluetooth(登録商標)無線機306、及び有線ネットワークインターフェース308を含む。無線トランシーバ304は、802.11b/g/nなどの1つ以上の無線通信プロトコルを使用して通信セッションサーバ110との無線通信チャネルを確立するように構成され得る。さらに及び/又は代わりに、コンピューティングデバイス104は、有線通信インターフェース308(例えば、イーサネットインターフェース)を介して通信セッションサーバ110との通信チャネルを確立してもよい。
【0045】
さらに、コンピューティングデバイス104は、無線トランシーバ304を使用して無線ローカルエリアネットワーク(LAN)との無線通信チャネルを確立し、無線トランシーバ304を介してモバイルデバイス106と通信することができる(例えば、コンピューティングデバイス104とモバイルデバイス106が同じSSIDに通信上結合されている場合)。さらに及び/又は代わりに、コンピューティングデバイス104は、1つ以上のBluetooth(登録商標)プロファイルを使用して、Bluetooth(登録商標)無線機306を介してモバイルデバイス106と通信してもよい。さらに、コンピューティングデバイス104は、USBなどの有線通信インターフェース308を使用して、1つ以上の通信プロトコル(例えば、Skypeプロトコル、TCP/IP、Androidデバッグブリッジ(Android Debug Bridge、ADB)プロトコルなど)を使用してモバイルデバイス106と通信してもよい。
【0046】
コンピューティングデバイス104と同様に、モバイルデバイス106は、1つ以上の通信インターフェースを含み得る。一実施形態において、モバイルデバイス106は、Bluetooth(登録商標)無線機316、無線トランシーバ318、及び有線通信インターフェース320を含む。コンピューティングデバイス104と同様に、モバイルデバイス106は、コンポーネント316~320のうち1つ以上を使用してコンピューティングデバイス104及び/又は通信セッションサーバ110と通信することができる。さらに、モバイルデバイス106は、GPS衛星と通信するように構成されたGPSトランシーバ314と、1つ以上のセルラー通信技術(例えば、LTE、CDMA、GSMなど)を使用してセルラータワー118と通信するように構成されたセルラー無線機322を含んでもよい。モバイルデバイス106は、GPSトランシーバ314を使用してその地理的位置を決定することができ、決定された地理的位置を通信セッションサーバ110に提供することができる。
【0047】
通信セッションサーバ110もまた、コンピューティングデバイス104及び/又はモバイルデバイス106と通信する様々な通信インターフェース(図示せず)を含む。通信インターフェースは、1つ以上の無線インターフェース(例えば、ワイヤレストランシーバ)、1つ以上の有線インターフェース(例えば、USBインターフェース及び/又はイーサネットインターフェース)、又はこれらの組み合わせを含んでもよい。
【0048】
様々なマシン読取可能媒体を使用し、コンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110は、1つ以上のアプリケーション及び/又はモジュールを実装し、これらに関する様々なデータを記憶する。マシン読取可能媒体は、命令及びデータを一時的又は永続的に記憶するように構成された1つ以上のデバイスを含んでもよく、これらに限られないがランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、バッファメモリ、フラッシュメモリ、光学媒体、磁気媒体、キャッシュメモリ、他のタイプの記憶装置(例えば、消去可能プログラマブル読取専用メモリ(EEPROM))、及び/又はこれらの任意の適切な組み合わせを含んでもよい。「マシン読取可能媒体」という用語は、アプリケーション及び/又はモジュール並びにデータを記憶することが可能な単一の媒体又は複数の媒体(例えば、集中型若しくは分散型データベース、又は関連づけられたキャッシュ及びサーバ)を含むと解されるべきである。「マシン読取可能媒体」という用語は、1つ以上のマシン読取可能記憶デバイスをさらに含んでもよい。したがって、マシン読取可能媒体は、単一の記憶装置又はデバイスとして、あるいは、代わりに及び/又はさらに、複数の記憶装置又はデバイスを含む「クラウドベースの」ストレージシステム又はストレージネットワークとして実装されてもよい。
【0049】
一実施形態において、コンピューティングデバイス104、モバイルデバイス106、及び/又は通信セッションサーバ110のアプリケーション及び/又はモジュールは、コンピュータプログラミング及び/又はスクリプト言語で書かれる。そのような言語の例には、これらに限られないがC、C++、C#、Java(登録商標)、JavaScript(登録商標)、Perl、Python、又は現在知られているか若しくは後に開発される任意の他のコンピュータプログラミング及び/又はスクリプト言語が含まれる。このようにして、アプリケーション及び/又はモジュールの各々は、1つ以上のコンピュータプログラミング及び/又はスクリプト言語で実装されてもよい。
【0050】
コンピューティングデバイス104及びモバイルデバイス106は各々、通信セッションサーバ110及び/又は公共サービスと通信する通信セッションクライアント302、310を含むことができる。
図1を参照して論じたように、通信セッションクライアント302、310は、コンピューティングデバイス104及びモバイルデバイス106のコンポーネントのうち1つ以上、例えば、無線トランシーバ304、314、Bluetooth(登録商標)無線機306、316、及び/又は有線通信インターフェース308、320などを使用して通信することができる。いくつかの例において、モバイルデバイス106の通信セッションクライアント310は、GPSトランシーバ314(例えば、地理的位置及び/又は近似の地理的位置を通信セッションサーバ110に提供するため)及び/又はセルラー無線機322(例えば、Wi-Fi信号が利用不可能な場合、及び/又は有線通信チャネルが利用不可能な場合)をさらに関与させてもよい。
【0051】
さらに、通信セッションクライアント310は、ダイヤラアプリケーション312とやりとりして、セルラー無線機322及びセルラータワー118を介して公共サービスへの通信セッションを確立するように構成される。
図1を参照して上で説明したように、通信セッションクライアント310は、ダイヤラアプリケーション312の機能性のうち1つ以上を、そのような機能性を提供するAPIを介して呼び出すことができる。一実施形態において、通信セッションサーバ110は、モバイルデバイス106の通信セッションクライアント310に、ダイヤラアプリケーション312を介して公共サービスとの通信セッションを確立する指示を提供する。別の実施形態では、コンピューティングデバイス104の通信セッションクライアント302がこの指示を提供する。いずれの場合にも、通信セッションクライアント310は、ダイヤラアプリケーション312から受け取ったオーディオ及び/又はビデオを、コンピューティングデバイス104の通信セッションクライアント302にルーティングすることができる。一実施形態において、オーディオ及び/又はビデオのルーティングは、オーディオ及び/又はビデオを通信セッションサーバ110に(例えば、SIPなどの通信プロトコルを介して)通信することを含んでもよく、通信セッションサーバは次いで、オーディオ及び/又はビデオをコンピューティングデバイス104にリレーする。別の実施形態において、オーディオ及び/又はビデオのルーティングは、別の通信プロトコル(例えば、Skypeプロトコル)を使用してオーディオ及び/又はビデオをコンピューティングデバイス104の通信セッションクライアント302に直接通信することを含んでもよい。
【0052】
いずれの実施形態においても、ダイヤラアプリケーション312から受け取ったオーディオ及び/又はビデオは、コンピューティングデバイス104の通信セッションクライアント302に通信され(これは次いで、コンピューティングデバイス104の対応する出力デバイスにより出力され)、コンピューティングデバイス104の通信セッションクライアント302が受け取ったオーディオ及び/又はビデオは、モバイルデバイス106のダイヤラアプリケーション312に通信され、これは次いで、公共サービスに通信される。このように、通信セッションクライアント302及びダイヤラアプリケーション312は、コンピューティングデバイス104と公共サービスとの間に確立された通信チャネルにおけるエンドポイントであり、ここで、モバイルデバイス106は、これら2つのエンドポイント間の仲介者としての機能を果たし、通信セッションサーバ110は、別の仲介者としての機能をさらに果たしてもよい。
【0053】
通信セッションサーバ110は、コンピューティングデバイス104とPSTNを介してアクセス可能な公共サービスとの間の通信セッションを確立するための様々なアプリケーション及び/又はデータを含む。一実施形態において、通信セッションサーバ110は、Skype for Business Serverなどの通信セッションサーバアプリケーション324を含む。通信セッションサーバ110は、登録デバイスデータベース326及び通信ルールデータベース328などの1つ以上のデータベース326~328をさらに含んでもよい。最後に、通信セッションサーバ110は、通信ルール評価アプリケーション及び/又はモジュール330を含んでもよく、これは、通信セッションサーバアプリケーション324により実行可能でもよく、通信ルールデータベース328の通信ルールのうち1つ以上を評価する。
【0054】
一実施形態において、通信セッションサーバ110は、通信セッションサーバアプリケーション324と他の通信セッションクライアントアプリケーション(例えば、通信セッションアプリケーション302又は通信セッションアプリケーション310)との間の接続を監視する。これらの接続を監視するために、通信セッションサーバ110は、登録されたデバイスのデータベース(例えば、データベース326)を実装することができる。登録デバイスデータベース326は、特定のユーザに関連づけられたデバイスと、これらデバイスが通信セッションサーバ110に接続されているかどうかのリストを含む。例えば、登録デバイスデータベース326内の各レコードは、デバイスに対応することができ、ここで、レコードは、デバイスのオペレーティングシステム、装置の製造元及び/又はモデル、デバイスに(例えば、ユーザ識別子を介して)関連づけられたユーザ、デバイスが(例えば、通信セッションアプリケーションを介して)通信セッションサーバ110に接続されているかどうか、及びデバイスの地理的位置(又は、近似の地理的位置)を識別する。一実施形態において、コンピューティングデバイスの地理的位置は、コンピューティングデバイスに収容された(又は、通信上結合された)GPSトランシーバから決定される。別の実施形態において、通信セッションサーバ110及び/又は通信セッションクライアントは、コンピューティングデバイスに関連づけられたIPアドレスを使用して(例えば、ジオロケーションサービスプロバイダを使用することにより)近似の地理的位置を決定する。さらに別の実施形態において、コンピューティングデバイスのユーザが、コンピューティングデバイスの地理的位置及び/又は近似の地理的位置を(例えば、通信セッションアプリケーションにより表示されるプロンプトを介して)提供する。
【0055】
登録デバイスデータベース326は、関係データベース、階層データベース、アレイ、リンクリスト、フラットファイルとして、分散データベース又はローカルに記憶されたデータベースとして、又はこれらの組み合わせとして実装することができる。一例として、登録デバイスデータベース326は、Microsoft SQL Serverを使用して実装され、1つ以上の構造化問い合わせ言語(Structured Query Language、SQL)文を使用して通信セッションサーバアプリケーション324を介してアクセス可能でもよい。
【0056】
一実施形態において、通信セッションクライアントのユーザは、通信セッションサーバ110が監視する情報を通知され、ユーザが情報監視について理解していることを確認するように促される。いくつかの例において、通信セッションサーバ110は、ユーザが通信セッションサーバ110による情報監視に同意しないことをユーザが示す場合、コンピューティングデバイスの通信セッションアプリケーションへの接続を拒否してもよい。ユーザが通信セッションサーバ110による情報監視を拒否したとき、通信セッションサーバ110は、コンピューティングデバイスが通信セッションサーバ110に接続することを許可せず、したがって、通信セッションサーバ110は、コンピューティングデバイスの情報監視に関与しない。
【0057】
登録デバイスデータベース326を維持することにより、通信セッションサーバ110は、どのコンピューティングデバイスが通信セッションサーバ110に接続されている(例えば、通信セッションサーバアプリケーション324と通信している)か、及び/又はどのコンピューティングデバイスが特定のユーザに対して登録されているかを監視及び/又は判定することができる。このようにして、通信セッションサーバ110が、コンピューティングデバイス104が通信セッションサーバ110及び1つ以上のIP電話プロトコルを介して公共サービスとの通信セッションを確立することを拒否した場合、通信セッションサーバアプリケーション324は、登録デバイスデータベース326にクエリして、ユーザの任意の他のコンピューティングデバイスが通信セッションサーバ110に通信上結合されている(例えば、第1のコンピューティングデバイスのレコードが第2のコンピューティングデバイスのレコードと同じユーザ識別子を含む)かどうかを判定することができる。次いで、通信セッションサーバアプリケーション324は、公共サービスとの通信セッションを(例えば、ダイヤラアプリケーション312を介して)確立し、かつコンピューティングデバイス104と公共サービスとの間のオーディオ及び/又はビデオの転送をルーティングする指示を、識別/判定されたコンピューティングデバイス(例えば、モバイルデバイス106)の通信セッションアプリケーションに送信することができる。
【0058】
同様に、
図1を参照して論じたように、通信セッションサーバアプリケーション324が、通信セッションサーバ110に通信上結合されたユーザの任意の他のコンピューティングデバイスを判定及び/又は識別することが不可能な場合、通信セッションサーバアプリケーション324は、登録デバイスデータベース326にクエリして、コンピューティングデバイス104に近接する可能性のある任意の他のコンピューティングデバイスを、それらコンピューティングデバイスがコンピューティングデバイス104のユーザに関連づけられていないとしても識別することができる(例えば、識別されたコンピューティングデバイスに関連づけられたレコードのユーザ識別子が、コンピューティングデバイス104に関連づけられたレコードの同じユーザ識別子ではない)。一実施形態において、通信セッションサーバアプリケーション324は、通信セッションサーバ110に通信上結合されたコンピューティングデバイスの1つ以上のレコードの地理的位置属性を参照し、コンピューティングデバイス104に最も近い可能性のある地理的位置を示すレコードを選択する。
【0059】
代替的な一実施形態において、通信セッションサーバアプリケーション324は、コンピューティングデバイス104の通信セッションアプリケーション302に、任意の他のコンピューティングデバイスがコンピューティングデバイス104に近接しているかどうかを判定するように指示する。この実施形態において、通信セッションアプリケーション302は、他の通信セッションアプリケーションがブロードキャストメッセージに応答することを要求するネットワークブロードキャストメッセージを送信することができる。応答(例えば、応答は、あるコンピューティングデバイスがコンピューティングデバイス104と同じサブネット上にあり、又は同じSSIDを使用していることを示す)に基づいて、通信セッションアプリケーション302は、付近の(又は、付近の可能性がある)コンピューティングデバイスを通信セッションサーバ110に通知し、通信セッションサーバ110は次いで、これら識別されたコンピューティングデバイスと通信する。
【0060】
前に説明したように、識別されたコンピューティングデバイス(例えば、コンピューティングデバイス104のユーザに関連づけられていないコンピューティングデバイス)の通信セッションアプリケーションは、識別されたコンピューティングデバイスがコンピューティングデバイス104と公共サービスとの間のオーディオ及び/又はビデオのルーティングに使用されるための(例えば、識別されたコンピューティングデバイスがコンピューティングデバイス104と公共サービスとの間の仲介者として使用されることになる)許可を要求するプロンプト又は他のメッセージを表示することができる。
【0061】
コンピューティングデバイス104が通信セッションサーバ110を介して特定の公共サービス(又は、他のエンティティ)と通信することを認可及び/又は許可されているかどうかを判定するために、通信セッションサーバ110は、どの条件の下でコンピューティングデバイスが公共サービスと通信することを認可及び/又は許可されているかを規定する通信ルールデータベース328を含む。通信ルールデータベース328の通信ルールは、これらに限られないが条件文(例えば、IF-THEN-ELSE文)、正規表現、多岐分岐文(例えば、SWITCH文)、又はこれらの組み合わせを含む1つ以上の文法及び/又はシンタックス構造を使用して実現されてもよい。通信セッションサーバ110は、提供された入力に従って通信ルールのうち1つ以上を評価する通信ルール評価アプリケーション330をさらに含むことができる。通信ルール評価アプリケーション330は、通信セッションサーバ324のモジュール又はコンポーネントでもよく、かつ/あるいは通信セッションサーバ110のプロセスとしてインスタンス化されてもよい。
【0062】
一実施形態において、第1の通信ルールは、コンピューティングデバイスが通信セッションサーバ110に登録され、登録デバイス326データベース内の対応するレコードの値として所定の地理的位置を有する必要があることを規定する。さらに、第2の通信ルールは、特定のタイプ(例えば、スマートフォン)の、又は特定のオペレーティングシステム(例えば、iOS(登録商標)オペレーティングシステム及び/又はAndroid(登録商標)オペレーティングシステム)を実行するコンピューティングデバイスが、対応する通信セッションアプリケーションを介して通信セッションサーバ110に接続する(例えば、ログインする)と地理的位置を提供する必要があることを規定することができる。さらに、第3の通信ルールは、受け入れ可能な通信プロトコル(例えば、H.323及び/又はSIP)、そのような通信セッションを確立することを認可されたコンピューティングデバイスのタイプ、及びコンピューティングデバイスが公共サービスとの通信セッションを確立する前に決定可能な地理的位置及び/又は所定の地理的位置を有さなければならないかどうかを含む、公共サービスに接続する複数の条件を規定することができる。
【0063】
したがって、通信ルール評価アプリケーション330は、通信セッションサーバ110に通信上結合されたコンピューティングデバイスの各々(例えば、コンピューティングデバイス104及びモバイルデバイス106)について、これらのルールを評価することができる。さらに及び/又は代わりに、通信ルール評価アプリケーション330は、接続されたコンピューティングデバイスに対して通信ルールのうち選択されたものを評価してもよい(例えば、通信ルールが、それが特定のコンピューティングデバイスタイプ、オペレーティングシステム、通信プロトコル、又は他のそのような特性について評価されるべきであると示す場合)。通信ルール評価アプリケーション330が、通信ルールのうち1つ以上を満たすことが不可能なとき、通信セッションサーバ110は、コンピューティングデバイス104と公共サービスとの間の通信セッションを最初に拒否することができる。通信ルール評価アプリケーション330が、通信ルールのうち所定の1つ又はセットを満たすことが可能なとき、通信ルール評価アプリケーション330は、要求された通信セッションの確立を認可することができる。
【0064】
拒否が生じた場合、通信セッションサーバアプリケーション324は、モバイルデバイス106(又は、コンピューティングデバイス104に近接した他のコンピューティングデバイス)を通じて通信セッションの確立を試みるように構成され得る。本明細書で開示されるように、通信セッションサーバ110は、モバイルデバイス106により実行可能な(又は、実行されている)通信セッションアプリケーション310と通信することにより、モバイルデバイス106を介した通信セッションの確立を試みることができる。このようにして、通信ルールは、これらに限られないがコンピューティングデバイスタイプ、使用されている通信プロトコル、コンピューティングデバイスが決定可能な又は決定された地理的位置を有するかどうか、及び他のそのような特性又はこれらの組み合わせに基づいて、公共サービスとの通信セッションが許容される状況を定義する。
【0065】
図4は、一例示的な実施形態による、
図3に示したデバイスのアプリケーション及びデータの別の実装を示し、モバイルデバイス106が通信セッションサーバ110を使用して確立された通信セッションを実行する。上で論じたように、通信ルールは、コンピューティングデバイスの地理的位置が決定可能か又は決定できる場合にコンピューティングデバイスがIP電話プロトコル又はVoIPプロトコル(例えば、H.323、SIPなど)を使用して通信セッションを確立できることを規定することができる。
図4に示す実装において、コンピューティングデバイス104は、コンピューティングデバイス104がその地理的位置の能力がない可能性があり、かつ/あるいはコンピューティングデバイス104のユーザがそのような位置を提供することが不可能なため、支援されない公共サービスとの通信セッションを確立することが不可能な場合がある。したがって、最初、コンピューティングデバイス104がIP電話又はVoIPプロトコルを使用して公共サービスとの通信セッションを確立するよう試みる場合、通信セッションサーバ110は、最初、通信セッションの確立を拒否することができる。
【0066】
しかしながら、モバイルデバイス106が、コンピューティングデバイス104に近接している場合がある。例えば、モバイルデバイスは、Bluetooth(登録商標)無線機306、316を介してコンピューティングデバイスに通信上結合されていることがあり、あるいはコンピューティングデバイス104と同じ無線ネットワークに接続されていることがある(例えば、コンピューティングデバイス104とモバイルデバイス106が、同じサブネット内のIPアドレスを割り当てられていてもよい)。
【0067】
さらに、モバイルデバイス106がGPSトランシーバ314を備えるとき、モバイルデバイス106は、その地理的位置を通信セッションサーバ110に提供可能である。したがって、モバイルデバイス106は、PSTNを介してアクセス可能な公共サービスとの通信セッションの確立に関連づけられた1つ以上の通信ルールを満たすように構成される。したがって、通信セッションサーバアプリケーション324は、モバイルデバイス106がコンピューティングデバイス104と公共サービスとの間の仲介者として機能する場合、IP電話又はVoIPプロトコルを使用するコンピューティングデバイス104と公共サービスとの間の通信セッションを認可することができる。
【0068】
前に説明したように、モバイルデバイス106は、オーディオ及び/又はビデオをコンピューティングデバイス104に直接(例えば、Skypeプロトコルを介して)通信することができ、あるいは、モバイルデバイス106は、受信したオーディオ及び/又はビデオを通信セッションサーバ110に通信することができ、通信セッションサーバ110は次いで、受信したオーディオ及び/又はビデオをコンピューティングデバイス104に(例えば、TCP上のSIPを介して)通信する。さらに及び/又は代わりに、通信セッションサーバ110は、受信したオーディオ及び/又はビデオをモバイルデバイス106に通信し、次いでモバイルデバイス106がそのようなオーディオ及び/又はビデオをコンピューティングデバイス104に直接か又は通信セッションサーバ110を介してかのいずれかで通信することによりネットワーク帯域幅負荷を増加させるのでなく、オーディオ及び/又はビデオをコンピューティングデバイス104に通信することができる。
【0069】
図5は、一例示的な実施形態による、
図1に示すコンピューティングデバイスを使用して通信セッションを確立する方法502を示す。方法502は、
図3~
図4に示されるコンポーネントの1つ以上と共に、
図1~
図2に示される装置及び/又はサーバの1つ以上により実施することができ、これらを参照して論じられる。
【0070】
図1を参照し、方法502は、コンピューティングデバイス104などの第1のコンピューティングデバイスがIP電話又はVoIPプロトコルを使用して公共サービス112との通信セッションを確立するよう試みる方法論を示す。最初、コンピューティングデバイス104が、通信セッションサーバ110に、通信セッションを確立する要求を送信し(動作504)、通信セッションの第1のエンドポイントはコンピューティングデバイス104を含み、第2のエンドポイントは公共サービス112を含む。要求に追加で、コンピューティングデバイス104は、コンピューティングデバイス104に関する識別情報、例えば、コンピューティングデバイスタイプ(例えば、ラップトップ、スマートフォン、デスクトップコンピュータなど)、コンピューティングデバイス104がその地理的位置を決定することができ又は決定するよう試みたかどうか、コンピューティングデバイス104に関連づけられたユーザ識別子、及び他のそのような識別情報などを送信することができる(動作506)。別の実施形態において、コンピューティングデバイス104は、通信セッションアプリケーションが通信セッションサーバ110に最初に接続するとき、この情報を提供する。
【0071】
次いで、通信セッションサーバ110は、それがコンピューティングデバイス104と公共サービス112との間の通信セッションを確立できるかどうかを判定する。この方法論についてのより詳細な説明は、
図6A~
図6Bを参照して論じられる。しかしながら、
図5に関しては、コンピューティングデバイス104は、通信サーバ110からいくつかの応答のうち1つを受信し、該応答は、1)通信セッションが許容されることを示す応答であり、その場合、コンピューティングデバイス104は公共サービス112との通信セッションの確立に進む、2)通信セッションが許容されず、通信セッションを確立するためにさらなる試行は行われないことを示す応答、又は、3)通信セッションを完了するために第2のコンピューティングデバイスが利用可能かどうかを、コンピューティングデバイス104が判定すべきであることを示す応答である。
【0072】
上記応答(1)に関して、コンピューティングデバイス104は、第2のコンピューティングデバイスの有無にかかわらず通信セッションが許容されるかどうかのこの第1の応答を受信することができる。通信セッションサーバ110が、コンピューティングデバイス104のために通信セッションを完了するのに第2のコンピューティングデバイスが必要であり得ると判定した場合、コンピューティングデバイス104は、通信セッションを確立するメッセージを依然として受信する(動作516)。一実施形態において、通信セッションサーバ110は、コンピューティングデバイス104と識別された第2のコンピューティングデバイスとの間のモデレータ/仲介者としての機能を果たす。したがって、コンピューティングデバイス104の観点からは、コンピューティングデバイス104は、通信セッションサーバ110を介して公共サービス112と通信している。コンピューティングデバイス104(又は、コンピューティングデバイス104のユーザ)は、通信セッションを確立するために第2のコンピューティングデバイスが使用されている(例えば、第2のコンピューティングデバイスにより実行可能なダイヤラアプリケーションを介する)ことを認識しなくてもよい。このようにして、第2のコンピューティングデバイスは、それが公共サービス112との通信セッションを実行するとき、コンピューティングデバイス104に対して効果的に透過的である(動作518)。
【0073】
さらに及び/又は代わりに、コンピューティングデバイス104は、通信セッションサーバ110から、通信セッションの仲介者としての機能を果たす第2のコンピューティングデバイスを識別する指示(例えば、応答(3))を受信することができる。したがって、一実施形態において、コンピューティングデバイス104は、最初、モバイルデバイスなどの第2のコンピューティングデバイスがコンピューティングデバイス104に近接しているかどうかを判定することができる(動作508)。コンピューティングデバイス104が、第2のコンピューティングデバイスがコンピューティングデバイス104に近接していないと判定した場合(例えば、動作508の「NO」分岐)、コンピューティングデバイス104は、通信セッションを終了し及び/又は終わらせる(terminate)ことができる。
【0074】
あるいは、コンピューティングデバイス104が、第2のコンピューティングデバイスがコンピューティングデバイス104に近接していると判定した場合(例えば、動作508の「YES」分岐)、コンピューティングデバイス104は、第2のコンピューティングデバイスからの、通信セッションを確立する認可を要求することができる(動作512)。一実施形態において、認可の要求は、コンピューティングデバイス104の通信セッションアプリケーションにより、識別されたコンピューティングデバイスの通信セッションアプリケーションに通信されてもよい。この要求は、例えば、識別されたコンピューティングデバイスがコンピューティングデバイス104のユーザにも関連づけられている場合などに、コンピューティングデバイス104のユーザに対して透過的であり得る。さらに及び/又は代わりに、プロンプト又は他のメッセージが識別されたコンピューティングデバイスにより表示され、識別されたコンピューティングデバイスのユーザが、コンピューティングデバイス104との通信セッションを確立する認可を提供することを要求してもよい。
【0075】
認可が付与されない場合(例えば、動作512の「付与されない」分岐)、コンピューティングデバイス104は、通信セッションを終わらせることができる。あるいは、認可が付与された場合(例えば、動作512の「付与された」分岐)、コンピューティングデバイス104は、識別されたコンピューティングデバイスを介して公共サービス112との通信セッションを確立する(動作514)。コンピューティングデバイス104と公共サービス112との間の仲介者としての機能を果たす識別されたコンピューティングデバイスにより実行される動作は、
図7A~
図7Bを参照してさらに論じられる。
【0076】
図6A~
図6Bは、一例示的な実施形態による、
図1~
図2に示すモバイルデバイスを通じて通信セッションをルーティングする方法602を示す。方法602は、
図3~
図4に示されるコンポーネントの1つ以上と共に、
図1~
図2に示される装置及び/又はサーバの1つ以上により実施することができ、これらを参照して論じられる。
【0077】
図1及び
図6を参照し、方法602は、通信セッションサーバ110が通信セッションサーバ110と公共サービス112との間の仲介者としてモバイルデバイスなどの第2のコンピューティングデバイスを使用して公共サービス112との通信セッションを確立するよう試みる方法論を示す。
【0078】
図6Aを参照し、通信セッションサーバ110は、最初、コンピューティングデバイス104などの第1のコンピューティングデバイスから、PSTNを介してアクセス可能な公共サービス112との通信セッションを確立する要求を受信する。(動作604)。一実施形態において、要求は、TCP又はUDPなどの伝送プロトコルで通信されるメッセージである。さらに及び/又は代わりに、要求は、H.323又はSIPなどのIP電話又はVoIPプロトコルを使用して通信されてもよい。
【0079】
次いで、通信セッションサーバ110は、コンピューティングデバイス104と公共サービス112との間の通信セッションが許容されるかどうかを判定する(動作606)。
図3~
図4を参照して論じたように、通信セッションサーバアプリケーション324は、通信ルール評価アプリケーション330を起動及び/又は実行して、通信セッションが許容されるかどうかを判定する際に通信ルールデータベース328に記憶された1つ以上の通信ルールを評価することができる。1つ以上の通信ルールを評価する際に、通信ルール評価アプリケーション330は、登録デバイスデータベース326に記憶された1つ以上のレコードと、特に、特定のレコードの1つ以上のレコード属性を参照することができる。
【0080】
いくつかの例において、評価されるとき、通信ルールは、コンピューティングデバイス104と公共サービス112との間の通信セッションを許可し得る(例えば、動作606の「許可された」分岐)。したがって、通信セッションサーバ110は、コンピューティングデバイス104と公共サービス112との間の通信セッションを許可することができる(動作608)。
【0081】
あるいは、評価されるとき、通信ルールは、コンピューティングデバイス104と公共サービス112との間の通信セッションを許可しない場合がある(例えば、動作606の「許可されない」分岐)。しかしながら、通信ルールは、例えば、第2のコンピューティングデバイスの地理的位置が決定可能及び/又は決定された場合に通信セッションを確立するために第2のコンピューティングデバイスが使用されてもよいことを規定することなどにより、通信セッションを確立する代替的な一連の行動を許可又は定義してもよい。
【0082】
この点に関し、通信セッションサーバアプリケーション324は、最初、第2のコンピューティングデバイス(例えば、モバイルデバイス106)がコンピューティングデバイス104のユーザを関連づけられ及び/又は登録されているかどうかを判定することができる(動作610)。一実施形態において、通信セッションサーバアプリケーション324は、コンピューティングデバイス104に関連づけられた登録デバイスレコードのユーザ識別子属性を通信セッションサーバ110と通信している(例えば、ログインしている)コンピューティングデバイスの1つ以上の登録デバイスレコードのユーザ識別子属性と比較することにより、この判定を行う。代替的な一実施形態において、レコードは、通信セッションサーバ110にユーザアカウントを有するユーザに対応し、ユーザレコードは、特定のユーザに関連づけられたコンピューティングデバイスを識別する。
【0083】
通信セッションサーバ110が、モバイルデバイス106がコンピューティングデバイス106のユーザに関連づけられていると判定した場合(例えば、動作610の「YES」分岐)、通信セッションサーバ110は、モバイルデバイス106により実行可能な通信セッションアプリケーションに、コンピューティングデバイス104により最初に要求された公共サービス112との通信セッションを確立するメッセージを通信する(動作612)。一実施形態において、通信セッションサーバ110は次いで、モバイルデバイス106から受信したオーディオ及び/又はビデオをコンピューティングデバイス104に、及びコンピューティングデバイス104から受信したオーディオ及び/又はビデオをモバイルデバイス106に通信する(動作614)。代替的な一実施形態において、通信セッションサーバ110は、コンピューティングデバイス104及び/又はモバイルデバイス106に、デバイス104~106間で通信が生じるように他方のコンピューティングデバイスとの直接接続を確立するよう指示する。
【0084】
再び動作610を参照し、通信セッションサーバ110は、コンピューティングデバイス104のユーザに対しても登録されている、通信セッションサーバ110と通信しているコンピューティングデバイスがないと判定する場合がある(例えば、動作610の「NO」分岐)。この点に関し、一実施形態において、通信セッションサーバ110は次いで、1つ以上のコンピューティングデバイスがコンピューティングデバイス104に近接しているかどうかを判定することができる(動作616)。一実施形態において、通信セッションサーバ110は、登録デバイスデータベース326の1つ以上のレコードと、特にレコードの地理的位置属性を参照することにより、この動作を実行する。次いで、通信セッションサーバアプリケーション324は、取り出されたレコードの地理的位置属性値をコンピューティングデバイス104に対応するレコードの地理的属性値と比較して、どのコンピューティングデバイスがコンピューティングデバイス104に近接している(例えば、所定及び/又はしきい距離の範囲内である)可能性があるかを判定することができる。別の実施形態において、通信セッションサーバ110は、登録デバイスレコードの別の属性、例えば、IPアドレス属性などを参照し、IPアドレス属性のIPアドレス値のジオロケーションを通じて、コンピューティングデバイス104の地理的位置の所定の距離及び/又はしきいの範囲内である潜在的なコンピューティングデバイスの位置を特定する(locates)。
【0085】
さらなる一実施形態において、通信セッションサーバ110は、コンピューティングデバイス104の通信セッションアプリケーションにメッセージを通信し、コンピューティングデバイス104に、コンピューティングデバイス104の近接範囲内に他のコンピューティングデバイスがあるかどうかを判定するように指示することができる(動作616)。この実施形態では、コンピューティングデバイス104が、コンピューティングデバイス104が位置する場所に対してローカルのさらなるディスカバリ方法論(例えば、LANディスカバリ、Bluetooth(登録商標)ディスカバリなど)を活用可能なとき、コンピューティングデバイス104が、それに近接したデバイスがあるかどうかを判定するのにより良いポジションにあるという仮定がある。
【0086】
コンピューティングデバイス104に近接したコンピューティングデバイスがあるかどうかを判定することに追加で、コンピューティングデバイス104の通信セッションアプリケーションはさらに、コンピューティングデバイス104と同じSSID及び/又はLANに接続されたコンピューティングデバイスのサブネットにメッセージをブロードキャストしてもよい。通信セッションアプリケーションはさらに、Bluetooth(登録商標)ディスカバリを通じて見えるコンピューティングデバイスにブロードキャストメッセージを送信してもよい。通信セッションアプリケーションは、あるコンピューティングデバイスがコンピューティングデバイス104に近接している可能性があっても、コンピューティングデバイス104がコンピューティングデバイス104の通信セッションアプリケーションと通信するように構成された通信セッションアプリケーションを含まない可能性があるため、このメッセージを送信してもよい。通信セッションアプリケーションによるブロードキャストメッセージは、コンピューティングデバイス104がコンピューティングデバイス104に近接する他のコンピューティングデバイスと通信可能であることを保証する。
【0087】
コンピューティングデバイス104に近接したコンピューティングデバイスを、通信セッションサーバ110又はコンピューティングデバイス104のいずれかにより判定することが不可能な場合(例えば、動作616の「NO」分岐)、方法602は
図6Bの動作618に進む。動作618において、コンピューティングデバイス104は、コンピューティングデバイス104が意図された公共サービス112との通信セッションを確立することが不可能というメッセージ又はプロンプトを表示することができる。一実施形態において、通信セッションサーバ110が、コンピューティングデバイス104に、このメッセージを表示するように指示する。別の実施形態において、コンピューティングデバイス104の通信セッションアプリケーションが、このメッセージを表示すべきであると決定する。さらに及び/又は代わりに、コンピューティングデバイス104は、アラーム又は他の大きいノイズを発して(又は、発するように指示されて)、ユーザが即時の支援を要する場合にコンピューティングデバイス104の付近にいる可能性のある他者に警告することができる。アラーム及び/又は他の大きいノイズは、もしあるとすればそれをコンピューティングデバイス104がいつ発するべきかに関して、ユーザにより構成可能でもよい。
【0088】
あるいは、適切なコンピューティングデバイスが、コンピューティングデバイス104の通信セッションアプリケーション及び/又は通信セッションサーバ110を介してコンピューティングデバイス104に近接していると判定された場合(例えば、動作616の「YES」分岐)、方法602は
図6Bの動作620に進む。動作620において、通信セッションサーバ110は、それが識別されたコンピューティングデバイス(例えば、モバイルデバイス106)にアクセスする認可を有するかどうかを判定する。一実施形態において、通信セッションサーバ110は、識別されたコンピューティングデバイスに対する即時の認可を付与される(例えば、緊急事態が関わる場合)(例えば、動作620の「YES」分岐)。一実施形態において、通信セッションサーバ110は、「緊急事態」として定義されるエンドポイント(例えば、電話番号又は他のコンタクト)を規定する1つ以上の通信ルール(例えば、IF endpoint.contact==“911” THEN “emergency”)を参照し、コンピューティングデバイス104により最初に試みられたエンドポイントコンタクトを入力として使用してこれら通信ルールの1つ以上を使用して評価することにより、緊急事態が関わるかどうかを判定する。一実施形態において、通信ルールのいずれもエンドポイントコンタクトが緊急事態に関連づけられることを示さない場合、通信セッションサーバ110は、緊急事態が関わらないと判定する。
【0089】
代替的な一実施形態において、識別されたコンピューティングデバイスはユーザに関連づけられておらず、緊急事態は関わらない。この実施形態において、プロンプト又は他のメッセージが識別されたコンピューティングデバイスに表示され、コンピューティングデバイス104の通信セッションアプリケーションに認可を付与できるかどうかを要求してもよい。
【0090】
通信セッションアプリケーションが認可を付与された場合、方法602は動作622に進む。通信セッションアプリケーションが認可を付与されない場合(例えば、動作620の「NO」分岐)、方法602は動作618に戻る。
【0091】
動作622において、通信セッションサーバ110は、識別されたコンピューティングデバイス(例えば、モバイルデバイス106)に、コンピューティングデバイス104が最初にコンタクトするよう意図した公共サービスとの通信セッションを確立するように指示する。
図2~
図3を参照して論じたように、識別されたコンピューティングデバイスは、ダイヤラアプリケーション312を含み得、識別されたコンピューティングデバイスの通信セッションアプリケーション310は、開示されたAPIを通じてダイヤラアプリケーション312の機能性のうち1つ以上にアクセスするように構成され得る。一実施形態において、識別されたコンピューティングデバイスは、ダイヤラアプリケーション312を介して要求された公共サービス112にコンタクトし、ダイヤラアプリケーション312は、公共サービス112から受信したオーディオ及び/又はビデオを、通信セッションアプリケーションを介して通信セッションサーバ110に通信する(動作624)。代替的な一実施形態において、通信セッションサーバ110は、コンピューティングデバイス104及び/又はモバイルデバイス106に、コンピューティングデバイス104~106間で通信が生じるように他方のコンピューティングデバイスとの直接接続を確立するように指示する(動作624)。
【0092】
このように、コンピューティングデバイス104と通信セッションサーバ110が協働して公共サービス112との通信セッションを確立する方法を説明したが、本開示は、通信セッションサーバ110が公共サービス112との間でオーディオ及び/又はビデオをルーティングするために使用する第2のコンピューティングデバイス(例えば、モバイルデバイス106)の動作に移る。
【0093】
図7A~
図7Bは、一例示的な実施形態による、
図1のコンピューティングデバイス104により開始された通信セッションをルーティングするために
図3~
図4のモバイルデバイス106が使用される方法702を示す。方法702は、
図3~
図4に示されるコンポーネントの1つ以上と共に、
図1~
図2に示される装置及び/又はサーバの1つ以上により実施することができ、これらを参照して論じられる。
【0094】
図1及び
図7を参照し、方法702は、公共サービス112との通信セッションを確立するために、コンピューティングデバイス104が通信セッションの確立を防止及び/又は禁止されているという判定に応答して、モバイルデバイス106を使用する方法論を示す。
図7の文脈において、通信セッションサーバ110は、モバイルデバイス106を通信セッションを確立するのに適切なデバイスとして識別しており、モバイルデバイス106(又は、モバイルデバイス106のユーザ)は、通信セッションサーバ110にモバイルデバイス106を使用する認可を付与していることが仮定される。
【0095】
最初、
図7Aを参照し、モバイルデバイス106は、公共サービス112との通信セッションを確立する指示を受信する(動作704)。一実施形態において、指示は、通信セッションサーバ110から受信され得る。別の実施形態において、指示は、コンピューティングデバイス104から受信され得る。
【0096】
次いで、モバイルデバイス106は、公共サービス112との通信セッションのための通信モードを決定する(動作706)。一実施形態において、通信セッションサーバ110及び/又はコンピューティングデバイス104からの指示は、モバイルデバイス106に、公共サービス112との通信セッションの通信モードについて指示する。別の実施形態において、モバイルデバイス106は、第1の通信モード(例えば、802.11b/g/n)の強度及び/又は品質を決定し、第2の通信モード(例えば、LTE、CDMA、GSMなど)の強度及び/又は品質を決定し、より良好な強度及び/又は品質を有する通信モードを選択する。さらに別の代替的な一実施形態において、モバイルデバイス106は、第1の通信モード(例えば、セルラー)を最初選択し、第1の通信モードを介して接続を確立することが不可能な場合に第2の通信モード(例えば、802.11b/g/n)を選択する。
【0097】
モバイルデバイス106が、非セルラー通信モードが通信セッションに対してより適すると判定した場合(例えば、動作706の「非セルラー」分岐)、モバイルデバイス106は、通信セッションサーバ110との通信セッションを開始し、通信セッションサーバ110に、公共サービス112が通信セッションのエンドポイントであることを通知する(動作708)。その後、モバイルデバイス106は、前に論じたように非セルラー通信モードを使用して公共サービス112との通信セッションに関与し、ここで、モバイルデバイス106は、公共サービス112と通信するために所定の通信プロトコル(例えば、TCP上のSIP)を使用する(動作710)。
【0098】
あるいは、モバイルデバイス106がセルラー通信モードを決定(又は、選択)した場合(例えば、動作706の「セルラー」分岐)、通信セッションアプリケーション310は、ダイヤラアプリケーション312に、通信セッションのエンドポイントとしてコンピューティングデバイス104により最初に指定された公共サービス112にコンタクトするように指示する(動作712)。前に説明したように、モバイルデバイス106のオペレーティングシステムは、公に開示されたAPIを通じてダイヤラアプリケーション312の1つ以上の機能へのアクセスを可能にし得る。次いで、通信セッションアプリケーション310は、ダイヤラアプリケーション312と関連して動作して、公共サービス312からのオーディオ及び/又はビデオをコンピューティングデバイス104に提供する(動作714)。
【0099】
次に、
図7Bを参照し、モバイルデバイス106は次いで、コンピューティングデバイス104との通信が直接であるか又は仲介者(例えば、通信セッションサーバ110)を通じてであるかを判定する(動作716)。一実施形態において、この判定は、モバイルデバイス106が公共サービス112との通信セッションを確立する指示を受信したときに最初に実行される。この点に関し、この指示は、モバイルデバイス106がコンピューティングデバイス104と(例えば、直接通信プロトコルを介して)通信すべきか、又は通信セッションサーバ110と(例えば、IP電話又はVoIPプロトコルを介して)通信すべきかの指標をさらに含んでもよい。
【0100】
モバイルデバイス106が、コンピューティングデバイス104との通信が直接通信であると判定した場合(例えば、動作716の「YES」分岐)、モバイルデバイス106は、公共サービス112から受信したオーディオ及び/又はビデオをコンピューティングデバイス104に直接(例えば、通信セッションサーバ110が仲介者として機能することなく)通信し、その逆もまた同様である(動作718)。あるいは、モバイルデバイス106が、コンピューティングデバイス104との通信が直接通信でないと判定した場合(例えば、動作716の「NO」分岐)、モバイルデバイス106は、公共サービス112から受信したオーディオ及び/又はビデオを通信セッションサーバ110に通信し、通信セッションサーバは次いで、受信したオーディオ及び/又はビデオをコンピューティングデバイス104に通信する(動作720)。
【0101】
このようにして、開示の通信セッションサーバ110及び/又はモバイルデバイス106は、1つ以上の通信プロトコルを介し又は1つ以上の通信モードを使用して、コンピューティングデバイス104が公共サービスとの通信を禁止及び/又は防止されている可能性がある場合にコンピューティングデバイス104の機能を拡張する。さらに、開示の実施形態は、特定の通信モードを使用して公共サービス112からのオーディオ及び/又はビデオをルーティングするプラットフォームとして第2のコンピューティングデバイス(例えば、モバイルデバイス106)を使用でき、ここで、コンピューティングデバイス104は別のタイプの通信モードを使用した公共サービス112との通信を禁止又は防止されている可能性があるため、既存の通信技術を向上させる。したがって、開示の実施形態は、従来の通信構成及び方法論ではこれまで実現されなかった多くの技術的恩恵及び利点を提供する。
【0102】
[モジュール、コンポーネント、及びロジック]
特定の実施形態は、論理又は複数のコンポーネント、モジュール、若しくは機構を含むものとして本明細書に記載される。モジュールは、ソフトウェアモジュール(例えば、マシン読取可能媒体又はマシン読取可能記憶デバイス上に具現化されたコード)又はハードウェアモジュールのいずれかを構成することができる。「ハードウェアモジュール」は、特定の動作を実行することができる有形のユニットであり、特定の物理的方法で構成又は配置され得る。様々な例示的な実施形態において、1つ以上のコンピュータシステム(例えば、スタンドアロンコンピュータシステム、クライアントコンピュータシステム、又はサーバコンピュータシステム)、又はコンピュータシステムの1つ以上のハードウェアモジュール(例えば、プロセッサ又はプロセッサのグループ)は、本明細書に記載される特定の動作を実行するように動作するハードウェアモジュールとしてソフトウェア(例えば、アプリケーション又はアプリケーション部分)により構成されてもよい。
【0103】
いくつかの実施形態において、ハードウェアモジュールは、機械的、電子的、又はこれらの任意の適切な組み合わせにより実装されてもよい。例えば、ハードウェアモジュールは、特定の動作を実行するように永続的に構成された特化型の回路又は論理を含んでもよい。例えば、ハードウェアモジュールは、FPGA又はASICなどの専用プロセッサでもよい。ハードウェアモジュールはまた、特定の動作を実行するようにソフトウェアにより一時的に構成されたプログラマブル論理又は回路を含んでもよい。例えば、ハードウェアモジュールは、汎用プロセッサ又は他のプログラマブルプロセッサにより実行されるソフトウェアを含んでもよい。そのようなソフトウェアによりひとたび構成されると、ハードウェアモジュールは、構成された機能を実行するように一意に調整された特定のマシン(又は、マシンの特定コンポーネント)になり、もはや汎用プロセッサではない。ハードウェアモジュールを機械的に、特化型の永続的に構成された回路で、又は一時的に構成された回路(例えば、ソフトウェアにより構成される)で実装する判断は、コスト及び時間の考慮により決められてもよいことが理解されよう。
【0104】
したがって、「ハードウェアモジュール」というフレーズは、本明細書に記載される特定の方法で動作し又は特定の動作を実行するように物理的に構築され、永続的に構成され(例えば、配線され)、又は一時的に構成され(例えば、プログラムされ)たエンティティである有形のエンティティを包含するものと理解されるべきである。本明細書で用いられるとき、「ハードウェア実装モジュール(hardware-implemented module)」は、ハードウェアモジュールを指す。ハードウェアモジュールが一時的に構成される(例えば、プログラムされる)実施形態を考えると、ハードウェアモジュールの各々は、時間的にいかなる1つのインスタンスにおいても構成又はインスタンス化される必要はない。例えば、ハードウェアモジュールが、専用プロセッサになるようにソフトウェアにより構成される汎用プロセッサを含む場合、汎用プロセッサは、異なる時間に(例えば、異なるハードウェアモジュールを含む)それぞれ異なる専用プロセッサとして構成されてもよい。したがって、ソフトウェアは、例えば、ある時間インスタンスで特定のハードウェアモジュールを構成し、異なる時間インスタンスで異なるハードウェアモジュールを構成するように、特定の1つ又は複数のプロセッサを構成する。
【0105】
ハードウェアモジュールは、他のハードウェアモジュールに情報を提供し、他のハードウェアモジュールから情報を受け取ることができる。したがって、記載のハードウェアモジュールは、通信上結合されているとみなされてもよい。複数のハードウェアモジュールが同時に存在する場合、通信は、ハードウェアモジュールのうち2つ以上の間の(例えば、適切な回路及びバスを通じての)信号伝送により達成されてもよい。複数のハードウェアモジュールが異なる時間に構成又はインスタンス化される実施形態において、そのようなハードウェアモジュール間の通信は、例えば、複数のハードウェアモジュールがアクセスを有するメモリ構造における情報の記憶及び取り出しを通じて達成されてもよい。例えば、1つのハードウェアモジュールが動作を実行し、その動作の出力を、それが通信上結合されたメモリデバイスに記憶することができる。次いで、さらなるハードウェアモジュールが後の時間に、メモリデバイスにアクセスして記憶された出力を取り出し、処理することができる。また、ハードウェアモジュールは、入力又は出力デバイスとの通信を開始してもよく、リソース(例えば、情報の集合)に対して動作することができる。
【0106】
本明細書に記載される例示的な方法の様々な動作は、少なくとも部分的に、関連する動作を実行するように一時的に(例えば、ソフトウェアにより)構成され又は永続的に構成された1つ以上のプロセッサにより実行されてもよい。一時的に構成されるか永続的に構成されるかにかかわらず、そのようなプロセッサは、本明細書に記載される1つ以上の動作又は機能を実行するように動作するプロセッサ実装モジュールを構成することができる。本明細書で用いられるとき、「プロセッサ実装モジュール(processor-implemented module)」は、1つ以上のプロセッサを使用して実装されるハードウェアモジュールを指す。
【0107】
同様に、本明細書に記載される方法は、少なくとも部分的にプロセッサ実装でもよく、特定の1つ又は複数のプロセッサがハードウェアの一例である。例えば、方法の動作のうち少なくとも一部が、1つ以上のプロセッサ又はプロセッサ実装モジュールにより実行されてもよい。さらに、1つ以上のプロセッサは、「クラウドコンピューティング」環境において、又は「ソフトウェアアズアサービス」(software as a service、SaaS)として、関連する動作の実行をサポートするように動作してもよい。例えば、動作の少なくとも一部が、(プロセッサを含むマシンの例としての)コンピュータのグループにより実行されてもよく、これらの動作は、ネットワーク(例えば、インターネット)介して、及び1つ以上の適切なインターフェース(例えば、API)を介してアクセス可能である。
【0108】
動作のうち特定のものの実行は、単一のマシン内に存在するだけでなく複数のマシンにわたり展開されたプロセッサ間で分散されてもよい。いくつかの例示的な実施形態において、プロセッサ又はプロセッサ実装モジュールは、単一の地理的位置に(例えば、家庭環境、オフィス環境、又はサーバファーム内に)配置されてもよい。他の例示的な実施形態において、プロセッサ又はプロセッサ実装モジュールは、複数の地理的位置にわたり分散されてもよい。
【0109】
[マシン及びソフトウェアアーキテクチャ]
図1~
図7Bに関連して説明したモジュール、方法、アプリケーションなどは、いくつかの実施形態において、マシン及び関連づけられたソフトウェアアーキテクチャの文脈で実装される。以下のセクションでは、開示の実施形態での使用に適した代表的なアーキテクチャについて説明する。
【0110】
ソフトウェアアーキテクチャは、特定の目的に合わせたデバイス及びマシンを作り出すようにハードウェアアーキテクチャと関連して使用される。例えば、特定のソフトウェアアーキテクチャに結合された特定のハードウェアアーキテクチャが、モバイルフォン、タブレットデバイスなどのモバイルデバイスを作り出す。わずかに異なるハードウェア及びソフトウェアアーキテクチャが、「モノのインターネット」で使用されるスマートデバイスを生成し得る一方で、さらに別の組み合わせが、クラウドコンピューティングアーキテクチャ内で使用されるサーバコンピュータを生成する。そのようなソフトウェア及びハードウェアアーキテクチャの全ての組み合わせが本明細書で提示されているわけではなく、なぜならば、当業者は本明細書に含まれる開示とは異なる文脈で発明対象事項を実施する方法を容易に理解できるためである。
【0111】
[例示的なマシンアーキテクチャ及びマシン読取可能媒体]
図8は、いくつかの例示的な実施形態による、マシン読取可能媒体(例えば、マシン読取可能記憶媒体又はマシン読取可能記憶デバイス)から命令を読み出して本明細書で論じられる方法論のうち任意の1つ以上を実行することが可能なマシン800のコンポーネントを示すブロック図である。具体的には、
図8は、コンピュータシステムの例示的な形態におけるマシン800の図表現を示しており、これにおいて、マシン800に本明細書で論じられる方法論のうち任意の1つ以上を実行させる命令816(例えば、ソフトウェア、プログラム、アプリケーション、アプレット、アプリ、又は他の実行可能コード)が実行され得る。例えば、命令816は、マシン800に
図5~
図7Bのフロー図を実行させることができる。さらに又は代わりに、命令816は、
図2~
図3のコンポーネントのうち1つ以上を実装することができる。命令816は、一般的なプログラムされていないマシン800を、説明及び例示された機能を説明された方法で実行するようにプログラムされた特定のマシン800に変換する。代替的な実施形態において、マシン800は、スタンドアロン装置として動作し、あるいは他のマシンに結合され(例えば、ネットワーク化され)てもよい。ネットワーク化された展開において、マシン800は、サーバクライアントネットワーク環境におけるサーバマシン又はクライアントマシンの容量で、又はピアツーピア(又は分散)ネットワーク環境におけるピアマシンとして動作することができる。マシン800は、これらに限られないがサーバコンピュータ、クライアントコンピュータ、パーソナルコンピュータ(PC)、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、PDA、又はマシン800により取られるべきアクションを規定する命令816を順次又はその他の方法で実行することができる任意のマシンを含んでもよい。さらに、単一のマシン800のみが示されているが、「マシン」という用語はさらに、本明細書で論じられる方法論のうち任意の1つ以上を実行するために命令816を個々に又は連帯的に実行するマシン800の集合を含むとみなされるものとする。
【0112】
マシン800は、プロセッサ810、メモリ/記憶装置830、及びI/Oコンポーネント850を含むことができ、これらは、バス802を介してなどで互いに通信するように構成され得る。一例示的な実施形態において、プロセッサ810(例えば、中央処理装置(Central Processing Unit、CPU)、縮小命令セットコンピューティング(Reduced Instruction Set Computing、RISC)プロセッサ、複合命令セットコンピューティング(Complex Instruction Set Computing、CISC)プロセッサ、グラフィックス処理ユニット(Graphics Processing Unit、GPU)、デジタル信号プロセッサ(Digital Signal Processor、DSP)、ASIC、無線周波数集積回路(Radio-Frequency Integrated Circuit、RFIC)、別のプロセッサ、又はこれらの任意の適切な組み合わせ)は、例えば、命令816を実行し得るプロセッサ812及びプロセッサ814を含んでもよい。「プロセッサ」という用語は、命令816を同時に実行することができる2つ以上の独立したプロセッサ(時に「コア」と呼ばれる)を含み得るマルチコアプロセッサを含むことが意図される。
図8は複数のプロセッサ810を示しているが、マシン800は、単一のコアを有する単一のプロセッサ、複数のコアを有する単一のプロセッサ(例えば、マルチコアプロセス)、単一のコアを有する複数のプロセッサ、複数のコアを有する複数のプロセッサ、又はこれらの任意の組み合わせを含んでもよい。
【0113】
メモリ/記憶装置830は、メインメモリ又は他のメモリ記憶装置などのメモリ832と記憶ユニット836を含んでもよく、双方ともバス802を介してなどでプロセッサ810がアクセス可能である。記憶ユニット836及びメモリ832は、本明細書に記載される方法論又は機能のうち任意の1つ以上を具現化する命令816を記憶する。命令816はまた、マシン800によるそれらの実行中にメモリ832内、記憶ユニット836内、プロセッサ810のうち少なくとも1つの中(例えば、プロセッサのキャッシュメモリ内)、又はこれらの任意の適切な組み合わせにおいて完全に又は部分的に存在してもよい。したがって、メモリ832、記憶ユニット836、及びプロセッサ810のメモリは、マシン読取可能媒体の例である。
【0114】
本明細書で用いられるとき、「マシン読取可能媒体」は、命令816及びデータを一時的又は永続的に記憶することが可能なマシン読取可能記憶デバイスを含み、これらに限られないがランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、バッファメモリ、フラッシュメモリ、光学媒体、磁気媒体、キャッシュメモリ、他のタイプの記憶装置(例えば、消去可能プログラマブル読取専用メモリ(EEPROM))、及び/又はこれらの任意の適切な組み合わせを含んでもよい。「マシン読取可能媒体」という用語は、命令816を記憶することが可能な単一の媒体又は複数の媒体(例えば、集中型若しくは分散型データベース、又は関連づけられたキャッシュ及びサーバ)を含むと解されるべきである。「マシン読取可能媒体」という用語はさらに、マシン(例えば、マシン800)による実行のための命令(例えば、命令816)を記憶することができる任意の媒体又は複数の媒体の組み合わせを含むと解されるものとし、命令は、マシン800の1つ以上のプロセッサ(例えば、プロセッサ810)により実行されたときに、マシン800に、本明細書に記載される方法論のうち任意の1つ以上を実行させる。したがって、「マシン読取可能媒体」は、単一の記憶装置又はデバイスと、複数の記憶装置又はデバイスを含む「クラウドベースの」ストレージシステム又はストレージネットワークを指す。「マシン読取可能媒体」という用語は、信号それ自体を除外する。
【0115】
入力/出力(I/O)コンポーネント850は、入力を受け取る、出力を提供する、出力を生成する、情報を送信する、情報を交換する、測定値を捕捉するなどのための多種多様なコンポーネントを含むことができる。特定のマシンに含まれる特定のI/Oコンポーネント850は、マシンのタイプに依存する。例えば、モバイルフォンなどのポータブルマシンはタッチ入力デバイス又は他のそのような入力機構をおそらく含み、一方で、ヘッドレスサーバマシンはそのようなタッチ入力デバイスをおそらく含まない。I/Oコンポーネント850は、
図8に示されていない多くの他のコンポーネントを含んでもよいことが理解されよう。I/Oコンポーネント850は、単に以下の議論を簡素化するために機能性に従ってグループ化されており、グループ化は決して限定的なものではない。様々な例示的な実施形態において、I/Oコンポーネント850は、出力コンポーネント852及び入力コンポーネント854を含み得る。出力コンポーネント852は、視覚コンポーネント(例えば、プラズマディスプレイパネル(PDP)、発光ダイオード(LED)ディスプレイ、液晶ディスプレイ(LCD)、プロジェクタ、又は陰極線管(CRT)などのディスプレイ)、音響コンポーネント(例えば、スピーカ)、触覚コンポーネント(例えば、振動モータ、抵抗機構)、他の信号発生器などを含んでもよい。入力コンポーネント854は、英数字入力コンポーネント(例えば、キーボード、英数字入力を受け取るように構成されたタッチスクリーン、フォトオプティカル(photo-optical)キーボード、又は他の英数字入力コンポーネント)、ポイントベースの入力コンポーネント(例えば、マウス、タッチパッド、トラックボール、ジョイスティック、モーションセンサ、又は他のポインティング機器)、触知入力コンポーネント(例えば、物理的ボタン、タッチ又はタッチジェスチャの位置及び/又は力を提供するタッチスクリーン、又は他の触知入力コンポーネント)、オーディオ入力コンポーネント(例えば、マイクロホン)などを含んでもよい。
【0116】
さらなる例示的な実施形態において、I/Oコンポーネント850は、他のコンポーネントの広いアレイの中でもバイオメトリックコンポーネント856、モーションコンポーネント858、環境コンポーネント860、又は測位コンポーネント862を含んでもよい。例えば、バイオメトリックコンポーネント856は、表現(例えば、手の表現、顔の表情、声の表現、身振り、又はアイトラッキング)を検出するコンポーネント、生体信号(例えば、血圧、心拍、体温、発汗、又は脳波)を測定するコンポーネント、人物を識別するコンポーネント(例えば、音声識別、網膜識別、顔識別、指紋識別、又は脳波に基づく識別)などを含んでもよい。モーションコンポーネント858は、加速度センサコンポーネント(例えば、加速度計)、重力センサコンポーネント、回転センサコンポーネント(例えば、ジャイロスコープ)などを含んでもよい。環境コンポーネント860は、例えば、照明センサコンポーネント(例えば、光度計)、温度センサコンポーネント(例えば、周囲温度を検出する1つ以上の温度計)、湿度センサコンポーネント、圧力センサコンポーネント(例えば、気圧計)、音響センサコンポーネント(例えば、バックグラウンドノイズを検出する1つ以上のマイクロホン)、近接センサコンポーネント(例えば、付近の物体を検出する赤外線センサ)、ガスセンサ(例えば、安全のために有害ガスの濃度を検出し、又は大気中の汚染物質を測定するガス検出センサ)、又は周囲の物理的環境に対応する指標、測定値、又は信号を提供し得る他のコンポーネントを含んでもよい。測位コンポーネント862は、位置センサコンポーネント(例えば、GPS受信機コンポーネント)、高度センサコンポーネント(例えば、高度が導出され得る気圧を検出する高度計又は気圧計)、方位センサコンポーネント(例えば、磁気計)などを含んでもよい。
【0117】
通信は、多種多様な技術を用いて実施することができる。I/Oコンポーネント850は、マシン800をネットワーク880又はデバイス870に、それぞれ結合882及び結合872を介して結合するように動作可能な通信コンポーネント864を含んでもよい。例えば、通信コンポーネント864は、ネットワーク880とインターフェースするネットワークインターフェースコンポーネント又は他の適切なデバイスを含んでもよい。さらなる例において、通信コンポーネント864は、有線通信コンポーネント、無線通信コンポーネント、セルラー通信コンポーネント、近距離通信(NFC)コンポーネント、Bluetooth(登録商標)コンポーネント(例えば、Bluetooth(登録商標) Low Energy)、Wi-Fi(登録商標)コンポーネント、及び他のモダリティを介して通信を提供する他の通信コンポーネントを含むことができる。デバイス870は、別のマシン、又は多種多様な周辺デバイスのうち任意のもの(例えば、USBを介して結合された周辺デバイス)でもよい。
【0118】
さらに、通信コンポーネント864は、識別子を検出し、あるいは識別子を検出するように動作可能なコンポーネントを含むことができる。例えば、通信コンポーネント864は、無線周波数識別(Radio Frequency Identification、RFID)タグリーダコンポーネント、NFCスマートタグ検出コンポーネント、光学リーダコンポーネント(例えば、ユニバーサルプロダクトコード(Universal Product Code、UPC)バーコードなどの一次元バーコード、クイックレスポンス(QR)コードなどの多次元バーコード、Aztecコード、Data Matrix、Dataglyph、MaxiCode、PDF416、Ultraコード、UCC RSS-2Dバーコード、及び他の光学コードを検出する光学センサ)、又は音響検出コンポーネント(例えば、タグ付きオーディオ信号を識別するマイクロホン)を含んでもよい。さらに、様々な情報が通信コンポーネント864を介して導出されてもよく、例えば、インターネットプロトコル(IP)ジオロケーションによる位置、Wi-Fi(登録商標)信号三角測量による位置、特定の位置を示し得るNFCビーコン信号の検出による位置などである。
【0119】
[伝送媒体]
様々な実施形態において、ネットワーク880の1つ以上の部分が、アドホックネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネット、インターネットの一部、PSTNの一部、単純従来型電話サービス(plain old telephone service、POTS)網、セルラー電話網、無線ネットワーク、Wi-Fi(登録商標)ネットワーク、別のタイプのネットワーク、又は2つ以上のそのようなネットワークの組み合わせでもよい。例えば、ネットワーク880又はネットワーク880の一部は、無線又はセルラネットワークを含んでもよく、結合882は、符号分割多元接続(CDMA)接続、グローバルシステムフォーモバイルコミュニケーション(Global System for Mobile communications、GSM)接続、又は他のタイプのセルラー若しくは無線結合でもよい。この例において、結合882は、様々なタイプのデータ転送技術のうち任意のもの、例えば、シングルキャリア無線伝送技術(Single Carrier Radio Transmission Technology、1xRTT)、進化-データ最適化(Evolution-Data Optimized、EVDO)技術、汎用パケット無線サービス(General Packet Radio Service、GPRS)技術、GSM進化向け拡張データレート(Enhanced Data rates for GSM Evolution、EDGE)技術、3Gを含む第3世代パートナーシッププロジェクト(third Generation Partnership Project、3GPP)、第4世代無線(4G)ネットワーク、ユニバーサル移動体通信システム(Universal Mobile Telecommunications System、UMTS)、高速パケットアクセス(High Speed Packet Access、HSPA)、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(Worldwide Interoperability for Microwave Access、WiMAX)、ロングタームエボリューション(LTE)標準、様々な標準設定機関により定義された他のもの、他の長距離(long range)プロトコル、又は他のデータ転送技術などを実装してもよい。
【0120】
命令816は、ネットワークインターフェースデバイス(例えば、通信コンポーネント864に含まれるネットワークインターフェースコンポーネント)を介し、かつ複数の周知の転送プロトコルのうち任意の1つ(例えば、ハイパーテキストトランスファープロトコル(hypertext transfer protocol、HTTP))を利用する伝送媒体を使用して、ネットワーク880を通じて送信又は受信することができる。同様に、命令816は、デバイス870への結合872(例えば、ピアツーピア結合)を介した伝送媒体を使用して送信又は受信することができる。「伝送媒体」という用語は、マシン800による実行のための命令816を記憶、符号化、又は搬送することができる任意の無形媒体を含むと解されるものとし、そのようなソフトウェアの通信を容易にするデジタル若しくはアナログ通信信号、又は他の無形媒体を含む。
【0121】
[言語]
本明細書を通して、単一のインスタンスとして記載されたコンポーネント、動作、又は構造を複数のインスタンスが実装してもよい。1つ以上の方法の個々の動作が別個の動作として例示され、説明されているが、個々の動作のうち1つ以上が同時に実行されてもよく、動作が例示された順序で実行される必要はない。例示的な構成において別個のコンポーネントとして提示された構造及び機能性は、組み合わせられた構造又はコンポーネントとして実装されてもよい。同様に、単一のコンポーネントとして提示された構造及び機能性は、別個のコンポーネントとして実装されてもよい。これら及び他のバリエーション、修正、追加、及び改良は、本明細書の対象事項の範囲内にある。
【0122】
発明対象事項の概要は、特定の例示的な実施形態を参照して説明されたが、本開示の実施形態のより広範な範囲から逸脱することなく、これらの実施形態に対して様々な修正及び変更がなされ得る。発明対象事項のそのような実施形態は本明細書において、単に便宜のために、かつ、複数の開示又は発明概念が実際に開示されている場合に本出願の範囲をいずれか1つの開示又は発明概念に自発的に限定する意図なく、「発明」という用語により個々に又は集合的に参照されることがある。
【0123】
本明細書に示された実施形態は、当業者が開示された教示を実施することを可能にするのに十分詳細に記載されている。これらから他の実施形態が用いられ、導出されることがあり、それにより、本開示の範囲から逸脱することなく構造的及び論理的な置換及び変更がなされ得る。したがって、詳細な説明は、限定的な意味で解釈されるべきでなく、様々な実施形態の範囲は、別記の特許請求の範囲と、そのような特許請求の範囲が権利を有する同等物によってのみ定義される。
【0124】
本明細書で用いられるとき、「又は」という用語は、包括的又は排他的のいずれかの意味で解釈され得る。さらに、単一インスタンスとして本明細書に記載されたリソース、動作、又は構造に対して複数のインスタンスが提供されてもよい。さらに、様々なリソース、動作、モジュール、エンジン、及びデータストアの間の境界は、いくぶん任意であり、特定の動作は、特定の例示的な構成の文脈で示されている。他の機能性割り当てが想定され、本開示の様々な実施形態の範囲内に入り得る。一般に、例示的な構成において別個のリソースとして提示された構造及び機能性は、組み合わせられた構造又はリソースとして実装されてもよい。同様に、単一のリソースとして提示された構造及び機能性は、別個のリソースとして実装されてもよい。これら及び他のバリエーション、修正、追加、及び改良は、別記の特許請求の範囲により表される本開示の実施形態の範囲内にある。したがって、本明細書及び図面は、制限的ではなく例示的な意味で解釈されるべきである。