(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023098999
(43)【公開日】2023-07-11
(54)【発明の名称】モバイルアプリケーションのリアルタイム遠隔制御のためのシステムおよび方法
(51)【国際特許分類】
H04L 67/08 20220101AFI20230704BHJP
【FI】
H04L67/08
【審査請求】有
【請求項の数】36
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023064825
(22)【出願日】2023-04-12
(62)【分割の表示】P 2021109953の分割
【原出願日】2017-08-11
(31)【優先権主張番号】62/374,892
(32)【優先日】2016-08-14
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】511094772
【氏名又は名称】ライブパーソン, インコーポレイテッド
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】レト・ステューバー
(72)【発明者】
【氏名】クリスティアン・サム
(72)【発明者】
【氏名】ステファン・セードルフ
(72)【発明者】
【氏名】ヨッシ・レビン
(57)【要約】 (修正有)
【課題】モバイルアプリケーションのリアルタイムな遠隔制御のためのシステムおよび方法を提供する。
【解決手段】インタラクション環境700において、ネットワークデバイス705と端末デバイス715との間の通信セッションが確立される。ネットワークデバイスは、モバイルアプリケーションを実行する、モバイルアプリケーションは、初期状態で入力要素725、730、735を含み、端末デバイスによって遠隔制御される。コンテンツデータを含むデータストリームは、通信セッション中に通信サーバ710を経由して受信及び送信される。コンテンツデータは、モバイルアプリケーションによって提示されるオブジェクトを含み、端末デバイスに表示される。コンテンツデータに関連付けられた入力イベントが検出されると、検出された入力イベントに基づいて制御データが生成され、ネットワークデバイスがそれを受信し、入力要素の初期状態を修正する。
【選択図】
図7
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
通信サーバにおいて、モバイルデバイスと端末デバイスとの間の通信セッションを容易にすることと、ここにおいて、前記モバイルデバイスは、モバイルアプリケーションを実行するように構成され、前記モバイルアプリケーションは、初期状態で入力要素を含んでおり、前記モバイルアプリケーションは、前記端末デバイスによって遠隔制御され、
前記通信セッション中にデータストリームを受信することと、ここにおいて、前記データストリームは、コンテンツデータを含んでおり、前記コンテンツデータは、前記モバイルアプリケーションによって提示されるオブジェクトを含んでおり、前記オブジェクトは、前記入力要素を表し、
前記通信セッション中に前記データストリームを送信することと、ここにおいて、前記データストリームが前記端末デバイスで受信されたとき、前記コンテンツデータは、前記オブジェクトを前記端末デバイスに表示させ、
前記オブジェクトに関連付けられた入力イベントを検出することと、
前記入力イベントが検出されたとき、制御データを生成することと、
前記制御データを送信することと、ここにおいて、前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、
を備える、コンピュータ実装方法。
【請求項2】
前記制御データが前記モバイルデバイスで受信されたとき、前記入力イベントは、前記モバイルデバイスにおいて複製される、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記通信セッション中に前記データストリームを送信することは、
前記入力要素を表す前記オブジェクトを表示することと、ここにおいて、前記オブジェクトは、コンテンツデータを含んでおり、
前記入力要素に含まれる前記コンテンツデータが操作されるのを防ぐことと
を備える、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記通信セッション中に前記データストリームを送信することは、
前記モバイルアプリケーションに含まれる前記入力要素のためのフィールドマスクを生成することと、ここにおいて、前記フィールドマスクは、前記コンテンツデータが前記端末デバイスに表示されたとき、前記オブジェクトが閲覧可能となるのを防ぎ、
前記データストリームを送信することと、ここにおいて、前記データストリームは、前記コンテンツデータと前記フィールドマスクとを含む、
を備える、請求項1に記載のコンピュータ実装方法。
【請求項5】
前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルデバイスにおいてシンセティックイベントを生成させ、前記シンセティックイベントは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記シンセティックイベントは、前記モバイルデバイスのオペレーティングシステムによって生成され、前記シンセティックイベントは、前記検出された入力イベントを複製する、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記制御データが前記モバイルデバイスで受信されたとき、前記方法は、
前記制御データが前記入力要素に対応するか否かを決定することと、
前記制御データが前記入力要素に対応するとき、前記入力要素の前記初期状態を修正することと、ここにおいて、前記入力要素の前記初期状態を修正することは、前記初期状態を次の状態に変えることを含む、
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項8】
システムであって、
1つまたは複数のデータプロセッサと、
命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令は、前記1つまたは複数のデータプロセッサで実行されると、前記1つまたは複数のデータプロセッサに、
通信サーバにおいて、モバイルデバイスと端末デバイスとの間の通信セッションを容易にすることと、ここにおいて、前記モバイルデバイスは、モバイルアプリケーションを実行するように構成され、前記モバイルアプリケーションは、初期状態で入力要素を含んでおり、前記モバイルアプリケーションは、前記端末デバイスによって遠隔制御され、
前記通信セッション中にデータストリームを受信することと、ここにおいて、前記データストリームは、コンテンツデータを含んでおり、前記コンテンツデータは、前記モバイルアプリケーションによって提示されるオブジェクトを含んでおり、前記オブジェクトは、前記入力要素を表し、
前記通信セッション中に前記データストリームを送信することと、ここにおいて、前記データストリームが前記端末デバイスで受信されたとき、前記コンテンツデータは、前記オブジェクトを前記端末デバイスに表示させ、
前記オブジェクトに関連付けられた入力イベントを検出することと、
前記検出された入力イベントに基づいて制御データを生成することと、
前記制御データを送信することと、ここにおいて、前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、
を含むオペレーションを行わせる、非一時的コンピュータ可読記憶媒体と、
を備える、システム。
【請求項9】
前記制御データが前記モバイルデバイスで受信されたとき、前記入力イベントは、前記モバイルデバイスにおいて複製される、請求項8に記載のシステム。
【請求項10】
前記通信セッション中に前記データストリームを送信することは、
前記入力要素を表す前記オブジェクトを表示することと、ここにおいて、前記オブジェクトは、コンテンツデータを含んでおり、
前記入力要素に含まれる前記コンテンツデータが操作されるのを防ぐことと
を備える、請求項8に記載のシステム。
【請求項11】
前記通信セッション中に前記データストリームを送信することは、
前記モバイルアプリケーションに含まれる前記入力要素のためのフィールドマスクを生成することと、ここにおいて、前記フィールドマスクは、前記コンテンツデータが前記端末デバイスに表示されたとき、前記オブジェクトが閲覧可能となるのを防ぎ、
前記データストリームを送信することと、ここにおいて、前記データストリームは、前記コンテンツデータと前記フィールドマスクとを含む、
を備える、請求項8に記載のシステム。
【請求項12】
前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルデバイスにおいてシンセティックイベントを生成させ、前記シンセティックイベントは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、請求項8に記載のシステム。
【請求項13】
前記シンセティックイベントは、前記モバイルデバイスのオペレーティングシステムによって生成され、前記シンセティックイベントは、前記検出された入力イベントを複製する、請求項12に記載のシステム。
【請求項14】
前記制御データが前記モバイルデバイスで受信されたとき、前記オペレーションは、
前記制御データが前記入力要素に対応するか否かを決定することと、
前記制御データが前記入力要素に対応するとき、前記入力要素の前記初期状態を修正することと、ここにおいて、前記入力要素の前記初期状態を修正することは、前記初期状態を次の状態に変えることを含む、
をさらに備える、請求項8に記載のシステム。
【請求項15】
命令を含む非一時的機械可読記憶媒体中で有形に具体化されるコンピュータプログラム製品であって、前記命令は、データ処理装置に、
通信サーバにおいて、モバイルデバイスと端末デバイスとの間の通信セッションを容易にすることと、ここにおいて、前記モバイルデバイスは、モバイルアプリケーションを実行するように構成され、前記モバイルアプリケーションは、初期状態で入力要素を含んでおり、前記モバイルアプリケーションは、前記端末デバイスによって遠隔制御され、
前記通信セッション中にデータストリームを受信することと、ここにおいて、前記データストリームは、コンテンツデータを含んでおり、前記コンテンツデータは、前記モバイルアプリケーションによって提示されるオブジェクトを含んでおり、前記オブジェクトは、前記入力要素を表し、
前記通信セッション中に前記データストリームを送信することと、ここにおいて、前記データストリームが前記端末デバイスで受信されたとき、前記コンテンツデータは、前記オブジェクトを前記端末デバイスに表示させ、
前記オブジェクトに関連付けられた入力イベントを検出することと、
前記検出された入力イベントに基づいて制御データを生成することと、
前記制御データを送信することと、ここにおいて、前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、
を含むオペレーションを行わせるように構成される、コンピュータプログラム製品。
【請求項16】
前記制御データが前記モバイルデバイスで受信されたとき、前記入力イベントは、前記モバイルデバイスにおいて複製される、請求項15に記載のコンピュータプログラム製品。
【請求項17】
前記通信セッション中に前記データストリームを送信することは、
前記入力要素を表す前記オブジェクトを表示することと、ここにおいて、前記オブジェクトは、コンテンツデータを含んでおり、
前記入力要素に含まれる前記コンテンツデータが操作されるのを防ぐことと
を備える、請求項15に記載のコンピュータプログラム製品。
【請求項18】
前記通信セッション中に前記データストリームを送信することは、
前記モバイルアプリケーションに含まれる前記入力要素のためのフィールドマスクを生成することと、ここにおいて、前記フィールドマスクは、前記コンテンツデータが前記端末デバイスに表示されたとき、前記オブジェクトが閲覧可能となるのを防ぎ、
前記データストリームを送信することと、ここにおいて、前記データストリームは、前記コンテンツデータと前記フィールドマスクとを含む、
を備える、請求項15に記載のコンピュータプログラム製品。
【請求項19】
前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルデバイスにおいてシンセティックイベントを生成させ、前記シンセティックイベントは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、請求項15に記載のコンピュータプログラム製品。
【請求項20】
前記シンセティックイベントは、前記モバイルデバイスのオペレーティングシステムによって生成され、前記シンセティックイベントは、前記検出された入力イベントを複製する、請求項19に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【関連出願の相互参照】
【0001】
[0001] 本願は、2016年8月14日付で出願された米国仮特許出願第62/374,892号の優先権の利益を主張し、その開示は、あらゆる目的のために参照によりその全体が組み込まれている。
【技術分野】
【0002】
[0002] 本開示は、概して、顧客とエージェントとの間のリアルタイム通信セッションを容易にすることに関する。より具体的には、これら技法は、通信セッション中にモバイルアプリケーションを遠隔制御するために提供される。
【背景技術】
【0003】
[0003] 通信の手段としてのデジタルメッセージングの使用が広く普及している。さらに、モバイルアプリケーションがメッセージング機能を急速に組み込みつつある。しかしながら、メッセージング機能は、制限されることがある。例えば、顧客がモバイルアプリケーションでの問題に直面するたびに、共有されたビジュアルコンテキストの欠如のために、メッセージング機能だけではその問題に十分対処できない可能性がある。
【発明の概要】
【0004】
[0004] いくつかの実施形態では、コンピュータ実装方法が提供される。コンピュータ実装方法は、通信サーバにおいて、ネットワークデバイスと端末デバイスとの間の通信セッションを確立することを含み得る。ネットワークデバイスは、モバイルアプリケーションを実行するように構成され得る。例えば、モバイルアプリケーションは、初期状態で入力要素を含み得る。ある場合には、モバイルアプリケーションは、端末デバイスによって遠隔制御され得る。さらに、方法は、通信セッション中にデータストリームを受信することを含み得る。データストリームは、コンテンツデータを含み得る。例えば、コンテンツデータは、モバイルアプリケーションによって提示されるオブジェクトを含み得る。オブジェクトは、入力要素に対応し得る。方法は、通信セッション中にデータストリームを送信することを含み得る。データストリームは、端末デバイスで受信され得る。コンテンツデータは、端末デバイスに表示され得る。方法はまた、コンテンツデータに関連付けられた入力イベントを検出することを含み得る。制御データは、検出された入力イベントに基づいて生成され得る。次いで、制御データが送信され得る。制御データは、ネットワークデバイスで受信され得る。例えば、制御データは、モバイルアプリケーションに含まれる入力イベントの初期状態を修正し得る。
【0005】
[0005] いくつかの実施形態では、別のコンピュータ実装方法が提供される。コンピュータ実装方法は、ネットワークデバイスにおいて、モバイルアプリケーションに関連付けられた入力要素を識別することを含み得る。入力要素は、インタラクションに基づいて入力データを受け取るように構成され得る。方法は、入力要素に対応する入力境界を決定することを含み得る。例えば、入力境界は、入力データを受け取るためのエリアであり得る。さらに、方法は、モバイルアプリケーションを実行することを含み得る。モバイルアプリケーションを実行することは、初期状態で入力要素を表示することを含み得る。モバイルアプリケーションは、端末デバイスによって遠隔制御され得る。方法はまた、端末デバイスでの選択に対応する入力を受け取ることを含み得る。選択は、選択データに関連付けられ得、選択データは、モバイルアプリケーションに関連付けられた場所を識別するために使用され得る。方法は、選択データが入力要素に対応するか否かを決定することを含み得る。選択データが入力要素に対応するか否かを決定することは、選択データを入力境界と比較することを含み得る。さらに、方法は、選択データが入力要素に対応するとき、入力要素に関連付けられたアクションを決定することを含み得る。次いで、アクションが行われ得る。
【0006】
[0006] いくつかの実施形態では、別のコンピュータ実装方法が提供される。コンピュータ実装方法は、ネットワークデバイスにおいて、初期状態で入力要素を含むモバイルアプリケーションを含み得る。モバイルアプリケーションは、端末デバイスによって遠隔制御され得る。方法はまた、データストリームを生成することを含み得る。データストリームは、コンテンツデータを含み得、それは、モバイルアプリケーションによって提示されるオブジェクトを含み得る。例えば、オブジェクトは、入力要素に対応し得る。方法は、データストリームを送信することを含み得る。データストリームは、端末デバイスで受信され得る。コンテンツデータは、端末デバイスに表示され得る。さらに、方法は、オブジェクトに関連付けられた制御データを受信することと、制御データが入力要素に対応するか否かを決定することと、制御データが入力要素に対応するとき、入力要素の初期状態を修正することと、を含み得る。入力要素の初期状態を修正することは、初期状態を次の状態に変えることを含み得る。
【0007】
[0007] 本開示の実施形態はまた、システムを含み得る。システムは、1つまたは複数のプロセッサと、命令を含む非一時的コンピュータ可読媒体であって、命令は、1つまたは複数のデータプロセッサで実行されると、1つまたは複数のデータプロセッサに、上述のおよび本明細書で説明されるコンピュータ実装方法のうちの任意のものを含むオペレーションを行わせる、非一時的コンピュータ可読記憶媒体と、を含み得る。
【0008】
[0008] 本開示の実施形態はまた、命令を含む非一時的機械可読記憶媒体中で有形に具体化されるコンピュータプログラム製品であって、命令は、データ処理装置に、上述のおよび本明細書で説明されるコンピュータ実装方法のうちの任意のものを含むオペレーションを行わせるように構成される、コンピュータプログラム製品を含み得る。
【図面の簡単な説明】
【0009】
[0009] 本開示は、添付の図と併せて説明される。
【
図1】[0010]
図1は、ネットワークインタラクションシステムの実施形態のブロック図を示す。
【
図2】[0011]
図2は、ネットワークインタラクションシステムの別の実施形態のブロック図を示す。
【
図3A】[0012]
図3Aは、接続管理システムを含むネットワークインタラクションシステムの他の実施形態のブロック図を示す。
【
図3B】
図3Bは、接続管理システムを含むネットワークインタラクションシステムの他の実施形態のブロック図を示す。
【
図3C】
図3Cは、接続管理システムを含むネットワークインタラクションシステムの他の実施形態のブロック図を示す。
【
図4】[0013]
図4は、接続コンポーネントのオペレーションのプロトコルスタックマッピングの表現を示す。
【
図5】[0014]
図5は、一実施形態によるマルチデバイス通信交換システムを表す。
【
図6】[0015]
図6は、接続管理システムの一実施形態のブロック図を示す。
【
図7】[0016]
図7は、モバイルアプリケーションのリアルタイム遠隔制御のためのインタラクション環境の表現を示す。
【
図8】[0017]
図8は、ネットワークデバイスにおいて入力イベントを複製するための処理のスイムレーン図を示す。
【
図9】[0018]
図9は、ネットワークデバイスにおいて入力イベントを複製するための別の処理のスイムレーン図を示す。
【
図10】[0019]
図10は、モバイルアプリケーションを遠隔制御するための処理のフローチャートを示す。
【
図11】[0020]
図11は、ネットワークデバイスにおいて入力イベントを複製するための処理のフローチャートを示す。
【
図12】[0021]
図12は、モバイルアプリケーションを遠隔制御するための別の処理のフローチャートを示す。
【0010】
[0022] 添付の図面では、同様のコンポーネントおよび/または特徴は、同じ参照符号を有し得る。さらに、同じタイプの様々なコンポーネントは、参照ラベルの後に、ダッシュと、それらの同様のコンポーネント間を区別する第2のラベルとを続けることによって区別され得る。本明細書中で第1の参照ラベルのみが使用される場合、その説明は、第2の参照ラベルに関係なく同じ第1の参照ラベルを有する同様のコンポーネントのうちのどの1つにも適用可能である。
【発明の詳細な説明】
【0011】
[0023] 以下の説明は、好ましい実施形態の例のみを提供するものであり、本開示の範囲、適用可能性または構成を限定することを意図するものではない。むしろ、以下の、好ましい実施形態の例の説明は、当業者に、好ましい実施形態の例を実施することを可能にする説明を提供するだろう。添付の特許請求の範囲に記載されているような趣旨および範囲を逸脱することなく、要素の機能および構成の様々な変更を行い得ることを理解されたい。
【0012】
[0024]
図1は、本明細書で説明される特定の実施形態および特徴を実装およびサポートするネットワークインタラクションシステム100の一実施形態のブロック図を示す。特定の実施形態は、(ユーザ110によってオペレートされ得る)ネットワークデバイス105と、(エージェント120によってオペレートされ得る)端末デバイス115との間の接続チャネルを確立することに関する。特定の実施形態では、ネットワークインタラクションシステム100は、クライアント125と関連付けられたクライアントデバイス130を含み得る。
【0013】
[0025] 特定の実施形態では、ユーザ110は、ウェブサイトを閲覧しているか、または遠隔サーバ140によって提供されたオンラインサービスにアクセスしている、個人であり得る。クライアント125は、本明細書で説明されるような、ウェブサイトまたはオンラインサービスを提供、オペレート、または動作しているエンティティか、あるいは、クライアント125に利用可能なタスクを行うためにそのようなエンティティによって用いられたまたは指定された個人であり得る。エージェント120は、ウェブサイトまたはオンラインサービスに関するサポートまたは情報(例えば、オンラインストアで入手可能な製品についての情報)をユーザ110に提供する任務を負う、サポートエージェントまたは販売員などの個人であり得る。多数のエージェントのうちで、エージェントのサブセットは、特定のクライアント125のためのサポートまたは情報を提供するために適切であり得る。エージェント120は、クライアント125と提携している場合もあり、そうでない場合もある。各エージェントは、1つまたは複数のクライアント125と関連付けられ得る。いくつかのの非限定的な例では、ユーザ110は、パーソナルコンピューティングデバイスからオンラインストアで買い物をする個人であり、クライアント125は、製品をオンラインで販売する企業であり、エージェント120は、企業に雇用された販売員であり得る。様々な実施形態において、ユーザ110、クライアント125、およびエージェント120は、他の個人またはエンティティであり得る。
【0014】
[0026]
図1は、単一のネットワークデバイス105、端末デバイス115、およびクライアントデバイス130のみを示しているが、インタラクションシステム100は、これらのタイプのデバイスの1つまたは複数の各々の複数または多数(例えば、数十、数百、または数千)を含み得る。同様に、
図1は、単一のユーザ110、エージェント120、およびクライアント125のみを示しているが、インタラクションシステム100は、そのようなエンティティの1つまたは複数の各々の複数または多数を含み得る。よって、所与のネットワークデバイスと通信するためにどの端末デバイスが選択されるべきかの決定が必要であり得る。問題をさらに複雑にしているのは、遠隔サーバ140もまた、ネットワークデバイス通信を選択するために、受信および応答するように構成され得ることである。
【0015】
[0027] 接続管理システム150は、通信の戦略的ルーティングを容易にし得る。通信は、(例えば、タイプ入力または口頭入力などの、エンティティからの入力に基づいて定義された)コンテンツを有するメッセージを含み得る。通信はまた、送信側デバイスついてのデータ(例えば、IPアドレス、アカウント識別子、デバイスのタイプおよび/またはオペレーティングシステム)などの追加のデータ、宛先アドレス、クライアントの識別子、ウェブページまたはウェブページ要素の識別子(例えば、通信が生成されたときに訪問されていた、あるいはそうでなければ通信と関連付けられた、ウェブページまたはウェブページ要素)またはオンライン履歴データ、時間(例えば、時刻および/または日付)、並びに/あるいは、宛先アドレスも含み得る。通信は、他の情報も含み得る。ある場合には、接続管理システム150は、全体の通信を別のデバイスにルーティングする。ある場合には、接続管理システム150は、通信を変更するか、または(例えば、初期通信に基づいて)新しい通信を生成する。新しいまたは修正された通信は、メッセージ(または、それの処理されたバージョンのもの)、追加のデータの少なくとも一部(または全て)(例えば、送信デバイス、ウェブページ、またはオンライン履歴、および/または時間について)、並びに/あるいは接続管理システム150によって識別される他のデータ(例えば、特定のアカウント識別子またはデバイスに関連付けられたアカウントデータ)を含み得る。新しい通信または変更された通信は、他の情報も含み得る。
【0016】
[0028] 戦略的ルーティングを容易にすることの一部は、ネットワークデバイス105と1つまたは複数の端末デバイス115との間で1つまたは複数の接続チャネルを確立、更新、および使用することを含み得る。例えば、ネットワークデバイス105から通信を受信すると、接続管理システム150は、まず、通信が(もしあれば)どのクライアントに対応するかを推定し得る。クライアントを識別すると、接続管理システム150は、ネットワークデバイス105との通信のためのクライアントと関連付けられた端末デバイス115を識別し得る。ある場合には、その識別は、複数のエージェント(またはエキスパートまたはデリゲート)のそれぞれのプロファイルを評価することを含み得、複数のエージェントの各エージェント(例えば、エージェント120)が、端末デバイス(例えば、端末デバイス115)に関連付けられている。評価は、ネットワークデバイスのメッセージのコンテンツに関連し得る。端末デバイス115の識別は、例えば、2010年3月17日に出願された米国出願第12/725,799号で説明される技法を含み得、全ての目的のために参照によりその全体が本明細書に組み込まれている。
【0017】
[0029] ある場合には、接続管理システム150は、ネットワークデバイス105とクライアント(または遠隔サーバ140)に関連付けられた端末デバイスとの間で任意の接続チャネルが確立されたか否かを決定し、そうである場合、そのようなチャネルがその通信を含む一連の通信を交換するのに使用されるべきか否かを決定し得る。
【0018】
[0030] ネットワークデバイス105と通信するように端末デバイス115を選択すると、接続管理システム150は、ネットワークデバイス105と端末デバイス115との間の接続チャネルを確立することができる。ある場合には、接続管理システム150は、選択された端末デバイス115にメッセージを送信し得る。メッセージは、ネットワークデバイス105と通信するために提案された割り当ての受け入れを要求するか、またはそのような割り当てが生成されたことを識別し得る。メッセージは、ネットワークデバイス105についての情報(例えば、IPアドレス、デバイスタイプ、および/またはオペレーティングシステム)、関連するユーザ110についての情報(例えば、話す言語、クライアントとやりとりが行われた継続時間、スキルレベル、感情、および/またはトピックの好み)、受信した通信、ネットワークデバイス105に通信を生成および送信するためのコード(例えば、クリック可能なハイパーリンク)、および/またはネットワークデバイス105に通信を生成および送信するための命令を含み得る。
【0019】
[0031] 一例では、ネットワークデバイス105と端末デバイス115との間の通信は、接続管理システム150を介してルーティングされ得る。そのような構成は、接続管理システム150が通信交換をモニタし、デバイスまたは拡張されたレイテンシの非応答性などの問題(例えば規則に基づいて定義される)を検出することを可能にすることができる。さらに、このような構成は、通信の選択的なまたは完全な記憶を容易にし、それは後で、例えば通信交換の品質をアセスメントする(assess)ために、および/または、特定の通信後のターゲットを助長するようにルーティング規則を更新または生成するための学習をサポートするために、使用され得る。
【0020】
[0032] いくつかの実施形態では、接続管理システム150は、リアルタイムに通信交換を監視し、ライブ通信に基づいて自動アクション(例えば、規則ベースのアクション)を行い得る。例えば、通信が特定の製品に関連すると接続管理システム150が決定した場合、接続管理システム150は、製品についての追加の情報(例えば、在庫の製品の品質、製品に関連したサポート文書へのリンク、あるいは、製品または同様の製品についての他の情報)を含む追加のメッセージを端末デバイス115に自動的に送信し得る。
【0021】
[0033] 一例では、指定された端末デバイス115は、接続管理システム150を介する通信を中継することなく、ネットワークデバイス105と通信し得る。一方または両方のデバイス105、115は、通信モニタリングおよび/またはデータ記憶を容易にするために、特定の通信メトリックまたはコンテンツを接続管理システム150に報告し得る(報告しない可能性もある)。
【0022】
[0034] 上述したように、接続管理システム150は、選択の通信を遠隔サーバ140にルーティングし得る。遠隔サーバ140は、あらかじめ定められた方法で情報を提供するように構成され得る。例えば、遠隔サーバ140は、通信に応答して送信すべき定義された1つまたは複数の短文、音声録音、および/またはファイルにアクセスし得る。遠隔サーバ140は、例えば、受信した通信の分析(例えば、セマンティックまたはマッピング分析)に基づいて、特定の短文、録音、またはファイルを選択し得る。
【0023】
[0035] 接続管理システム150で行われるルーティングおよび/または他の決定または処理は、1つまたは複数のクライアントデバイス130によって少なくとも部分的に定義されるかまたは提供される規則および/またはデータに基づいて行われ得る。例えば、クライアントデバイス130は、エージェントの優先順位付け、端末デバイスのタイプ、および/またはトピック/スキルマッチングを識別する通信を送信し得る。別の例として、クライアントデバイス130は、ルーティング決定に潜在的に影響を及ぼす様々な変数(例えば、言語互換性、予測される応答時間、デバイスタイプおよび能力、および/または端末デバイス負荷分散)に適用するための1つまたは複数の重みを識別し得る。どの端末デバイスおよび/またはエージェントがクライアントと関連付けられるべきかは、動的であり得ることが理解されるだろう。クライアントデバイス130および/または端末デバイス115からの通信は、所与の端末デバイスおよび/またはエージェントがクライアントに関連付けられるように追加または削除されるべきであることを示す情報を提供し得る。例えば、クライアントデバイス130は、IPアドレスと、そのアドレスを有する端末デバイスがクライアントに関連する端末デバイスを識別するリストに追加されるかまたはリストから削除されるかに関する指示と、を有する通信を送信し得る。
【0024】
[0036](例えば、デバイス間、デバイスと接続管理システム150との間、遠隔サーバ140と接続管理システム150との間、遠隔サーバ140とデバイスとの間の)各通信は、1つまたは複数のネットワーク170上で発生し得る。開放型または閉鎖型ネットワークの任意の組み合わせが、1つまたは複数のネットワーク170に含まれ得る。適切なネットワークの例は、インターネット、パーソナルエリアネットワーク、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、無線ローカルエリアネットワーク(WLAN)を含む。他のネットワークも同様に好適であり得る。1つまたは複数のネットワーク170は、イントラネット、エクストラネット、またはそれらの組み合わせに完全に組み込まれ得るか、またはそれらを含み得る。ある場合には、1つまたは複数のネットワーク170内のネットワークは、Bluetooth(登録商標)またはBluetooth低電力チャネルなどの短距離通信チャネルを含む。一実施形態では、2つ以上のシステムおよび/またはデバイス間の通信は、セキュアソケット層(SSL:secure sockets layer)またはトランスポート層セキュリティ(TLS:transport layer security)などのセキュアな通信プロトコルによって達成され得る。加えて、データおよび/またはトランザクションの詳細は、限定はされないが、DES(Data Encryption Standard)、トリプルDES、RSA(Rivest-Shamir-Adleman)暗号化、Blowfish暗号化、AES(Advanced Encryption Standard)、CAST-128、CAST-256、DFC(Decorrelated Fast Cipher)、TEA(Tiny Encryption Algorithm)、XTEA(eXtended TEA)、XXTEA(Corrected Block TEA)、および/またはRC5などの、任意の便利な、周知の、またはこれから開発される方法に基づいて暗号化され得る。
【0025】
[0037] ネットワークデバイス105、端末デバイス115、および/またはクライアントデバイス130は、例えば、携帯電子デバイス(例えば、スマートフォン、タブレット、ラップトップコンピュータ、スマートウェアラブルデバイス)、または非携帯電子デバイス(例えば、1つまたは複数のデスクトップコンピュータ、スマート家電、サーバ、および/またはプロセッサ)を含み得る。接続管理システム150は、ネットワーク、端末およびクライアントデバイスから別個に収容され得るか、あるいは1つまたは複数のそのようなデバイスの一部であり得る(例えば、デバイス上のアプリケーションのインストールを介して)。遠隔サーバ140は、各デバイスおよび接続管理システム150とは別個に収容され得、および/または別のデバイスまたはシステムの一部であり得る。
図1の各デバイス、サーバおよびシステムは単一のデバイスとして示されているが、複数のデバイスが代わりに使用され得ることが理解されるだろう。例えば、ネットワークデバイスのセットが単一のユーザから様々な通信を送信するために使用され得るか、または遠隔サーバ140がサーバースタックを含み得る。
【0026】
[0038] 通信サーバ180は、ネットワークデバイス105と端末デバイス115との間の通信セッションを確立するように構成される1つまたは複数のサーバを含み得る。さらに、通信サーバ180は、本明細書の
図7で説明される通信サーバ710と同じものであり得る。さらに、通信サーバ180は、ネットワークデバイス105と端末デバイス115とが通信セッション中にリアルタイムにデータ(例えば、メッセージ、メディアストリーム、スクリーンショット、イベントデータなど)を交換するサーバであり得る。ある場合には、通信サーバ180、ネットワークデバイス105、および端末デバイス115のいずれも、少なくとも部分的に、処理800~1200の各々を行い得る。ある場合には、接続管理システム150はまた、処理800~1200の各々の各々の少なくとも一部も行い得る。
【0027】
[0039] ソフトウェアエージェントまたはアプリケーションは、描かれたデバイス、システムまたはサーバ上にインストールされ、および/または実行可能であり得る。一例では、ソフトウェアエージェントまたはアプリケーションは、様々な描かれた要素が相補的な方法で動き得るように構成されている。例えば、デバイス上のソフトウェアエージェントは、デバイスの使用についてのデータを収集し、別個の接続管理システムに送信するように構成され得、別個の接続管理システム上のソフトウェアアプリケーションは、そのデータを受信し処理するように構成され得る。
【0028】
[0040]
図2は、ネットワークインタラクションシステム200の別の実施形態のブロック図を示す。概して、
図2は、ネットワークデバイス205が1つまたは複数の端末デバイス215と通信することを可能にするように構成および配置された様々なコンポーネントを例示する。描かれる例は、3つのローカルエリアネットワーク235に含まれる9つの端末デバイス215を含む。
【0029】
[0041] ある場合には、ネットワークデバイス205からの通信は、どの端末デバイスがその通信を受信すべきかを少なくとも部分的に、または完全に示す宛先データ(例えば、宛先IPアドレス)を含む。ネットワークインタラクションシステム200は、宛先データを処理し、適切なルーティングを容易にし得る1つまたは複数のネットワーク間接続コンポーネント240および/または1つまたは複数のネットワーク内接続コンポーネント255を含み得る。
【0030】
[0042] 各ネットワーク間接続コンポーネント245は、複数のネットワーク235に接続され得、(例えば、各カードが異なるネットワークに接続される)インストールされた複数のネットワークカードを有し得る。例えば、ネットワーク間接続コンポーネント245は、広域ネットワーク270(例えば、インターネット)および1つまたは複数のローカルエリアネットワーク235に接続され得る。描かれる例では、通信がネットワークデバイス205から任意の端末デバイスに送信されるために、描かれたシステムでは、通信は複数のネットワーク間接続コンポーネント245によって処理されなければならない。
【0031】
[0043] ネットワーク間接続コンポーネント245が通信(または通信に対応するパケットのセット)を受信したとき、ネットワーク間接続コンポーネント245は、宛先に関連付けられたネットワークに通信を渡すルートの少なくとも一部を決定し得る。ルートは、例えば、ルーティングテーブル(例えば、ルータに記憶されている)を使用して決定され得、それは、あらかじめ定義されるか、(例えば、別のルータからのまたは別のルータデバイスからの)着信メッセージに基づいて生成されるか、あるいは学習される1つまたは複数のルートを含み得る。
【0032】
[0044] ネットワーク間接続コンポーネント245の例は、ルータ260およびゲートウェイ265を含む。ネットワーク間接続コンポーネント245(例えば、ゲートウェイ265)は、ネットワークシステム間またはプロトコル間でコンバートするように構成され得る。例えば、ゲートウェイ265は、送信制御プロトコル/インターネットプロトコル(TCP/IP)デバイスとインターネットワークパケット交換/順次パケット交換(IPX/SPX)デバイスとの間の通信を容易にし得る。
【0033】
[0045] ローカルエリアネットワーク235で通信を受信すると、さらなるルーティングが行われる必要があり得る。そのようなネットワーク内ルーティングは、スイッチ280またはハブ285などのネットワーク内接続コンポーネント255を介して行われ得る。各ネットワーク内接続コンポーネント255は、(例えば、無線で、またはイーサネット(登録商標)ケーブルなどを介して有線で)複数の端末デバイス215に接続され得る。ハブ285は、全ての受信された通信を、それが接続されている各デバイスに繰り返すように構成され得る。各端末デバイスは次いで、各端末デバイスが宛先デバイスであるか否か、または通信が無視されるべきか否かを決定するために、各通信を評価し得る。スイッチ280は、宛先端末デバイスのみに通信を選択的に方向付けするように構成され得る。
【0034】
[0046] ある場合には、ローカルエリアネットワーク235は、複数のセグメントに分割され得、その各々は、独立したファイアウォール、セキュリティ規則、およびネットワークプロトコルと関連付けられ得る。ネットワーク内接続コンポーネント255は、セグメント内ルーティングを容易にするために、1つ、複数、または全てのセグメントの各々に提供され得る。ブリッジ280は、セグメント275にわたる通信をルーティングするように構成され得る。
【0035】
[0047] ネットワークにわたり、またはネットワーク内で通信を適切にルーティングするために、様々なコンポーネントが通信内の宛先データを分析する。例えば、そのようなデータは、通信がどのネットワークにルーティングされるべきか、通信がネットワーク内のどのデバイスにルーティングされるべきか、または端末デバイスがどの通信を処理すべきか(または無視すべきか)を示し得る。しかし、ある場合には、ネットワークデバイスからの通信にどの端末デバイスが参加すべきか(またはどのネットワークが関与すべきかさえも)が直ちに明らかにならない。
【0036】
[0048] 例示として、端末デバイスのセットが、類似したタイプの応答通信を提供するように構成され得る。よって、ネットワークデバイスからの通信内のクエリは、どのネットワークデバイスがその通信をルーティングしたかに関わらず、同様の方法で応答されることが予期され得る。この仮定は、高いレベルで当てはまる可能性があるが、端末デバイスに関係する様々な詳細は、特定のルーティングが他と比較して有利となることにつながり得る。例えば、セット内の端末デバイスは、(例えば)どの通信チャネルがサポートされているか、ネットワークデバイスへの地理的近接性および/またはネットワーク近接性、並びに/あるいは、関連したエージェントの特性(例えば知識ベース、経験、使用言語、可用性、全体的な性格または感情など)に関して互いに異なり得る。従って、選択ルーティングは、ネットワークデバイス通信に、より正確に、および/または完全に応答するより速い応答を容易にし得る。複雑なのは、ネットワークデバイスを端末デバイスにマッピングする静的ルーティングが、通信トピック、チャネルタイプ、エージェント利用可能性などの変動を考慮に入れることを失敗し得ることである。
【0037】
[0049]
図3A~
図3Cは、接続管理システムを含むネットワークインタラクションシステム300a~cの他の実施形態のブロック図を示す。描かれるシステム300a~cの各々は、簡略化のために2つのローカルエリアネットワーク235のみを示しているが、ローカルエリアネットワークの数を拡大させるために実施形態が拡張され得ることが理解されるだろう。システム300a~cの各々は、接続管理システム350を含み、それは、どの端末デバイスがネットワークデバイス205と通信するかを識別し得、接続チャネルを確立および管理(例えば、維持または終了)し得、ある交換において通信を再ルーティングするか否か、いつするかなどを決定し得る。よって、接続管理システム350は、ルーティング決定に影響を及ぼすように、通信、エージェント可用性、端末デバイスまたはエージェントの能力などを動的に、リアルタイムに評価するように構成され得る。
【0038】
[0050]
図3Aでは、接続管理システム350は、ネットワークデバイス205および遠隔サーバ340の各々に関連付けられている(例えば、接続管理システム350aはネットワークデバイス205に関連付けられ、接続管理システム350bは遠隔サーバ340に関連付けられる)。例えば、接続管理システム350aおよび/または接続管理システム350bは、それぞれネットワークデバイス205および遠隔サーバ340の各々にアプリケーションとしてインストールまたは記憶され得る。アプリケーションの実行は、例えば、ネットワークデバイス205との通信交換に参加するよう選択された端末デバイス215を識別するために、ネットワークデバイス205と遠隔サーバ340との間の通信を容易にし得る。識別は、本明細書で開示される1つまたは複数の要因(例えば、可用性、通信トピック/レベルの詳細とエージェントまたは端末デバイスの知識ベースとの一致、予測されるレイテンシ、チャネルタイプの可用性など)に基づいて行われ得る。
【0039】
[0051] クライアントデバイス330は、ルーティング決定をどのように行うべきか指示するクライアントデータを提供し得る。例えば、そのようなデータは、(例えば、負荷分散または予測応答レイテンシに関係して)特定の特性をどのように重み付けし、またはマッチングし、または制約し、またはバイアスをかけるべきかに関する指示を含み得る。クライアントデータはまた、通信チャネルがいつ確立される(または閉じられる)べきか、または異なるネットワークデバイスに通信がいつ再ルーティングされるべきかに関連した仕様も含み得る。クライアントデータは、通信ルーティングのための規則などのような様々なクライアント固有の規則を定義するために使用され得る。
【0040】
[0052] 遠隔サーバ340上で実行する接続管理システム350bは、どの通信チャネルがサポートされているか、ネットワークデバイスへの地理的近接性および/またはネットワーク近接性、端末デバイスとの通信のレイテンシおよび/または安定性、端末デバイスのタイプ、端末デバイスの能力、端末デバイス(またはエージェント)が前に所与のネットワークデバイス(またはユーザ)と通信したことがあるか否か、並びに/あるいは、関連付けられたエージェントの特性(例えば知識ベース、経験、使用言語、可用性、全体的な性格または感情など)のような、端末デバイスに関係する(例えば、所与のクライアントに関係する)様々なメトリックをモニタし得る。従って、通信管理システム350bは、メトリックに基づいてネットワークデバイスの通信に、より正確に、および/または完全に応答するより速い応答を容易にするようにルーティングを選択することを可能にし得る。
【0041】
[0053]
図3Aに描かれる例では、ネットワークデバイス205と遠隔サーバ340との間の通信交換は、宛先アドレスの早期の識別を容易にし得る。次いで、ネットワークデバイス205は、宛先アドレスを使用して後続の通信を方向付けし得る。例えば、ネットワークデバイス205は、(例えば、1つまたは複数のネットワーク間接続および広域ネットワークを介して)遠隔サーバ340に初期通信を送り、遠隔サーバ340は、1つまたは複数の対応するクライアントを識別し得る。次いで、遠隔サーバ340は、1つまたは複数の対応するクライアントと関連付けられた端末デバイスのセットを識別し、それらの端末デバイスについてのメトリックを収集し得る。メトリックは、通信交換に関与すべき端末デバイスを選択するように(例えば、遠隔サーバ340によって)評価され得、端末デバイスに関係する情報(例えば、IPアドレス)はネットワークデバイス205に送られ得るいくつかの実施形態では、遠隔サーバ340は、様々な端末デバイスについてのメトリックを継続的または定期的に収集および評価し、評価結果をデータストアに記憶する。そのような実施形態では、1つまたは複数の対応するクライアントと関連付けられた端末デバイスのセットを識別すると、遠隔サーバ340は、データストアからの記憶された評価結果にアクセスし、記憶された評価結果に基づいて通信交換に関与すべき端末デバイスを選択し得る。
【0042】
[0054]
図3Bでは、接続管理システム350は、中継器および/または宛先アドレスとして機能するように構成され得る。従って、例えば、ネットワークデバイス205のセットは、各々が接続管理システム350を宛先として識別する通信を送信し得る。接続管理システム350は、各通信を受信し得、端末デバイスのセットを(例えば、端末デバイスごとのメトリックを生成するように)同時にモニタし得る。モニタリングおよび規則に基づいて、接続管理システム350は、各通信を中継し得る端末デバイス215を識別する。実施形態に応じて、端末デバイスの通信は、同様に、さらなる中継のために(例えば、接続管理システム350の)一貫した宛先に方向付けされ得るか、または端末デバイスは、対応するネットワークデバイスと直接通信を開始し得る。これらの実施形態は、効率的なルーティングおよび十分な通信モニタリングを容易にし得る。
【0043】
[0055]
図3Cに描かれる実施形態は、
図3B中のものと同様である。しかしながら、いくつかの実施形態では、接続管理システム350は、ネットワーク内コンポーネント(例えば、端末デバイス、ネットワーク内接続、またはその他)に直接接続される。
【0044】
[0056]
図3A~
図3Cの多くのバリエーションが考えられることが理解されるだろう。例えば、接続管理システム350は、接続管理システム350(またはその一部)に対応するアプリケーションがコンポーネントにインストールされるように、接続コンポーネント(例えば、ネットワーク間接続コンポーネント245またはネットワーク内接続コンポーネント255)に関連付けられ得る。アプリケーションは、例えば、独立して、または(例えば、1つまたは複数の他のコンポーネント、ネットワークデバイス、あるいは遠隔サーバ上で実行している)1つまたは複数の類似したアプリケーションあるいは相補的なアプリケーションと通信することによって、動作し得る。
【0045】
[0057]
図4は、接続コンポーネントのオペレーションのプロトコルスタックマッピング400の表現を示す。より具体的には、
図4は、様々な接続コンポーネントに対応するオープンシステムインタラクション(OSI:Open Systems Interaction)モデルにおけるオペレーションの層を識別する。
【0046】
[0058] OSIモデルは、複数の論理層402~414を含み得る。各層は、層402~層412が各々上位層にサービスし、層404~層414が各々下位層によってサービスされるように、順序付けられたスタックで配置されている。OSIモデルは、物理層402を含む。物理層402は、パラメータの物理的通信(例えば、電気的、光学的、または電磁的)を定義し得る。物理層402はまた、接続を確立および終了するためのプロトコルなどの接続管理プロトコルを定義する。物理層402は、フロー制御プロトコルおよび送信モードをさらに定義し得る。
【0047】
[0059] リンク層404は、ノード間通信を管理し得る。リンク層404は、エラー(例えば、物理層402における送信エラー)を検出および訂正し得、アクセス許可を管理し得る。リンク層404は、媒体アクセス制御(MAC)層および論理リンク制御(LLC)層を含み得る。
【0048】
[0060] ネットワーク層406は、(例えば、データグラムとしての)同じネットワーク中のノード間の(例えば可変長の)データの転送を調整し得る。ネットワーク層406は、論理ネットワークアドレスを物理マシンアドレスにコンバートし得る。
【0049】
[0061] トランスポート層408は、送信および受信の質を管理し得る。トランスポート層408は、送信制御プロトコル(TCP:Transmission Control Protocol)などのデータを転送するためのプロトコルを提供し得る。トランスポート層408は、送信のためにデータパケットのセグメントテーション/デセグメントテーションを行い得、層402~層406で発生する送信エラーを検出し、これに対処し得る。セッション層410は、ローカルアプリケーションとリモートアプリケーションとの間の接続を開始、維持、および終了し得る。セッションは、リモートプロシージャインタラクションの一部として使用され得る。プレゼンテーション層412は、アプリケーション層またはネットワーク層によって受け入れられることがわかっているデータタイプに基づいてデータを暗号化、解読、フォーマット化し得る。
【0050】
[0062]アプリケーション層414は、通信を制御または管理するソフトウェアアプリケーションと相互接続し得る。そのようなアプリケーションを介して、アプリケーション層414は、(例えば)宛先、ローカルリソースの状態、あるいは可用性および/または通信のコンテンツまたはフォーマットを識別し得る。様々な層402~414は、利用可能および適用可能な他の機能を果たし得る。
【0051】
[0063] ネットワーク内接続コンポーネント422、424は、物理層402およびリンク層404においてオペレートするように図示されている。より具体的には、通信の受信および送信に関するオペレーションを制御できるように、ハブは物理層でオペレートし得る。ハブが通信のアドレス指定またはデータのフィルタリングのための能力がないため、それらは上位レベルでオペレートする機能がほとんど、あるいは全くない。一方、スイッチは、アドレス(例えば、MACアドレス)に基づいて通信フレームをフィルタリングすることができるので、リンク層404でオペレートすることができる。
【0052】
[0064] 一方、ネットワーク間接続コンポーネント426、428は、上位レベル(例えば、層406~層414)でオペレートするように図示されている。例えば、ルータは、アドレス(例えば、IPアドレス)に基づいて通信データパケットをフィルタリングすることができる。ルータは、パケットを適切なネットワークに指定するように、アドレスに基づいてパケットを特定のポートに転送し得る。ゲートウェイは、ネットワーク層以上でオペレートし、同様のフィルタリング、方向付け、および(例えば、プロトコルまたはアーキテクチャにわたる)さらなるデータの変換を行い得る。
【0053】
[0065] 接続管理システム450は、様々な実施形態において、様々な層のうちの1つ、複数、全て、または任意のものと相互接続し、および/またはその上でオペレートし得る。例えば、接続管理システム450は、どの端末デバイスとハブが通信するかを動的に調整するようにハブと相互接続し得る。別の例として、接続管理システム450は、コンポーネントが宛先(例えば、MAC、論理、または物理)アドレスとしてどの端末デバイスを選択するかに影響を及ぼすように、ブリッジ、スイッチ、ルータまたはゲートウェイと通信し得る。さらなる例として、接続管理システム450は、トランスポート層408上のデータパケットのセグメンテーション、セッション層410上のセッション持続時間、並びに/あるいは、プレゼンテーション層412上の暗号化および/または圧縮をモニタ、制御、または指示し得る。いくつかの実施形態では、接続管理システム450は、特定の層でオペレートしている装置(例えば、リンク層404でオペレートしているスイッチ)と通信を交換する(例えば、コマンドを送る)ことによって、特定のやり方で(例えば、ネットワークデバイスと端末デバイスとの間の)既存の通信をルーティングまたは修正することによって、および/または既存の通信に基づいて特定の情報(例えば、新しい宛先アドレス)を含む新しい通信を生成することによって、様々な層と相互接続し得る。よって、接続管理システム450は、様々なデバイスとのインタラクションによって、および/または様々なプロトコルスタック層でオペレートすることに影響を及ぼすことによって、通信ルーティングおよびチャネル確立(あるいは、維持または終了)に影響を及ぼし得る。
【0054】
[0066]
図5は、一実施形態によるマルチデバイス通信交換システム500を表す。システム500は、様々なタイプの通信チャネル上で様々なタイプの端末デバイスと通信するように構成されたネットワークデバイス505を含む。
【0055】
[0067] 描かれる例では、ネットワークデバイス505は、(例えば、基地局510を介して)セルラネットワーク上で通信を送信し得る。通信は、稼働中のネットワーク515にルーティングされ得る。稼働中のネットワーク515は、通信を受信し、どの端末デバイスが通信に応答すべきかを識別する接続管理システム520を含み得る。そのような決定は、(例えば、コンテンツ分析またはクライアントを示すユーザ入力に基づいて)その通信が関係するクライアントを識別すること、およびクライアントと関連付けられた1つまたは複数の端末デバイスごとに1つまたは複数のメトリックを決定することに依存し得る。例えば、
図5は、端末デバイス530a~cの各クラスタは、異なるクライアントに対応し得る。端末デバイスは、地理的にコロケートされるか、または分散され得る。メトリックは、記憶されたまたは学習されたデータおよび/またはリアルタイムのモニタリング(例えば、可用性に基づいて)に基づいて決定され得る。
【0056】
[0068] 接続管理システム520は、1つまたは複数のルータ525、あるいは他のネットワーク間またはネットワーク内接続コンポーネントを介して様々な端末デバイスと通信し得る。接続管理システム520は、1つまたは複数のデータストアにおける、通信、端末デバイスオペレーション、クライアント規則、および/またはユーザと関連付けられたアクション(例えば、オンラインアクティビティ、アカウントデータ、購入履歴など)から、またはこれらに関係してデータを収集、分析、および/または記憶し得る。そのようなデータは、通信ルーティングに影響を及し得る。
【0057】
[0069] 特に、通信ルーティングおよび/または処理に影響を及ぼすために、様々な他のデバイスがさらに使用され得る。例えば、図示の例では、接続管理システム520もまた、ウェブサーバ540に接続されている。よって、接続管理システム540は、技術的製品詳細、ニュース、現在の提供製品、現在または予測される天気などのような関心対象のデータを検索し得る。
【0058】
[0070] ネットワークデバイス505はまた、(例えば、ストリーミングウェブサーバ545を含む)ウェブサーバに接続され得る。ある場合には、そのようなサーバとの通信には、接続管理システム520との通信交換を開始するための初期のオプションが提供される。例えば、ネットワークデバイス505は、特定のウェブページを訪問している間に、利用できる通信機会があり、そのようなオプションを提示され得ることを検出し得る。
【0059】
[0071] 通信システム500の1つまたは複数の要素はまた、ソーシャルネットワーキングサーバ550にも接続され得る。ソーシャルネットワーキングサーバ550は、様々なユーザデバイスから受信したデータを集約し得る。よって、例えば、接続管理システム520は、所与のトピックに対する一般的な(またはユーザ固有の)感情を推定するか、あるいは所与のユーザまたはユーザのクラスの一般的な行動を推定することが可能であり得る。
【0060】
[0072]
図6は、接続管理システム600の一実施形態のブロック図を示す。メッセージ受信側インターフェース605は、メッセージを受信し得る。ある場合には、メッセージは、例えば、ネットワークデバイスまたは端末デバイスなどの(例えば、接続管理システム600とは別個に、または同じハウジング内に収容された)ソースデバイスによって送信された通信の一部として受信され得る。ある場合には、通信は、2つのデバイス(例えば、ネットワークデバイスおよび端末デバイス)間でルーティングされる一連のメッセージまたはメッセージ交換を含み得る、一連の通信または通信交換の一部であり得る。このメッセージまたは通信交換は、デバイス間のインタラクションの一部であり得る、および/またはそれを定義し得る。通信チャネルまたはオペレート可能なチャネルは、デバイス間のルーティングおよび通信交換を容易にするために使用される1つまたは複数のプロトコル(例えば、ルーティングプロトコル、タスク割り当てプロトコルおよび/またはアドレス指定プロトコル)を含み得る。
【0061】
[0073] ある場合には、メッセージは、ローカルまたは遠いユーザインターフェースで受信された入力に基づいて生成されるメッセージを含み得る。例えば、メッセージは、ボタンまたはキーの選択または録音された発話信号に基づいて生成されるメッセージを含み得る。一例では、メッセージは、ネットワークデバイスが特定のアプリページまたはウェブページを提示するか、または特定の入力コマンド(例えば、キーシーケンス)を提供したことを検出すると生成されるものといった、自動的に生成されたメッセージを含む。メッセージは、通信交換を開始するものなどの、命令または要求を含み得る。
【0062】
[0074] ある場合には、メッセージは、クライアントの識別子を含むか、またはそれと関連付けられ得る。例えば、メッセージは、クライアント(またはクライアントと関連付けられたデバイス)を明示的に識別し得、メッセージは、クライアントと関連付けられたウェブページまたはアプリページを含み、またはそれと関連付け得、メッセージは、クライアントと関連付けられた宛先アドレスを含むか、またはそれと関連付けられ得、メッセージは、(例えば、クライアントによって販売されている、クライアントによって販売されたことのある、またはクライアントがサービス提供するものである)クライアントと関連付けられた品目(例えば、製品)またはサービスの識別を含むか、またはそれと関連付けられ得る。例示として、ネットワークデバイスは、エージェントに通信を送信するオプションを提供し得る、特定のクライアントのアプリページを提示しているものであり得る。メッセージに対応するユーザ入力を受け取ると、そのメッセージおよび特定のクライアントの識別子を含めるように通信が生成され得る。
【0063】
[0075] 処理エンジン610は、受信した通信および/またはメッセージを処理し得る。処理は、例えば、1つまたは複数の特定のデータ要素(例えば、メッセージ、クライアント識別子、ネットワークデバイス識別子、アカウント識別子など)を抽出することを含み得る。処理は、(例えば、特定のデバイスのタイプ、オペレーティングシステム、通信チャネルタイプ、プロトコルおよび/またはネットワークと互換性を有するように)フォーマットまたは通信タイプを変換することを含み得る。
【0064】
[0076] メッセージアセスメントエンジン615は、(例えば、抽出または受信された)メッセージをアセスメントし得る。アセスメントは、例えば、メッセージための1つまたは複数のカテゴリまたはタグを識別することを含み得る。カテゴリまたはタグタイプの例は、(例えば)トピック、感情、複雑さ、および緊急性を含み得る。メッセージをカテゴリ化することとタグ付けすることとの違いは、カテゴリは(例えば、あらかじめ定義されたカテゴリオプションのセットに従って)制限され得るが、一方タグは制限なしであり得る。トピックは、例えば、製品、サービス、技術的問題、使用に関する質問、苦情、払い戻し請求、または購入依頼を含み得る。カテゴリまたはタグは、例えば、(例えば、キーワード、文の構造、繰り返される単語、句読点および/または項目以外の単語を識別することによる)メッセージの意味解析、ユーザ入力(例えば、選択された1つまたは複数のカテゴリを有する)並びに/あるいは、メッセージ関連の統計(例えば、タイピング速度および/または応答レイテンシ)に基づいて決定され得る。
【0065】
[0077] ある場合には、メッセージアセスメントエンジン615は、メッセージについてのメトリックを決定し得る。メトリックは、例えば、文字、単語、大文字、全て大文字の単語、あるいは特定の文字または句読点のインスタンス(例えば、感嘆符、疑問符および/またはピリオド)の数を含み得る。メトリックは、感嘆符(または疑問符)で終わる文の割合、全て大文字である単語の割合などの、比率を含み得る。
【0066】
[0078] メッセージアセスメントエンジン615は、メッセージ、メッセージメトリック、および/またはメッセージ統計をメッセージデータストア620に記憶し得る。各メッセージはまた、対応するソースデバイス、宛先デバイス、ネットワークデバイス、端末デバイス、クライアント、1つまたは複数のカテゴリ、1つまたは複数の段階、および/またはメッセージと関連付けられた統計を識別するデータなどの、他のデータ(例えばメタデータ)と関連付けて記憶し得る。接続管理システム600の様々なコンポーネント(例えば、メッセージアセスメントエンジン615および/またはインタラクション管理エンジン625)は、クエリ応答メッセージ、メッセージメトリックおよび/またはメッセージ統計を検索するために、メッセージデータストア620に問い合わせし得る。
【0067】
[0079] インタラクション管理エンジン625は、どのデバイスに通信がルーティングされるべきか、どのように受信側および送信側デバイスが通信すべきかを決定し得る。これらの決定の各々は、例えば、特定のネットワークデバイス(または特定のユーザと関連付けられた任意のネットワークデバイス)が、端末デバイスのセット内の端末デバイス(例えば、接続管理システム600に関連付けられた任意の端末デバイス、または1つまたは複数の特定のクライアントに関連付けられた任意の端末デバイス)と以前に通信したことがあるか否かに依存し得る。
【0068】
[0080] ある場合には、ネットワークデバイス(あるいは、同じユーザまたはアカウントに関連付けられた他のネットワークデバイス)が所与の端末デバイスと(例えば、クライアントに関する事柄について)以前に通信したことがあるとき、通信ルーティングは、概して同じ端末デバイスの方にバイアスをかけられ得る。ルーティングに影響を及ぼし得る他の要因は、例えば、以前の通信に関係して推測または識別されたユーザまたはエージェントの感情、現在の通信のトピック(例えば、以前の通信のトピック、並びに/あるいは、1つまたは複数の端末デバイスまたはエージェントと関連付けられた知識ベースに関連するもの、および関連する程度)、端末デバイス(または対応するエージェント)が利用可能か否か、および/または端末デバイスの予測応答レイテンシを含み得る。そのような要因は、絶対的に、または他の端末デバイスに対応する同様のメトリックに関して考慮され得る。再ルーティング規則(例えば、クライアント固有の規則または一般的な規則)は、エージェント一貫性を優先するか否を決定するために、そのような要因がどのように評価され、重み付けされるべきか指示し得る。
【0069】
[0081] ネットワークデバイス(あるいは、同じユーザまたはアカウントと関連付けられた他のネットワークデバイス)が所与の端末デバイスと(例えば、クライアントに関する事柄について)以前に通信したことがないとき、端末デバイス選択を、例えば、様々なエージェントの知識ベースが通信の話題に対応する程度、所与の時間および/またはチャネルタイプでの様々なエージェントの可用性、(例えば、クライアントと関連付けられた)端末デバイスのタイプおよび/または能力、ユーザとエージェントとの間の言語一致、並びに/あるいは、性格分析などの要因に基づいて行われ得る。一例では、規則は、これらのような1つまたは複数の要因のサブスコアおよび各スコアに割り当てるべき重みをどのように決定するか識別し得る。重み付きサブスコアを組み合わせる(例えば、合計する)ことによって、エージェントごとのスコアが決定され得る。次いで、端末デバイス選択は、(例えば、高スコアまたは最高スコアを選択するように)端末デバイスのスコアを比較することによって行われ得る。
【0070】
[0082] デバイスがどのように通信すべきか決定することに関して、インタラクション管理エンジン625は、(例えば)端末デバイスが(例えば)電子メール、オンラインチャット、SMSメッセージ、音声通話、ビデオチャットなどを介する通信に応答すべきか否かを決定し得る。通信タイプは、例えば、通信タイプの優先順位リスト(例えば、少なくとも一部はクライアントまたはユーザによって定義された)、ネットワークデバイスから以前に受信した通信のタイプ(例えば、一貫性を助長するように)、受信メッセージの複雑さ、ネットワークデバイスの能力、並びに/あるいは、1つまたは複数の端末デバイスの可用性に基づいて選択され得る。明らかに、一部の通信タイプは、(例えば、迅速なメッセージ応答が期待される)リアルタイム通信をもたらすが、一方その他は、(例えば、メッセージ間の(例えば、数分または数時間の)遅延が受容される)非同期通信をもたらし得る。
【0071】
[0083] さらに、インタラクション管理エンジン625は、2つのデバイス間の継続チャネルが確立されるか、使用されるか、または終了されるべきか否かを決定し得る。継続チャネルは、ネットワークデバイスから指定された端末デバイスへの将来の通信のルーティングを容易にするように構築され得る。このバイアスは、連続メッセージ(例えば、数日、数週間または数ヶ月)にわたってさえ持続することができる。ある場合には、(例えば、エージェントを識別する)継続チャネルの表現は、ネットワークデバイス上で提示されるプレゼンテーションに含まれ得る。このようにして、ユーザは、効率を高めるように通信が一貫してルーティングされることを理解することができる。
【0072】
[0084] 一例では、スコアは、所定のネットワークデバイスおよび端末デバイスに対応する接続スコアを決定するために、本明細書に記載された1つまたは複数の要因および(例えば、1つまたは複数の要因の各々の重みを含む)規則を使用して生成され得る。スコアは、全体的な一致、あるいは、所与の通信または連続通信に特有の一致に関係し得る。よって、例えば、スコアは、所与の端末デバイスがネットワークデバイス通信に応答するのに適していると予測される度合いを反映し得る。ある場合には、スコア分析は、所与の通信をルーティングする端末デバイスの各々を識別するために、および接続チャネルを確立するか、使用するか、または終了するか否かを識別するために使用され得る。スコア分析がルーティング決定とチャネル決定との両方に対処するために使用されるとき、各決定に関連するスコアは、同じ、同様、または異なる方式で決定され得る。
【0073】
[0085] よって、例えば、スコアが長期の一致の強度を予測するためのものか、それとも特定のメッセージクエリに応答するためのものかに応じて、異なる要因が考慮され得ることが理解されるだろう。例えば、前者の例では、全体的なスケジュールおよび時間帯の考慮が重要であるが、一方、後者の例では、即時の可用性がより重要視され得る。単一のネットワークデバイス/端末デバイスの組み合わせに関してスコアが決定され得るか、または各々が所与のネットワークデバイスと異なる端末デバイスとの間の一致を特徴付ける、複数のスコアが決定され得る。
【0074】
[0086] 例示として、クライアントと関連付けられた3つの端末デバイスのセットが、潜在的な通信ルーティングについて評価され得る。特定の通信についての一致に関係するスコアが各々のために生成され得る。最初の2つの端末デバイスの各々は、通信を送信したネットワークデバイスと以前に通信したことがあり得る。ネットワークデバイスからの入力は、第1のデバイスとの通信とのインタラクションの満足度を指示し得る。よって、第1のデバイス、第2のデバイス、および第3のデバイスの(規則に従って計算された)過去インタラクションサブスコアは、それぞれ、10、5および0であり得る(否定的満足度入力は、ネガティブなサブスコアをもたらし得る)。第3の端末デバイスのみが即時利用可能であると判定され得る。第2の端末デバイスは、15分以内に応答のために利用可能であり得るが、第1の端末デバイスは、次の日まで応答のために利用可能とならないと予測され得る。よって、第1のデバイス、第2のデバイス、および第3のデバイスについての高速応答サブスコアは、1、3および10であり得る。最後に、(端末デバイスと関連付けられた)エージェントが通信内のトピックについて知識を有する度合いが推定され得る。第3の端末デバイスと関連付けられたエージェントは、他の2つのデバイスと関連付けられたものよりも知識を有し、3、4および9のサブスコアをもたらすと決定され得る。この例では、規則は、重み付けまたは正規化パラメータを含まず(しかし、他の例では規則が含む場合もある)、14、11および19のスコアをもたらす。よって、規則は、メッセージが最高スコアを有するデバイス、すなわち第3の端末デバイスにルーティングされるべきであることを示し得る。特定の端末デバイスへのルーティングが失敗した場合、そのメッセージは、次に高いスコアを有するデバイスにルーティングされ得、以下同様に繰り返される。
【0075】
[0087] スコアは、1つまたは複数の絶対閾値または相対閾値と比較され得る。例えば、通信がルーティングされ得る端末デバイスを選択するために、端末デバイスのセットについてのスコアは、高スコアを識別するために互いに比較され得る。別の例として、端末デバイスとの継続チャネルを確立するか否かを決定するために、スコア(例えば、高スコア)は、1つまたは複数の絶対閾値と比較され得る。継続チャネルを確立するための全体的な閾値は、所与の一連のメッセージにおける通信を一貫してルーティングするための閾値より高くなり得る(が、必須ではない)。全体的な閾値と、通信を一貫してルーティングするかどうかを決定するための閾値との間のこの差異は、拡張されたチャネルのユーティリティの場合に継続チャネルのコンテキストでは強い一致が重要だからである。いくつかの実施形態では、継続チャネルを使用するための全体的な閾値は、継続チャネルを確立するための、および/または所与の一連のメッセージ内の通信を一貫してルーティングするための閾値よりも低くなり得る(が、必須ではない)。
【0076】
[0088] インタラクション管理エンジン625は、様々なコンテキストでアカウントエンジン630と相互接続することができる。例えば、アカウントエンジン630は、デバイスに対応するアカウントを識別するために、アカウントデータストア635内のネットワークデバイスまたは端末デバイスの識別子を探索し得る。さらに、アカウントエンジン630は、前の通信交換(例えば、時間、関与した他のデバイス、チャネルタイプ、解決段階、トピックおよび/または関連付けられたクライアント識別子)、接続チャネル(例えば、1つまたは複数のクライアントの各々について、チャネルが存在するか否か、各チャネルと関連付けられた端末デバイス、確立時刻、使用頻度、最終使用日付、チャネル制約条件および/またはサポートされる通信のタイプを示す)、ユーザまたはエージェントの好みあるいは制約条件(例えば、端末デバイス選択、応答レイテンシ、端末デバイス一貫性、エージェント専門知識、および/または通信タイプの好みもしくは制約に関連した)、並びに/あるいは、ユーザまたはエージェントの特性(例えば、年齢、使用言語または好みの言語、地理的位置、興味など)についてのデータを維持し得る。
【0077】
[0089] さらに、インタラクション管理エンジン625は、現在のチャネルデータを反映するためにアカウントデータストア635が更新され得るように、アカウントエンジン630に様々な接続チャネルのアクションを知らせ得る。例えば、チャネルを確立すると、インタラクション管理エンジン625は、アカウントエンジン630に確立を通知し、ネットワークデバイス、端末デバイス、アカウント、およびクライアントのうちの1つまたは複数を識別し得る。アカウントエンジン635は続いて、(ある場合には)利用されているエージェント一貫性をユーザがわかるように、チャネルの存在をユーザに通知し得る。
【0078】
[0090] インタラクション管理エンジン625はさらに、クライアントマッピングエンジン640と相互接続し得、それは、通信を1つまたは複数のクライアント(および/または関連付けられたブランド)にマッピングし得る。ある場合には、ネットワークデバイス自体から受信される通信が、クライアントに対応する識別子(例えば、クライアント、製品、サービス、ウェブページ、またはアプリページの識別子)を含む。識別子は、(例えば、クライアントマッピングエンジン640が検出し得る)メッセージの一部として含まれ得るか、またはメッセージを含む通信における他のデータとして含まれ得る。次いで、クライアントマッピングエンジン640は、クライアントおよび/またはクライアントの識別子についての追加データを検索するためにクライアントデータストア645内の識別子を探索し得る。
【0079】
[0091] ある場合には、メッセージは、いずれのクライアントにも特に対応しない可能性がある。例えば、メッセージは、一般的なクエリを含み得る。クライアントマッピングエンジン640は、例えば、メッセージの意味解析を行い、1つまたは複数のキーワードを識別し、そのキーワードと関連付けられた1つまたは複数のクライアントを識別し得る。ある場合には、単一のクライアントが識別される。ある場合には、複数のクライアントが識別される。次いで、各クライアントの識別は、ユーザが(例えば、関連付けられた端末デバイスを介して)通信するクライアントを選択できるように、ネットワークデバイスを介して提示され得る。
【0080】
[0092] クライアントデータストア645は、クライアントと関連付けられた1つまたは複数の端末デバイス(および/またはエージェント)の識別を含み得る。端末ルーティングエンジン650は、ルーティング決定に影響を及ぼすように、1つ、複数または全てのそのような端末デバイス(および/またはエージェント)の各々に関係するデータを検索するか、または収集し得る。例えば、端末ルーティングエンジン650は、端末データストア655を維持し得、それは、端末デバイスのタイプ、オペレーティングシステム、通信タイプの能力、インストール済みのアプリケーションアクセサリ、地理的位置、および/または識別子(例えば、IPアドレス)などの情報を記憶し得る。情報はまた、経験レベル、役職、スキルレベル、知識ベース(例えば、エージェントが知識を有するトピック、および/または様々なトピックについての知識のベル)、性格メトリック、就業時間、使用言語、および/または人口統計情報などのエージェント情報を含み得る。ある情報が動的に更新され得る。例えば、端末デバイスが利用可能であるかどうかを示す情報は、(例えば)端末デバイスからの通信(例えば、デバイスがスリープ状態であるかどうかを識別し、オフ/オン、アイドル/アクティブ状態にし、または入力が時間範囲内で受信されたどうかを識別する)、通信ルーティング(例えば、端末デバイスが通信交換に関与しているか、またはその一部になるように割り当てられているかを示す)、あるいは通信が終了または開始したことを示すネットワークデバイスまたは端末デバイスからの通信に基づいて動的に更新され得る。
【0081】
[0093] 様々なコンテキストにおいて、1つまたは複数の通信交換に従事していることは、必ずしも、端末デバイスが別の通信交換に従事するために利用できないことを指示するとは限らないことが理解されるだろう。通信タイプ(例えば、メッセージ、電子メール、チャット、電話)、クライアントによって識別された、またはユーザによって識別された目標応答時間、および/またはシステム負荷(例えば、一般的に、またはユーザに関する)などの様々な要因は、端末デバイスが何件の交換に関与し得るかに影響を及ぼし得る。
【0082】
[0094] インタラクション管理エンジン625が通信交換または接続チャネルに関与すべき端末デバイスを識別するとき、端末ルーティングエンジン650に通知することができ、それは、端末データストア655から、宛先(例えばIP)アドレス、デバイスタイプ、プロトコルなどの端末デバイスについての任意の関連データを検索し得る。次いで、処理エンジン610は、(ある場合には)特定のフォーマットを有し、特定のプロトコルに準拠するなどのように、メッセージを含む通信を修正するか、または(メッセージを含む)新しい通信を生成すし得る。ある場合には、新しいまたは変更されたメッセージは、ネットワークデバイスに対応するアカウントデータ、メッセージクロニクル、および/またはクライアントデータなどの、追加データを含み得る。
【0083】
[0095] 次いで、メッセージ送信側インターフェース660は、通信を端末デバイスに送信し得る。送信は、例えば、別個のハウジングに収容されたデバイスへの有線または無線送信を含み得る。端末デバイスには、接続管理システム600と同じ、または異なるネットワーク(例えば、ローカルエリアネットワーク)内の端末デバイスを含み得る。従って、通信を端末デバイスに送信することは、通信をネットワーク内またはネットワーク間接続コンポーネントに送信することを含み得る。
【0084】
[0096] 接続管理システム600は、通信サーバ180を含み得ることが理解されるだろう。例えば、接続管理システム600は、ネットワークデバイスと端末デバイスとの間の通信セッション中にモバイルデバイスで動作しているモバイルアプリケーションを制御するための遠隔制御能力を有効にし得る。接続管理システム600が、本明細書で説明されるような処理800~1200のうちの任意のものを行うために通信サーバ180、ネットワークデバイス105、および/または端末デバイス115を使用し得ることが理解されるだろう。
【0085】
[0097]
図7は、モバイルアプリケーションのリアルタイム遠隔制御のためのインタラクション環境700の表現を示す。インタラクション環境700は、ネットワークデバイス705、通信サーバ710、および端末デバイス715を含み得る。さらに、インタラクション環境700は、ネットワークデバイス705で実行されているモバイルアプリケーションの遠隔制御を容易にし得る。例えば、端末デバイス715は、ネットワークデバイス705で実行しているモバイルアプリケーションを遠隔制御し得る。いくつかの例では、モバイルアプリケーション(例えば、モバイルネイティブアプリケーション)は、ネットワークデバイス705(例えば、スマートフォン)のオペレーティングシステムを使用して実行され得る(モバイルデバイスまたは1つまたは複数の外部サーバに記憶された)実行可能コードを含み得る。いくつかの例では、モバイルアプリケーションは、(モバイルデバイスにおいて生成および記憶される)ネイティブユーザインタフェース(UI)コンポーネントから成るハイブリッドモバイルアプリケーションを含み得るが、(例えば、ウェブベースのコーディング言語を使用して)インタープリタ型言語で記述される。本願は、モバイルネイティブアプリケーションまたはハイブリッドアプリケーションに限定されるものではなく、よって、モバイルアプリケーションのいずれのタイプも、本明細書で説明される方法に使用され得る。
【0086】
[0098] ネットワークデバイス705および端末デバイス715は、例えば、携帯電子デバイス(例えば、スマートフォン、タブレット、ラップトップコンピュータ、スマートウェアラブルデバイス)、または非携帯電子デバイス(例えば、1つまたは複数のデスクトップコンピュータ、スマート家電、サーバ、および/またはプロセッサ)を各々含み得る。さらに、ネットワークデバイス705は、端末デバイス715とは異なるデバイスであり得る。
図7は、スマートフォンのようなネットワークデバイス705と、デスクトップコンピュータのような端末デバイス715とを例示しているが、ネットワークデバイス705と端末デバイス715との各々がいずれもポータブルまたは非ポータブル電子デバイスであり得ることが理解されるだろう。
【0087】
[0099] ある場合には、ネットワークデバイス705は、ユーザ(例えば、顧客)によってオペレートされ得、端末デバイス715は、エージェントによってオペレートし得る。ネットワークデバイス705に記憶されるモバイルアプリケーションは、アプリケーションの選択に対応する入力がネットワークデバイスで受け取られたときに実行され得る。例えば、ユーザがモバイルアプリケーションを表すアイコンのロケーションでネットワークデバイス705のスクリーンをタップまたはタッチして、モバイルアプリケーションが実行され得る。モバイルアプリケーションを実行することは、ネットワークデバイス705でアプリケーションをブートまたは動作することを含み得る。さらに、モバイルアプリケーションは、ネットワークデバイス705に記憶されたプログラムコードを含み得る。プログラムコードは、プログラムコードに組み込まれ得るコードの一部分(例えば、ソフトウェア開発キット(SDK:software development kit))を含み得る。モバイルアプリケーションに組み込まれたSDKは、ネットワークデバイス(例えば、ネットワークデバイス705)で実行されるモバイルアプリケーションを、端末デバイス(例えば、端末デバイス715)が遠隔制御することを可能にするタスクを行うための命令またはオペレーションのセットを含み得る。例えば、プログラムコードは、実行されると、モバイルアプリケーションをブートし得、
図7~12で説明される処理が行われ得る。ある場合には、モバイルアプリケーションの実行が開始されると、ネットワークデバイス705と端末デバイス715との間の通信セッションが確立され得る。例えば、入力は、モバイルアプリケーションによって提示されたボタンの選択(例えば、タッチまたはタップ)に対応してネットワークデバイス705で受け取られ得る。ボタンをタップまたはタッチすることは、端末デバイス(例えば、端末デバイス715)との通信セッションを確立させ得る。通信セッションは、ネットワークデバイス705で実行するモバイルアプリケーションのリアルタイムスクリーン共有を容易にし得る。例えば、リアルタイムスクリーン共有は、ネットワークデバイス705と端末デバイス715との間の2方向の双方向性を含み得る。ある場合には、通信セッションはまた、音声またはビデオチャネルも含み得る。例えば、ユーザおよびエージェントは、音声またはビデオチャンネルを通じて互いと通信することができる。通信セッションを確立するための例示的な処理が、下記でさらに詳細に説明されている。
【0088】
[00100] 加えて、端末デバイス715は、エージェントによって動作され得る。ある場合には、エージェントは、端末デバイス715で動作しているブラウザを使用してウェブサイトにアクセスし得る。例えば、ウェブサイトは、端末デバイス715のブラウザで動作しているコンソールを含み得る。エージェントは、ブラウザを使用してコンソールにログインすることができる。1つまたは複数のログイン信用情報(例えば、ユーザネーム、パスワードなど)は、コンソールへのアクセス、またはコンソールに含まれるウェブアプリケーションを獲得するのをエージェントが許可する前に、エージェントのアイデンティティを認証するために使用され得る。コンソールの例は、1つまたは複数のAPI(アプリケーションプログラミングインターフェース)を含むプラットフォーム、1つまたは複数の機能を含むダッシュボード、通信セッションを確立するまたは通信セッションに参加することが可能なウェブブラウザ(プラグインをダウンロードする必要ことなく)を動作するウェブホスト型アプリケーション、および他の適切なインターフェース、を含み得る。さらに、コンソールは、実行され得る1つまたは複数のウェブアプリケーションまたは機能を含み得る。ウェブアプリケーションまたは機能は、通信サーバ710、ローカルサーバ、遠隔サーバ、または他の適切なコンピューティングデバイスにおいて、ブラウザで実行され得る。例えば、1つまたは複数のウェブアプリケーションは、モバイルアプリケーションによって提示されるスクリーンのリアルタイムスクリーン共有のための通信セッションを確立することができる。この例では、端末デバイス715は、ネットワークデバイス705で動作するモバイルアプリケーションによって提示されるスクリーンを表示し得る。さらに、端末デバイス715をオペレートするエージェントは、(例えば、コンソールに含まれるウェブアプリケーションを使用して)確立された通信チャネルを通じてネットワークデバイス705で動作するモバイルアプリケーションの様々な態様(例えば、入力要素)を制御し得る。
【0089】
[00101] 有利なことに、モバイルアプリケーションがネットワークデバイス705で実行しているとき、ネットワークデバイス705をオペレートするユーザは、通信セッションに参加するかまたは通信セッションを確立し、端末デバイス715をオペレートするエージェントとネットワークデバイス705のスクリーンを共有するために、任意のプラグインまたは追加のソフトウェアをダウンロードする必要はない。モバイルアプリケーションのプログラムコードは、ネットワークデバイス705と端末デバイス715との間のリアルタイムのスクリーン共有通信セッションを、確立、管理、および終了し得るオペレーションのセット(例えば、SDK)を含む。非限定的な例として、ネットワークデバイス705で実行するモバイルアプリケーションは、ネットワークデバイス705のスクリーンに表示されるアイコンの選択に対応する入力(例えば、タップ、ダブルタップ、タッチ、選択、クリック)を受け取り得る。一旦選択されると、そのアイコンは、モバイルアプリケーションをブートし得る。次いで、モバイルアプリケーションは、ネットワークデバイス705のスクリーン上に1つまたは複数のページを提示し得る。ある場合には、1つまたは複数のページは、選択されると、端末デバイス(例えば、端末デバイス715)をオペレートするエージェントとの通信セッションを開始することができるボタンを含み得る。この例では、通信セッションは、リアルタイムにネットワークデバイス705に提示されたスクリーンを、エージェントが閲覧および制御することを可能にし得る。さらに、通信セッションは、ネットワークデバイスのリアルタイムスクリーン共有を実施するために、ユーザまたはエージェントが任意の追加のプラグインまたはコードをダウンロードする必要なく、確立され得る。例えば、ネットワークデバイス705で実行するモバイルアプリケーションのプログラムコードは、ユーザが通信セッションに参加することを可能にするコード(例えば、SDK)の一部分を含み得る。同様に、エージェントは、リアルタイムスクリーン共有を実施するために、いずれの追加のプラグインまたはコードもダウンロードする必要なく、リアルタイムスクリーン共有のための通信セッションに参加するようユーザをインバイトし(invite)得る。例えば、端末デバイス715のブラウザで実行する(またはブラウザによってアクセスされる)ウェブアプリケーションは、通信セッションを確立、管理、または終了し得る機能またはオペレーションのセットを含み得る。
【0090】
[00102] 加えて、有利な点として、ユーザとエージェントとの両方が、通信セッション中に、他方に制御を手動で渡すことなく、同時にアクション(例えば、入力イベント)を行い得る。例えば、ユーザは、ネットワークデバイス705で実行しているモバイルアプリケーション内で手動のアクション(例えば、テキストフィードにテキストをタイプすること)を行い得る。ユーザのアクションはモニタリングされ、端末デバイス715上でキャプチャ、送信、表示されるモバイルアプリケーション(例えば、タイプされた文字、ズームイン、ズームアウト、スクロールなど)の表示スクリーンに変わる。例えば、ネットワークデバイス705で実行するモバイルアプリケーションの表示スクリーンのイメージは、端末デバイス715上で、リアルタイムに再生され得る。さらに、エージェントは、イメージ上でアクション(例えば、クリック)を行い得、そのエージェントのアクションは、ネットワークデバイス705でリアルタイムに実行しているモバイルアプリケーションにおいて、キャプチャ、送信、および複製され得る。
【0091】
[00103] ネットワークデバイス705で実行するモバイルアプリケーションは、エンティティまたはクライアント(例えば、会社)によって開発されることができる。モバイルアプリケーションのプログラムコードは、ネットワークデバイス705で実行するモバイルアプリケーションのリアルタイムスクリーン共有および共同ブラウジングのための通信セッションを実施またはサポートするコードの一部(例えば、ライブラリ、オペレーション、命令、処理など)を含み得る。例えば、モバイルアプリケーションはSDKを含み得、SDKは、通信セッション中のリアルタイム遠隔制御能力をサポートするためにモバイルアプリケーションに組み込まれたモバイルコードライブラリを含み得る。SDKは、スクリーン共有、遠隔アプリケーション制御、音声送信、およびビデオ送信などの能力を、モバイルアプリケーションに追加し得る。例えば、SDKは、アンドロイド(登録商標)またはiOS(登録商標)オペレーティングシステムで動作することができる。SDKが他のオペレーティングシステムもまた同様に動作できることが理解されるだろう。
【0092】
[00104] 別の例として、遠隔アプリケーション制御は、エージェントの物理的位置において、特定のモバイルアプリケーションまたはネットワークデバイスにアクセスすることなくネットワークデバイス705で実行するモバイルアプリケーションを遠隔制御するためのエージェントの能力であり得る。遠隔制御の例は、入力イベント(例えば、タッチ、クリック、スクロールなど)およびテキスト入力(例えば、タイピング)を複製することによって、ネットワークデバイス705での触覚ユーザ入力アクションを制御することを含み得る。さらに、端末デバイス715をオペレートするエージェントは、エントリまたはクライアントに関連付けられても関連付けられなくてもよい。端末デバイス715のブラウザによってアクセスされるコンソール、ウェブサイト、またはウェブアプリケーションは、エンティティまたはクライアントに関連付けられても関連付けられなくてもよい。例えば、モバイルアプリケーションは、エンティティによって管理またはオペレートされ得、コンソール、ウェブサイト、またはウェブアプリケーションは、別のエンティティによって管理またはオペレートされ得る。
【0093】
[00105] 通信サーバ710は、ネットワークデバイス705と端末デバイス715との間の通信セッションを確立するように構成される1つまたは複数のサーバを含み得る。さらに、通信サーバ710は、通信サーバ180と同じものであり得る。例えば、通信サーバ710は、ネットワークデバイス705と端末デバイス715とが通信セッション中にデータ(例えば、メッセージ、メディアストリーム、スクリーンショット、イベントデータなど)を交換するサーバであり得る。
【0094】
[00106] ある場合には、ネットワークデバイス705と端末デバイス715との間の通信セッションを確立するために、端末デバイス715は、ネットワークデバイス705にインビテーションメッセージを送信し得る。例えば、端末デバイス715は、通信サーバ710上で特定の通信セッションを生成し得る。特定の通信セッションを生成することは、通信セッションの能力および設定を定義することを含み得る。さらに、通信サーバ710は、端末デバイス715によって生成された特定の通信セッションに対してインバイトを出すことができる。端末デバイス715は次いで、ネットワークデバイス705へのインビテーションメッセージにおいてインバイトを送信し得る。例えば、インビテーションメッセージは、特定の通信セッションに参加するための要求を表すデータを含み得る。ある場合には、インビテーションメッセージは、メッセージングサービス(例えば、テキストメッセージ、非同期メッセージングサーバ、チャットメッセージなど)を使用して、ネットワークデバイス705に送信され得る。通信サーバ710がネットワークデバイス705から受け入れメッセージを受信した場合、次いでネットワークデバイス705は、通信サーバ710上で生成される特定のセッションに参加し得る。例えば、通信セッションは、ネットワークデバイス705と端末デバイス715との間のハンドシェイクから始まり得る。ある場合には、その通信セッションは、ネットワークデバイス705上で動作する(例えば、実行する)アプリケーションを、端末デバイス715が遠隔制御することを可能にするリアルタイム通信セッションであり得る。有利なことに、ネットワークデバイス705をオペレートするユーザがネットワークデバイス705で実行するモバイルアプリケーションで問題を経験した場合、通信サーバ710を使用して通信セッションが確立され得、それは、端末デバイス715がネットワークデバイス705のユーザと共同でモバイルアプリケーションをナビゲートすることを可能にする。
【0095】
[00107] ある場合には、端末デバイス715は、アプリケーションサーバ(例えば、ネットワークデバイス705で実行するアプリケーションに組み込まれたSDKと通信するサーバ)からのサービス識別子を要求し得る。ある場合には、サービス識別子は、任意のデータの英数字文字列であり得、任意の通信の手段を使用してネットワークデバイス705に送信され得る。例えば、サービス識別子は、テキストメッセージ、電子メールを使用して、携帯電話、チャットメッセージ、ボイスオーバーIPコール、または他の適切な通信の手段を介して、ネットワークデバイス705に送られ得る。さらに、ネットワークデバイス705は、アプリケーションサーバからサービス識別子を取得し得る。ネットワークデバイス705は、サービス識別子を使用して通信サーバ710からの通信セッションを要求し得る。要求の受け入れの後、端末デバイス715とネットワークデバイス705との間の通信セッションが確立され得る。ある場合には、ネットワークデバイス705で実行するモバイルアプリケーションは、ネットワークデバイス705で実行するアプリケーション内のボタンの選択に対応する入力(例えば、クリック、タップ、タッチ)を受け取り得る。ボタンが選択された後、ネットワークデバイスは、利用可能な端末デバイスに、およびネットワークデバイスと端末デバイスとの間のリアルタイム通信セッションに自動的に接続され得る。
【0096】
[00108]
図7の例示的実施例を参照すると、実行されると、モバイルアプリケーションは、ネットワークデバイス705に表示される1つまたは複数のページを含み得る。モバイルアプリケーションがネットワークデバイス705上の任意の数のページを表示し得ることが理解されるだろう。例えば、モバイルアプリケーションは、入力要素725、730、および735を含み得る、ディスプレイ720を表示し得る。ディスプレイ720は、任意の数の入力要素を含む、または入力要素を全く含まないページであり得る。さらに、ディスプレイ720は、バックグラウンドイメージ、フォアグラウンドイメージ、または任意の他のイメージのいずれの組み合わせも含み得る。ある場合には、ディスプレイ720は、ネットワークデバイス705をオペレートするユーザによって提供されるインタラクションまたは入力にディスプレイ720が応答し得る点で、インタラクティブであり得る。例えば、ディスプレイ720は、ネットワークデバイス705をオペレートするユーザによって、スクロールされるか(例えば、上、下、横)、ズームインされるか、ズームアウトされるか、または任意の他の適切なインタラクションであり得る。
【0097】
[00109] 入力要素は、入力データを受け取るように構成されるユーザインターフェース要素であり得る。入力要素の例は、ボタン、ラジオボタン、スイッチ、ドロップダウンメニュー、セグメント化されたコントロール、テキストフィールド、テキストエリア、スクロール要素(例えば、スクロール機能を開始する矢印)、および他の適切な入力要素を含み得る。入力要素は、初期状態(例えば、未選択のボタン、空のテキストフィールド、未選択のまたは選択済みのラジオボタンなど)であり得る。入力要素はまた、ネットワークデバイス705をオペレートするユーザとのインタラクションに基づいて入力データを受け取り得る。例えば、テキストフィールドは、ネットワークデバイス705に表示されるキーボード上でユーザによって行われるキーストローク(またはキータップ)に基づいて文字(character letters)(例えば、入力データ)を受け取り得る。加えて、入力要素は、定義されたアクションおよび/または定義された入力境界に関連付けられ得る。入力要素に関連付けられる定義されたアクションおよび入力境界は、モバイルアプリケーションにコード化され、ネットワークデバイス705のオペレーティングシステムによってアクセス可能であり得る。定義されたアクションの例は、ラジオボタンをトグルすること、テキストフィールドを選択すること、テキストフィールドに文字を入力すること、テキストフィールド中の文字を削除すること、ボタンを選択すること、表示されたスクリーンをスクロールすること、および他の適切なアクションを含み得る。特定の入力要素は、モバイルアプリケーションにおいてコーディングされる、特定の定義されたアクションに関連付けられ得る。さらに、入力境界は、入力データ(例えば、キーストローク、ボタンまたはラジオボタンの選択など)を受け取るためのエリアであり得る。さらに、入力境界は、任意の形(例えば、長方形、円形、楕円形、正方形など)であり得る。例えば、テキストフィールドのための入力境界は、テキストがタイプされ得るボックスのエリアを含み得る。
【0098】
[00110] ある場合には、モバイルアプリケーションは、コンテンツキャプチャエンジン765を含み得る。例えば、コンテンツキャプチャエンジン765は、モバイルアプリケーションに関連したコンテンツデータを継続的にキャプチャするように構成され得る。コンテンツデータの例は、ネットワークデバイス705のスクリーンに表示されたスクリーンショット、イメージ、ビデオデータ、コンテンツ、メディアなど、ネットワークデバイス705のカメラでキャプチャされたビデオデータ、ネットワークデバイス705のマイクロフォンでキャプチャされたオーディオデータ、入力イベント(例えば、タップ、スワイプ、クリックなど)を表すデータ、メタデータ(例えば、スクリーンショット、イメージ、ビデオ、入力イベントを表すデータなどに関連付けられたメタデータ)、および他の適切なコンテンツを含み得る。非限定的な例として、通信セッション中、モバイルアプリケーションは、ネットワークデバイス705で実行しているモバイルアプリケーションによって提示されたスクリーンのスクリーンショットを、周期的に(例えば、毎分、毎秒、数秒、数分など)キャプチャし得る。次いで、モバイルアプリケーションは、コンテンツデータを含むデータストリームを生成し得る。非限定的な例として、WebRTC(ウェブリアルタイム通信)プロトコルは、コンテンツデータを符号化(例えば、ダウンサンプリング)するために、および通信サーバ710を経由して端末デバイス715への送信のためのデータストリームを生成するために、使用され得る。他のプロトコルが、コンテンツデータを符号化するために、および端末デバイス715にコンテンツデータを含むデータストリームを送信するために使用され得ることが理解されるだろう。符号化されたデータストリームは、通信セッション中に、ネットワークデバイス705から通信サーバ710に送信され得る。次いで、通信サーバ710は、通信セッションに関連付けられた遠隔制御能力およびリアルタイムスクリーン共有を容易にするために、通信セッション中に端末デバイス715に符号化されたデータストリームを送信し得る。ネットワークデバイスから送信されたデータストリームは、通信セッションの識別子、ネットワークデバイス、端末デバイス、または通信セッションに関連付けられた他の識別子パラメータを含み得る。
【0099】
[00111] 有利なことに、データストリームは、コンテンツデータ(例えば、モバイルアプリケーションの連続的なスクリーンショット)を含み、イベントリスナは、エージェントのインターフェースにおいておよび/またはモバイルアプリケーションにおいて行われる入力イベントを別個で検出し得る。イベントリスナの使用は、処理リソースおよびネットワークの通信チャネルに対して最小限の負荷を課すという方法で、ユーザのモバイルデバイスで動作するモバイルアプリケーションをエージェントが遠隔制御することを可能にする。端末デバイスとネットワークデバイスとの間のリアルタイム通信の速度および信頼性は、イベントリスナを使用して強化され得る。例えば、イベント複製器が、検出されたイベントをエージェントのデバイスでオペレートするイベントリスナによって複製するため、ユーザのモバイルデバイスのオペレーションが改善され得る。入力イベントの特定のセットが処理(例えば、クリックまたはタップ)され、他のイベント(例えば、エージェントのカーソルの動き)がフィルタアウトされるため、エージェントデバイスからユーザのデバイスに送信されたデータ(例えば、検出されたクリックの座標)は、ユーザのデバイスで経験した処理負荷を低減するために最小化され得る。さらに、入力イベント(例えば、クリックであるが、カーソルの動きではない)がエージェントのデバイスからユーザのモバイルデバイスに送信され、この最小量のデータは、通信セッション中にユーザのモバイルデバイスにおいて経験された遅延を低減する。
【0100】
[00112] 端末デバイス715が符号化されたデータストリームを受信したとき、端末デバイス715は、データストリームからコンテンツデータを抽出し、コンテンツデータを表示(または出力)し得る。ある場合には、端末デバイス715は、コンテンツ740を表示し得る。例えば、コンテンツ740は、ネットワークデバイス705で実行するモバイルアプリケーションによって提示されたスクリーンのリアルタイムな(例えば、現在の)ビデオを含み得る。コンテンツ740は、ネットワークデバイス705においてコンテンツキャプチャエンジン765によってキャプチャされたコンテンツデータに基づき得る。データストリームは、継続ベースで(例えば、継続的に)受信される。このように、ディスプレイ720が(例えば、スクロールダウンすることによって)修正されたとき、ディスプレイ720の修正は、リアルタイムに端末デバイス715上のコンテンツ740に表される。別の例として、データストリームに含まれるコンテンツデータは、ネットワークデバイス705のマイクロフォンにおいてキャプチャされるオーディオデータを含み得る。この例では、コンテンツ740は、端末デバイス715で出力され得る。さらに、この例では、出力コンテンツ740が、
図7で示されるように、コンテンツ740を表示する代わりに、端末デバイス715のスピーカを使用してオーディオデータをサウンドへとコンバートし得る。
【0101】
[00113] イベントリスナ755は、機能を行うオペレーションのセットまたは実行可能コードを含み得る。ある場合には、イベントリスナ755は、端末デバイス上で動作しているウェブブラウザで実行され得、他の例では、イベントリスナ755は、通信サーバ710で実行され得る。さらに、イベントリスナ755は、エージェントによって端末デバイス715で行われる入力イベントを検出し得る。入力イベントの例は、マウスクリック(シングルクリックまたはダブルクリック)、タップ、ダブルタップ、タッチ、スワイプ、スクロール、マルチタッチ、端末デバイスに課されかつ端末デバイスの動きセンサまたはジャイロスコープで検出された特定の動きまたはジェスチャ、および他の適切な入力イベントを含み得る。非限定的な例として、エージェントがコンテンツ740のロケーションを選択(例えば、クリック)した場合、その選択(例えば、クリック)は、イベントリスナ755によって検出され得る。
【0102】
[00114]
図7の例示的実施例を参照すると、ポインタ745は、端末デバイス715のマウスデバイス(図示せず)によって検出された動きに従って動き得る。例えば、端末デバイス715のスクリーンの周辺でポインタ745を動かすように、エージェントがマウスデバイスをオペレートし得る。常に、エージェントは、クリック750を手動で行い得、それは、端末デバイス715で動作するウェブブラウザでの入力イベントとして、イベントリスナ755によって検出され得る。イベントリスナ755が端末デバイス715のウェブブラウザでの入力イベントを検出したとき、イベントリスナ755は、検出された入力イベントに対応する選択データを生成し得る。例えば、イベントリスナ755がクリック750を検出したとき、イベントリスナ755は、クリック750が発生したロケーションの座標(例えば、x座標およびy座標)を決定し得る。この座標は、イベントリスナ755によって生成された選択データに含まれ得る。選択データの他の例は、クリック750の処理(例えば、クリックの時間、クリックの持続時間、クリックがシングルクリックであるかまたはダブルクリックであるかなど)、クリックが左クリックであるかまたは右クリックであるかに関連付けられたメタデータ、あるいは、他の適切なデータを含み得る。イベントリスナ755が入力イベントを検出した後、イベントリスナ755は、選択データを生成し得、それは、端末デバイス715で行われた選択に関連付けられ、次いで、通信サーバ710に選択データを送信する。通信サーバ710は、選択データを受信し、ネットワークデバイス705に選択データを送信し得る。
【0103】
[00115] ある場合には、選択データがネットワークデバイス705で受信されたとき、ネットワークデバイス705は、(端末デバイス715で検出された)入力イベントを複製し得る。例えば、モバイルアプリケーションは、イベント複製器760を含み得る。イベント複製器760は、入力イベントを複製する機能を実行するオペレーションのセットまたは実行可能コードを含み得る。さらに、イベント複製器760は、モバイルアプリケーションに組み込まれたSDKによって実行され得る。ある場合には、イベント複製器760は、ネットワークデバイス705で受信した選択データを検索し、あたかも入力イベントがネットワークデバイス705で発生したかのように、入力イベントを複製する機能を実行し得る。例えば、選択データがクリック750のロケーションの座標のセットを含む場合、イベント複製器760は、あたかもネットワークデバイス705をオペレートするユーザが手動でクリック750を行ったかのように、ネットワークデバイス705上でクリック750を複製し得る。この例では、イベント複製器760は、選択データに含まれる座標のセットに基づいて、クリック750と同じスクリーンロケーションにおいてネットワークデバイス705上のクリック750を複製し得る。座標のセットは、端末デバイスとは異なるスクリーン寸法を有し得る、ネットワークデバイスのスクリーン寸法に変換され得る。
【0104】
[00116] イベント複製器760は、ネットワークデバイス705のオペレーティングシステムに応じて異なる処理を使用して、検出された入力イベントを複製し得る。アプリケーションプログラミングレベルにおけるシンセティックイベント(例えば、複製されたイベント)をディスパッチすること(dispatching)をサポートするオペレーティングシステムに関して、入力イベントは、遠隔で生成された入力イベント(例えば、端末デバイス715において生成されたクリック750)を複製するために、ネットワークデバイス705においてプログラムで生成されたシンセティックイベントを使用して複製され得る。
図8は、シンセティックイベントをディスパッチすることをサポートするオペレーティングシステムにおいて遠隔で生成されるイベントを複製するための処理をさらに説明する。例えば、アンドロイドオペレーティングシステムは、遠隔デバイスで生成されたシンセティックイベントをディスパッチすることをサポートする。ある場合には、シンセティックイベントは、これらのオペレーティングシステム(例えば、アンドロイド)に関して信頼されており、あたかもネットワークデバイス705をオペレートするユーザが入力イベントを行った(例えば、タップまたはクリックした)かのように、シンセティックイベントは、同じ定義されたアクションをトリガする。
【0105】
[00117] シンセティックイベントをディスパッチするためのサポートのないオペレーティングシステムに関して、遠隔で生成された入力イベントは、オペレーティングシステムによって信頼されない可能性がある。シンセティックイベント(例えば、遠隔で生成されたマウスクリック)をディスパッチするためのサポートがないと、端末デバイス715で生成された入力イベントは、ネットワークデバイス705で複製されない可能性がある。例えば、iOSプラットフォームおよびオペレーティングシステムは、シンセティックイベントをディスパッチすることをサポートしない。しかしながら、本開示の実施形態によると、
図9は、通信セッション中に遠隔制御能力を獲得するために、ネットワークデバイス705において遠隔で生成されたイベントを模倣または複製するための処理を説明している。
【0106】
[00118] ある場合には、ネットワークデバイス705で実行するモバイルアプリケーションをナビゲートするユーザは、端末デバイス715をオペレートするエージェントとの通信セッションの確立を開始し得る。通信セッション中、端末デバイス715は、ネットワークデバイス705で実行するモバイルアプリケーションを遠隔制御し得る。しかしながら、エージェントがネットワークデバイス705で動作するモバイルアプリケーションのリアルタイムなビデオまたはイメージを閲覧することができるので、プライバシーが大きな懸案事項である。本開示の実施形態によると、モバイルアプリケーションは、入力フィールドに含まれるセンシティブな情報をエージェントが閲覧することができないように、センシティブな情報を含む入力要素をマスクし得る。
【0107】
[00119] ある場合には、1つまたは複数の入力要素は、モバイルアプリケーションのプログラムコードにおいてセンシティブなデータフィールドとしてマーキングされ得る。例えば、モバイルアプリケーションのプログラムコードは、特定の入力フィールドに関連付けられたフラグコードまたはメタデータを含み得る。入力フィールドに関するフラグコードまたはメタデータの存在は、センシティブなデータ(例えば、ユーザの年収、社会保障番号など)を受信するように入力フィールドが構成されることを指示し得る。別の例として、モバイルアプリケーションに含まれる入力要素は、SDKによって提供される入力要素(例えば、テキストフィールド)のドロップインクラス(drop-in classes)を使用することによってマーキングされ得る。さらに、モバイルアプリケーションが実行しているとき、モバイルアプリケーションは、ネットワークデバイス705をオペレートするユーザによって閲覧されているモバイルアプリケーションのページをモニタすることができる。モバイルアプリケーションの各ページは、1つまたは複数の入力要素の階層に関連付けられ得る。例えば、モバイルアプリケーションが2つの異なるページを含む場合、第1のページは、第1のページに含まれる第1の入力要素の階層に関連付けられ得、第2のページは、第2のページに含まれる第2の入力要素の階層に関連付けられ得る。この例では、第2のページがあらかじめフラグ付けされたセンシティブな入力要素を含んだ場合、および第2のページがネットワークデバイス705上で現在閲覧されている場合、SDKは、センシティブな入力要素が閲覧されていることを識別し得る。ある場合には、モバイルアプリケーションに含まれるSDKは、閲覧されているセンシティブな入力要素の発生を決定するために、閲覧されているページをモニタし得る。
【0108】
[00120] 上記の例に続けて、第2のページが閲覧されたとき、コンテンツキャプチャエンジン(例えば、コンテンツキャプチャエンジン765)は、第2のページのコンテンツをキャプチャする。例えば、コンテンツキャプチャエンジンは、第2のページのスクリーンショットをキャプチャし得る。さらに、SDKは、センシティブな入力要素のスクリーンショットがキャプチャされたことを識別し得、適宜、SDKは、スクリーンショットがダウンサンプリングされ通信サーバに送信される前に、センシティブな入力要素をマスクするためのプライバシプロトコルを実行し得る。例えば、プライバシプロトコルは、キャプチャされたスクリーンショットにおけるセンシティブな入力要素を探索し、センシティブな入力要素のロケーションおよび境界(例えば、その入力要素の場所の座標)を決定し得る。さらに、プライバシプロトコルは、どのエリアをマスクするかを決定するための、決定されたロケーションおよび境界を使用する。例えば、プライバシプロトコルは、センシティブな入力要素の境界内の各ピクセルを、代わりの色またはパターン(例えば、センシティブな入力要素が位置する場所に黒色の長方形を生じさせる黒色のピクセル)に置き換えるペインティングアルゴリズムを含み得る。次いで、マスクされたエリアを有するスクリーンショットは、スクリーンショットがコンテンツ740として端末デバイス715上で再生されたとき、その再生されたスクリーンショットがマスクされたエリアを含むように、(例えば、WebRTCプロトコルを使用して)符号化され得る。よって、エージェントは、センシティブな入力要素に含まれる当初のデータを閲覧できないが、センシティブな入力要素は、モバイルアプリケーションのページをユーザが閲覧している間は、ブロックされない。いくつかの例では、プライバシプロトコルは、ユーザとエージェントとの間の通信をセキュアにするための命令のセットであり得る。例えば、プライバシプロトコルは、モバイルアプリケーションに提示される入力要素に含まれるセンシティブなデータをマスクするように構成され得る。別の例では、プライバシプロトコルは、入力要素を表示するように構成され得るが、表示された入力要素に含まれる任意のコンテンツデータをエージェントが操作することを防ぐ。
【0109】
[00121] プライバシプロトコルがモバイルアプリケーションへの通信セッション中のリアルタイムスクリーン共有をさらに制限できることが理解されるだろう。例えば、通信セッションは、モバイルアプリケーションが実行されている間のネットワークデバイスのスクリーンのリアルタイムスクリーン共有のみを容易にし得る。モバイルアプリケーションが終了した(例えば、アプリケーションが閉じられた)とき、通信セッションが終わり、エージェントは、ネットワークデバイスのリアルタイムスクリーンコンテンツをもはや見ることができない。さらに、モバイルアプリケーションが未だ実行中であるがバックグラウンド処理としてのものである場合、エージェントは、黒色のピクセルだけをコンテンツ740として見ることとなる。エージェントは、モバイルアプリケーションがバックグラウンドでもはや動作していないとき、ネットワークデバイスのリアルタイムスクリーンコンテンツを再度見ることができる。加えて、プライバシプロトコルは、実行されると、モバイルアプリケーションに含まれるページの全てのページのサブセットのみに、リアルタイムスクリーン共有を制限し得る。プライバシプロトコルが、モバイルアプリケーションにおいて特定の入力要素での入力(「読み」と「書き」両方)を防ぎ得ることもまた理解されるだろう。例えば、特定の入力要素がフラグ付けされる(例えば、読みと書きの機能をブロックすることを示すフラグコードに関連付けられる)場合、エージェントは、特定の入力要素を制御することを防止されるだろう。例えば、エージェントは、入力要素を選択することおよびテキスト文字を入力することを防止されるだろう。
【0110】
[00122] ある場合には、オーソライズされていないデバイス(例えば、ハッカーデバイス)が、通信セッションの遠隔制御能力へのアクセスを獲得しようとし得る。通信サーバは、通信セッション、ネットワークデバイス、端末デバイスなどの識別子を記憶し得る。未知のデバイス(例えば、対応する識別子のないデバイス)が通信セッションに参加することを通信サーバが決定した場合、通信サーバは、通信セッションを終了し、通信セッションからその未知のデバイスを追い出し得る。ある場合には、オーソライズされていないデバイスが通信セッションの遠隔制御能力へのアクセスを獲得した(例えば、ネットワークデバイスで実行しているモバイルアプリケーションをハッカーが遠隔制御している)ことを、ネットワークデバイスをオペレートするユーザが決定した場合、通信セッションは、容易に終了されることができる。例えば、ユーザは、通信セッションを終了するために、単に「ホーム」ボタン(例えば、またはネットワークデバイス上でメインメニューをポピュレートする(populates)任意のボタン)を選択することができる。他の例では、ユーザは、ネットワークデバイスを再起動する、あるいは通信セッションを終了するまたは終わらせるために、モバイルアプリケーションを終了する(従って、通信セッションに関連付けられた遠隔制御能力を終了する)。
【0111】
[00123] ビデオおよび音声チャネルがネットワークデバイス705と端末デバイス715との間の通信セッションに組み込まれ得ることが理解されるだろう。例えば、ビデオチャネル能力がリアルタイムスクリーン共有のための通信チャネルに組み込まれる場合、ネットワークデバイスと端末デバイスの各々にオーバーレイ要素が表示され得る。例えば、オーバーレイ要素は、ビデオフィードを含み得る。この例では、ネットワークデバイスは、モバイルアプリケーション上に表示されたオーバーレイ要素を含み得、端末デバイスは、ウェブブラウザまたはウェブアプリケーション上に表示されたオーバーレイ要素を含み得る。ネットワークデバイスのコンテンツキャプチャエンジンは、エージェントのスクリーンショットをキャプチャすることを避けるために、モバイルアプリケーションのスクリーンに表示されたオーバーレイ要素をキャプチャしない可能性がある。さらに、送信されたデータストリームの帯域幅は、オーバーレイ要素がコンテンツキャプチャエンジンによってキャプチャされることを防ぐことによって低減され得る。ネットワークデバイスで実行しているモバイルアプリケーションに組み込まれたSDKがイベントリスナも含み得、端末デバイスがイベント複製器を含み得ることもまた、理解されるだろう。例えば、ユーザが、入力要素に対応していないモバイルアプリケーション内のスクリーンのエリアをタップした場合、ユーザのタップは、SDKのイベントリスナにおいて検出され得、端末デバイスにおいて(例えば、短い持続時間に関して表示された円によって)視覚的に複製され得る。これは、ユーザがモバイルアプリケーションでタップしている場所を、エージェントが視覚的に決定することを可能にする。
【0112】
[00124] いくつかの例では、エージェントは、モバイルアプリケーションが現在動作していない(例えば、スタンバイモードにある)期間を、ユーザのモバイルデバイスに通知し得る。ユーザが最初のオーディオコールを受けたとき、エージェントは、いくつかのタイプの追加のインビテーションのうちの1つまたは複数を行い得る。例えば、エージェントは、オーディオコールでユーザと会話し続けることができ、エージェントは、オーディオビデオ通信セッションのためのインビテーションを送信することができ(ユーザが受け入れた場合、そのユーザがエージェントと会話できかつ視覚的に見ることができ、逆もまた同様であるケース)、および/またはエージェントは、モバイルデバイスで動作するモバイルアプリケーションを遠隔制御することができる制御可能な通信セッションおよびオーディオコールのためのインビテーションを送信することができる。モバイルアプリケーションがエージェントコールの時点で現在動作していないとき、モバイルアプリケーションは、プッシュ通知メッセージが選択されたときにモバイルデバイスでモバイルアプリケーションが動作を開始し得るように、モバイルデバイス上にプッシュ通知を表示するよう構成され得る。いくつかの例では、プッシュ通知メッセージを選択することは、制御可能な通信セッションを自動的に開始させ得る。いくつかの例では、ユーザがモバイルデバイスのスクリーンに表示されるプッシュ通知メッセージを選択したとき、例えば、ユーザからの追加の情報(例えば、名前、電話番号、パーミッション、および他の適切な情報)が要求され得る。いくつかの例では、プッシュ通知が提示されない可能性があるが、制御可能な通信セッションが、ユーザのモバイルデバイスで自動的に開始し得る。
【0113】
[00125] いくつかの例では、通信は、エージェントがユーザと通信している間、様々なレベルへと発展し得る。例えば、ユーザは、チャットセッションでエージェントと通信している可能性がある(例えば、ユーザのデスクトップまたはユーザのモバイルデバイスを、そのユーザが使用している可能性がある)。ユーザがさらなるヘルプを要求した場合、エージェントは、エージェントのインターフェースからユーザの携帯電話に直接コールすることができる。ユーザのモバイルデバイスがエージェントのオーディオコールを受信したとき、オーディオコールは、プッシュ通知をモバイルデバイス上に提示させ得る。例えば、プッシュ通知は、プッシュ通知を選択することがオーディオコール、オーディオ/ビデオコール、および/またはモバイルアプリケーションのユーザの使用をエージェントが遠隔制御することができる通信可能な通信セッションを開始し得ることを示し得る。オーディオ/ビデオコールが開始した場合、エージェントおよびユーザは、視覚的に通信することができる。例えば、エージェントのインターフェースは、モバイルデバイス上にユーザのカメラのビデオフィードを表示し得る。別の例では、ユーザは、モバイルデバイスの背面カメラをエージェントと共有するための許可を提供し得る。通信セッションは、通信の別のタイプを向上させることができる。上記の例に続けて、エージェントは、オーディオ/ビデオコール中に、制御可能な通信セッションに参加するためのインビテーションをモバイルデバイスに送り得る。ユーザのモバイルデバイスにおいて、通知がユーザに提示され得、それは、制御可能な通信セッションに参加するためのインビテーションをユーザが受け入れることを可能にする。受け入れの後、例えば、コンテンツキャプチャエンジンは、(モバイルアプリケーションを実行する)ユーザのモバイルデバイスのスクリーンショットをキャプチャし始め、イベント複製器は、エージェントのデバイスで検出される任意のイベントを複製し始める。モバイルアプリケーションのスクリーンのコンテンツは、ユーザのモバイルデバイスから受信されたビデオフィードに加えて、またはそれの代わりに、エージェントのインターフェースに表示され得る。この例では、オーディオセル、オーディオ/ビジュアルコール、および制御可能な通信セッションにいくつかのレベルが含まれている。
【0114】
[00126] 端末デバイスをオペレートしているエージェントが人間の代わりにボットスクリプト(bot script)によって制御され得ることが理解されるだろう。例えば、ユーザは、コンピュータプログラム(例えば、ボットエージェント)によって制御されるエージェントと通信し得、モバイルアプリケーション中の特定のステップをどのように行うかをユーザに視覚的に説明するための以前に記憶された命令のセット(例えば、あらかじめ定義されたテキスト要素、ビデオ、説明など)を再生するように構成される。いくつかの例では、ヒューマンエージェントは、制御可能な通信セッションをボットエージェントにハンドオーバし得、それは、通信セッション中の応答および/またはビデオのあらかじめ記憶されたセットを実行し得る。いくつかの例では、ヒューマンエージェントは、制御可能な通信セッションの制御を常に再取得し(retake)得、あるいは、ボットエージェントは、ヒューマンエージェントに(例えば、ユーザのモバイルデバイスのモバイルアプリケーションがエージェントによって遠隔制御される)制御可能な通信セッションの制御を自動的に返すように構成され得る。これらの例では、ボットエージェントは、ヒューマンエージェントとの組み合わせで動き得る。
【0115】
[00127] モバイルアプリケーションがユーザのモバイルデバイスで動作しているとき(制御可能な通信セッション中)に表示される入力要素は、入力フィードのピクセル境界内(例えば、テキストボックス内)でクリックすることによって(エージェントによって遠隔で、またはユーザによって直接)選択され得ることもまた理解されるだろう。しかしながら、入力要素を選択することは、(例えば、テキストボックス内の)入力要素のピクセル境界内のクリックまたはタップに限定されない。入力要素は、例えば、各入力要素に関連付けられたユニーク識別子を実装することによって、他の方法で選択され得る。例えば、プログラムで、エージェントは、入力要素に関連付けられた識別子を使用して入力要素を識別し得、次いで、エージェントが入力要素を埋めることを意図するコンテンツを送信する。この例では、ユーザと通信するエージェントがボットエージェントである場合、そのボットエージェントは、入力要素を選択する(例えば、クリックする)ためにユーザのスクリーンのスクリーンショットを分析する必要はないが、ボットエージェントは、入力要素の識別子(例えば、「user_name」)を使用して入力要素を識別し得る。さらに、この例では、ボットエージェントは、スクリーン上の入力要素のロケーションを検出する必要はないが、代わりに、ボットエージェントは、入力要素の識別子にアクセスするように構成されており、入力要素の識別子を使用して1つの入力要素を選択し得る。ユーザのモバイルデバイスがボットエージェントによって選択された入力要素を表すデータを受信するとき、モバイルアプリケーションは、ボットエージェントから受信された識別子を参照することによって、入力要素を選択し得る。モバイルアプリケーションは、選択された入力要素のピクセル境界に既にアクセスしているため、ボットエージェントは、入力イベント(例えば、クリック)のための座標を送信する必要はないが、代わりに、ボットエージェントは、選択された入力要素の識別子および入力要素を埋めるコンテンツを送信し得る。
【0116】
[00128] 上記の説明がセンシティブな情報を含む入力要素をマスクするためのフィードマスクを表示することを含む一方、別のセキュリティ手段は、入力要素のコンテンツをマスクせずに入力要素を表示することを含み得るが、入力要素に含まれるコンテンツデータの操作を防ぐ。例えば、ユーザは、入力要素にテキストを入力することができるが、エージェントはそれができない一方、エージェントのビューから入力要素はマスクされない。
【0117】
[00129]
図8は、シンセティックイベントをディスパッチするためのサポートを有するオペレーティングシステムにおいて入力イベントを複製するための処理800のスイムレーン図を示す。処理800は、ネットワークデバイス(例えば、ネットワークデバイス705)、通信サーバ(例えば、通信サーバ710)、および端末デバイス(例えば、端末デバイス715)間のインタラクションを含み得る。さらに、処理800は、(端末デバイスにおいて遠隔で生成された)入力イベントを受信し、ネットワークデバイスにおいて入力イベントを複製するように行われ得る。処理800におけるネットワークデバイスのオペレーティングシステムは、シンセティックイベントの複製(例えば、別のデバイスにおいて生成された入力イベント)をサポートし得る。例えば、処理800に関与するネットワークデバイスは、アンドロイドオペレーティングシステムを実行することができる。
【0118】
[00130] 処理800は、通信サーバが、ユーザに関連付けられたネットワークデバイスとエージェントに関連付けられた端末デバイスとの間の通信セッションを確立するブロック802で始まる。ある場合には、通信セッションは、ネットワークデバイスにおいてモバイルアプリケーションによって提示されたボタンの選択に応答して確立され得る。例えば、モバイルアプリケーションでの(例えば、ユーザによる)ボタンの選択は、通信セッションを確立させ得る。(本明細書で説明される)他の方法が通信セッションを開始するために使用され得ることが理解されるだろう。
【0119】
[00131] ある場合には、通信セッションは、通信サーバにおいて生成および記憶されたセッション識別子を使用して確立され得る。例えば、ユーザは、ネットワークデバイスを使用してセッション識別子を検索し得る。端末デバイスによって要求されると、ユーザはセッション識別子を提供し得、受け入れられると、通信セッションの確立を開始し得る。セッション識別子は、ユーザによって手動で、またはネットワークデバイスによって自動的に提供された文字の英数字文字列であり得る。ある場合には、エージェントおよびユーザは、例えば、メッセージサーバを使用してメッセージを交換し得る。メッセージは、(例えば、メッセージ間の数分、数時間、数日の遅延が受け入れ可能な)非同期通信を使用して交換され得る。例えば、非同期通信は、インスタントメッセージングまたはチャットとは異なる電子メッセージ交換(例えば、アプリ、ウェブベースのメッセージ/受信箱システム、または電子メールを介する)を含み得る。非同期交換は、宛先デバイス(例えば、ネットワークデバイス、端末デバイス、またはメッセージの受信側)が、メッセージが提示されるよう要求するか、あるいはキューまたは受信ボックスに対応するウェブページまたはアプリページを訪問するまで、送信されたメッセージがメッセージキューまたは受信ボックスに記憶されるような方法で、メッセージを通信することを含み得る。この例では、ネットワークデバイスと端末デバイスとの間の非同期通信におけるメッセージのうちの1つは、通信セッションに参加するためのインビテーションを含み得る。ユーザは、メッセージに含まれるインビテーションを受け入れるかまたは拒否することができる。インビテーションを受け入れると、通信セッションがネットワークデバイスと端末デバイスとの間で確立され得る。
【0120】
[00132] ある場合には、エージェントとユーザとの間のメッセージングセッションは、非同期メッセージ交換と見なされ得、ここで、参加者間のイレギュラーな間隔においてインタラクションが発生する。メッセージング対話(Messaging conversations)は、モバイルアプリケーションでの問題を経験しているユーザへの追加の情報またはコンテキストを提供するのを手助けし得る。しかしながら、ある場合には、メッセージング対話では、問題の解決法は制限される。これらの例では、ユーザとエージェントとの間のメッセージング対話は、同時の遠隔制御能力を用いたリアルタイムスクリーン共有ための通信セッションへと向上され(elevated)得る。例えば、通信は、インビテーションメッセージがエージェントによってユーザに送信されるときに開始され得る。エージェントは、エージェントが通信セッション中に実施するように提示される能力のセットを選択し得る。例えば、能力は、遠隔アプリケーション制御、リアルタイムスクリーン共有、ビデオおよび音声送信、並びに他の適切な能力を含み得る。ユーザは、能力のセットを受け入れるかまたは拒否することができる。ある場合には、それら能力は必須であり得、ユーザによって受け入れられない場合、通信セッションが確立されない可能性がある。他の例では、それら能力は、ユーザによって拒否された場合リアルタイム通信セッションがまだ確立されないように、任意であり得る。さらに、それら能力は、通信セッション中に常に調整または修正され得る。能力が、双方向の音声またはビデオ送信、単一方向の音声またはビデオ送信、ネットワークデバイスのカメラフィードに課せられた拡張現実、のうちの任意の組み合わせを含み得ることが理解されるだろう。
【0121】
[00133] ある場合には、通信セッションが予期せず終了した場合、モバイルアプリケーションは、終了した通信セッションを再確立するか、またはネットワークデバイスを同じ端末デバイスと再接続するための機能を含み得る。例えば、通信セッションが終了したとき、ユーザは、ネットワークデバイスで実行しているモバイルアプリケーションをリブートし得る。リブートされると、モバイルアプリケーションは、通信セッションを再確立するためのオプションを提示し得る。オプションの受け入れがネットワークデバイスで受信されたとき、通信セッションが再確立され得る。通信セッションを再確立することは、ネットワークデバイスで実行しているモバイルアプリケーションがリブートされたことを同じ端末デバイスに通知することを含み得る。さらに、同じ端末デバイス(例えば、同じエージェント)は、通信セッションに再度参加し得、モバイルアプリケーションの遠隔制御を継続し得る。有利なことに、通信が終了したとき、端末デバイスは、ネットワークデバイスにおいて表示またはキャプチャされたリアルタイムコンテンツをもはや見ることができない。
【0122】
[00134] 本開示の実施形態によると、再確立された通信セッションに参加しているコンピューティングデバイスが、以前に通信セッションの終了の前の通信に関与した同じ端末デバイスであることを保証するためのセキュリティ特徴を含み得る。例えば、通信サーバは、通信セッションの識別子と、ネットワークデバイスおよび端末デバイスのデバイス識別子とを記憶し得る。通信セッションの識別子は、全ての他の通信セッションから1つの通信セッションを一意的に識別することができる。再確立された通信セッションに参加する端末デバイスが、予期せず終了する前の通信セッションに当初から含まれていた端末デバイスとは異なる場合、通信サーバは、再確立された通信セッションに参加した端末デバイスが当初の端末デバイスとは異なるデバイス識別子を有することを識別し得る。通信セッションは、再確立された通信セッションに参加した端末デバイスが当初の端末デバイスとは異なることをネットワークデバイスに通知し得る。通知は、ネットワークデバイスをオペレートするユーザが、通信を終了するか、あるいは当初の端末デバイスが再確立された通信セッションに参加するまで、および新規に参加する端末デバイスをブロックするまで待機することを可能にし得る。ある場合には、モバイルアプリケーションは、通信セッションが確立されたとき、端末デバイスのデバイス識別子(例えば、MACアドレス)を決定し得る。通信セッション中は常に、端末デバイスのデバイス識別子が当初のデバイス識別子とは異なる場合、ネットワークデバイスは、通信セッションに再度参加するために、通信セッションを終了するか、または当初の端末デバイスを待つためのオプションを通知および提供され得る。
【0123】
[00135] ブロック804において、通信セッション中に、ネットワークデバイスは、モバイルアプリケーションによって提示されるコンテンツをキャプチャし得、ネットワークデバイスは、キャプチャされたコンテンツをデータストリームにおいてコンテンツデータとして送信し得る。ネットワークデバイスは、通信サーバにコンテンツデータを送信し得、次いで、端末デバイスにコンテンツデータを転送し得る。コンテンツデータの例は、モバイルアプリケーションによって提示された複数のイメージまたはイメージの一部分、ネットワークデバイスにおいて提示されたモバイルアプリケーションの現在の状態の周期的にキャプチャされたスクリーンショット、モバイルアプリケーションの現在提示されているページのビデオデータまたはビデオフレーム、オーディオデータ、またはモバイルアプリケーションによって提示されている現在のページに関連付けられたメタデータ、および他の適切なコンテンツデータを含み得る。コンテンツデータは、モバイルアプリケーションが実行されている間、継続的にキャプチャされ得る。一旦アプリケーションが閉じられる(例えば、終了する)かまたはバックグラウンド処理になると、コンテンツデータの周期的なキャプチャ(例えば、スクリーンショット)は中断され得る。モバイルアプリケーションが再開されると、モバイルアプリケーションは、モバイルアプリケーションのスクリーンのスクリーンショットを周期的にキャプチャし続け得る。
【0124】
[00136] ブロック806において、端末デバイスは、通信サーバからコンテンツデータを受信し得る。例えば、コンテンツデータは、端末デバイスに送信されるデータストリームに含まれ得る。この例では、データストリームは、モバイルアプリケーションの継続的にキャプチャされたスクリーンショットを符号化することによって生成され得る。単に非限定的な例として、キャプチャされたスクリーンショットの符号化は、WebRTCプロトコルを使用して達成され得る。他のリアルタイム通信プロトコルは、コンテンツデータを符号化するために使用され得る。一旦データストリームが端末デバイスで受信されると、データストリームは、端末デバイスに永続的にまたは一時的に記憶され得る。さらに、データストリームからコンテンツデータが抽出され得、次いで、コンテンツデータが処理され得る。
【0125】
[00137] ブロック808において、コンテンツデータは、端末デバイスに表示され得る。例えば、コンテンツデータは、モバイルアプリケーションのインターフェースのビデオフレームであり、端末デバイスは、端末デバイスのスクリーン上にリアルタイムビデオフレームを表示し得る。この例では、端末デバイスは、最も最近受信したビデオフレームを表示し得る。新規のビデオフレームが端末デバイスで受信されると、その新規のビデオフレームは、端末デバイスに表示され得る。一連のビデオフレームが表示されたとき、その一連のビデオフレームは、1つのビデオを模倣する。例えば、
図7で図示されるように、コンテンツ740は、モバイルアプリケーションのスクリーンショットであり得る。さらに、コンテンツ740は、最も最近キャプチャされたスクリーンショットを用いて継続的に更新され得、それにより、リアルタイムにネットワークデバイス上にそれが提示されるとき、端末デバイスにモバイルアプリケーションを表示させることを可能にする。
【0126】
[00138] ブロック810において、端末デバイスのウェブブラウザで動作しているイベントリスナは、端末デバイスで行われた入力イベントをリッスン(例えば、検出)し得る。例えば、イベントリスナは、エージェントが端末デバイス上に表示されたコンテンツデータの任意のエリアを選択した(例えば、タップされた、ダブルタップされた、クリックされた、ダブルクリックされた、スワイプされたなど)か否かを検出し得る。この例では、ネットワークデバイスに提示されるインターフェースのリアルタイムビデオフレームを端末デバイスが表示した場合、イベントリスナは、表示されたビデオフレームの任意のエリアをエージェントが選択した(例えば、クリックした)か否か(例えば、エージェントがコンテンツ740の任意のエリアをクリックしたか否か)を検出し得る。
【0127】
[00139] ブロック812において、端末デバイスは、検出された入力イベントに基づいて選択データを生成し得、次いで、選択データを送信する。端末デバイスは、通信セッション中に選択データを通信サーバに送信し得、通信サーバは、ネットワークデバイスに選択データを転送し得る。選択データは、端末デバイスでの選択に関連付けられ得る。例えば、選択データは、入力イベントの座標のセットを含み得る。この例では、入力イベントが端末デバイスで検出されたコンテンツ740上のマウスポインタのクリックである場合、そのクリックの座標が決定され得る。さらに、クリックの座標が選択データに含まれ得る。選択データは、入力イベントの座標に限定されるものではなく、端末デバイスにおいて検出された選択に関連付けられたメタデータなどの他のデータを含み得る。
【0128】
[00140] ブロック814において、ネットワークデバイスは通信セッション中に(通信サーバを経由して)選択データを受信し得る。ある場合には、選択データは、端末デバイスでの選択の座標および入力イベントのタイプを含み得る。入力イベントのタイプの例は、クリック、スワイプ、タップ、ダブルタップ、および入力イベントの他の適切なタイプを含み得る。ブロック816において、モバイルアプリケーションを実行するネットワークデバイスは、選択データによって含まれる入力イベントタイプが既知である(例えば、あらかじめ定義されている)か否かを決定し得る。例えば、モバイルアプリケーションは、特定のタイプの入力イベントを複製するように構成され得る。入力イベントがあらかじめ定義されたタイプでない場合、検出された入力イベントは破棄され得、処理800は、処理800が終了するブロック822(ブロック816の「NO」)へと進む。入力イベントタイプがあらかじめ定義されたものである選択データに含まれるか否かを決定することは、入力イベントの識別子と、入力イベントタイプのあらかじめ定義されたリストとを比較することを含み得る。例えば、入力イベントタイプは、識別子に関連付けられ得、あらかじめ定義された入力イベントタイプのリストは、ネットワークデバイスのオペレーティングシステムにアクセス可能であり得る。この例では、ネットワークデバイスは、あらかじめ定義された入力イベントタイプのリストを検索し、受信された入力イベントタイプとリストとを比較し得る。ある場合には、入力イベントタイプのあらかじめ定義されたリストは、モバイルアプリケーションのプログラムコードに含まれ得る。さらに、一例として、入力イベントタイプのあらかじめ定義されたリストは、モバイルアプリケーションの1つまたは複数のページに含まれる全ての入力要素の様々なタイプのリストを含み得る。例えば、モバイルアプリケーションは、ラジオボタン入力要素、テキストフィールド入力要素、およびドロップダウンメニュー入力要素を含む、1つのページを含み得る。この例では、既知の入力要素タイプのあらかじめ定義されたリストは、ラジオボタン入力要素タイプ、テキストフィールド入力要素タイプ、およびドロップダウンメニュー入力要素タイプ、のリストを含み得る。入力要素タイプが既知である(例えば、ブロック816の「YES」)場合、処理800は、ブロック818へと進む。
【0129】
[00141] ブロック818において、モバイルアプリケーションは、選択データに基づいてシンセティックイベントを生成し得る。ある場合には、シンセティックイベントは、遠隔デバイス(例えば、端末デバイス)において生成され、ローカルデバイス(例えば、ネットワークデバイス)において複製される入力イベントを含み得る。例えば、エージェントがコンテンツ740のエリア内にある場合、クリックが入力イベントとして検出され得る。入力イベントが端末デバイスにおいて生成され、それはネットワークデバイスまで遠いので、入力イベントは、ネットワークデバイスにおいてシンセティックイベントとして複製され得る。さらに、シンセティックイベントは、ネットワークイベントをオペレートするユーザのインタラクションに基づいていないネットワークデバイスで行われる入力イベントを含み得る。代わりに、ネットワークデバイスで行われるその入力イベントは、端末デバイスで検出される遠隔で生成された入力イベントに基づいている。ある場合には、入力イベントは、シリアライズされたデータ構造を含み得、トランスポートプロトコルのようなウェブソケットを使用して、端末デバイスからネットワークデバイスに送信され得る。
【0130】
[00142] シンセティックイベントを生成することは、受信された入力イベントのモバイルイベント構造とマッチすることを含み、提供されたイベントデータ(例えば、タッチロケーション)でイベント構造を満たし得る。例えば、選択データに含まれる入力イベントがラジオボタンの選択に対応する場合、入力イベントは、ラジオボタンに対応するイベント構造を含み得る。さらに、選択データはまた、入力イベントに対応するイベントデータを含み得る。例えば、イベントデータは、端末デバイスでの選択のロケーションを含み得る。この例では、イベントデータは、端末デバイスでのタッチまたはクリックロケーションの座標を含み得る。ネットワークデバイスが入力イベントを受信したとき、モバイルアプリケーションに組み込まれたSDKは、受信された入力要素のイベント構造(例えば、ラジオボタンに対応するイベント構造)に一致するイベント構造を生成し得る。さらに、モバイルアプリケーションに組み込まれたSDKは、生成されたイベント構造を、受信された入力要素に関連付けられたイベントデータ(例えば、タッチロケーション)で埋めることができる。受信された入力要素に一致するイベント構造を生成することによって、および生成されたイベント構造を、受信された入力要素のイベントデータで埋めることによって、シンセティックイベントは、端末デバイスで検出された入力イベントに基づいてネットワークデバイスで検出され得る。ブロック820において、イベントデータを含む生成されたイベント構造(例えば、タッチロケーション)は、ネットワークデバイスのオペレーティングシステムに送信され得る。処理800におけるネットワークデバイスのオペレーティングシステムが、シンセティックのディスパッチ―プログラムで作成されたイベント―をサポートするので、遠隔で生成された入力イベント(例えば、アンドロイド)は、まるでそれが実際のユーザ入力(例えば、ユーザによるスクリーン上のタップ)であるかのように、入力イベントに関連付けられた全ての後続のステップ(デフォルトアクション)を自動的に行うオペレーティングシステムをもたらす方法で複製され得る。例えば、入力イベントが端末デバイス715におけるコンテンツ740上のロケーションの選択である場合、その選択は、端末デバイスにおいて生成された入力イベントと一致する、ネットワークデバイスでのシンセティックイベントを生成することによって、ネットワークデバイス705において遠隔で生成され得る。
【0131】
[00143]
図9は、シンセティックイベントをディスパッチするためのサポートのないオペレーティングシステムにおける入力イベントを複製するための処理900のスイムレーン図を示す。処理900は、ネットワークデバイス(例えば、ネットワークデバイス705)、通信サーバ(例えば、通信サーバ710)、および端末デバイス(例えば、端末デバイス715)間のインタラクションを含み得る。さらに、処理900は、(端末デバイスにおいて遠隔で生成される)入力イベントを受信するために行われ得、(例えば、イベント複製器760を使用して)ネットワークデバイスにおいて入力イベントを複製し得る。しかしながら、処理900におけるネットワークデバイスのオペレーティングシステムは、シンセティックイベント(例えば、別のデバイスにおいて生成された入力イベント)のディスパッチをサポートしない可能性がある。ある場合には、シンセティックイベントをディスパッチするためのサポートのないオペレーティングシステムは、入力イベントのモバイルジェネレーション(mobile generation)にプログラム的アクセスを提供することを制限され、従って、遠隔デバイスで生成されたイベントの複製を直接はサポートしない。例えば、シンセティックイベントをディスパッチするためのサポートのない、従って、シンセティックイベントを複製するための直接のサポートのないオペレーティングシステムは、iOSオペレーティングシステムである。処理900は、通信セッション中に遠隔制御能力を可能にするために、遠隔で生成された入力イベントを模倣するために行われる。さらに、処理900のブロック902~914は、処理800のブロック802~814に類似しているため、ブロック902~914の説明は、ここでは省略する。
【0132】
[00144] ブロック916において、ネットワークデバイス上で動作するモバイルアプリケーションは、モバイルアプリケーションによって提示される現在のページのターゲット入力要素を発見するためのサーチアルゴリズムを実行し得る。ターゲット入力要素は、遠隔で生成された入力イベントに対応する入力要素であり得る。例えば、サーチアルゴリズムは、1つまたは複数の規則を満たす(モバイルアプリケーションの現在のページに表示される全ての入力要素のうちの)第1の入力要素を発見するために使用される。1つまたは複数の規則の例は、入力要素がモバイルアプリケーションに組み込まれたSDKに知られているか否か(例えば、本開示において上述されたようなあらかじめ定義された入力要素)を決定するためのオペレーション、入力イベントの座標がモバイルアプリケーションの現在のページに表示された入力要素の境界内にあるか否かを決定するためのオペレーション、発見された入力要素(例えば、ターゲット入力要素)が入力を受け取ることを可能にしかつその準備ができているか否かを決定するためのオペレーション、および他の適切な規則を含み得る。モバイルアプリケーションの現在のページに表示された入力要素が任意の規則または1つまたは複数の規則の任意の組み合わせを満たす場合、その入力要素は、ターゲット入力要素であり得る。
【0133】
[00145] ある場合には、サーチアルゴリズムは、ネットワークデバイスでモバイルアプリケーションによって提示された現在のページにおいてターゲット入力要素を位置付けるための1つまたは複数のオペレーションを含み得る。例えば、1つまたは複数のオペレーションは、遠隔で生成された入力イベントおよび入力イベントの関連するイベントデータ(例えば、タッチまたはクリックロケーション)を受信することを含み得る。この例では、ネットワークデバイスで受信された選択データ(例えば、ブロック914)は、遠隔で生成された入力イベントおよび関連したイベントデータを含み得る。さらに、1つまたは複数のオペレーションは、端末デバイスにおいてエージェントによって行われたクリックロケーションの座標(例えば、P=イベントx,イベントy)を決定することを含み得る。次いで、ルート要素が設定され得る。例えば、ルート要素は、現在の時間においてネットワークデバイス上で閲覧されているモバイルアプリケーションの特定のページを含み得る。ルート要素を設定することは、現在の時間にネットワークデバイスで閲覧されている特定のページを識別することに対応し得る。ルート要素は、1つまたは複数の子要素(child element)を有し得る。例えば、子要素は、モバイルアプリケーションによって提示された特定のページ上の入力要素であり得る。さらなる例として、ルート要素がモバイルアプリケーションの特定のページに対応し得るので、子要素は、その特定のページに含まれる入力要素に対応し得る。
【0134】
[00146] さらに、1つまたは複数のオペレーションは、クリックロケーションの座標(例えば、P=イベントx,イベントy)を、ルート要素に関連付けられた各子要素のための入力境界と比較することを含み得る。例えば、モバイルアプリケーションに組み込まれたSDKは、クリックロケーションの座標が子要素の入力境界と交差するか否かを、ルート要素の各子要素ごとに繰り返して決定し得る。この例では、SDKはルート要素を識別し得、次いで、各子要素ごとに入力境界を表すデータを検索する。次いで、SDKは、クリックロケーションの座標を、検索された入力境界の各々と比較し得る。ある場合には、入力要素が長方形内にあるとき、入力境界を表すデータは、長方形の左上のピクセル位置と、長方形の右下のピクセル位置とを含み得る。
【0135】
[00147] ブロック918において、モバイルアプリケーションは、ターゲット入力要素が発見されたか否かを決定し得る。ターゲット入力要素を発見することは、クリックロケーションの座標が入力要素の入力境界と交差する(例えば、クリックロケーションが入力境界のエリア内にある)と決定することに対応し得る。ターゲット入力要素が発見されたとき(例えば、ブロック918から出る「YES」)、処理900は、ターゲット入力要素に関連付けられた定義されたアクションが決定されるブロック920へと進む。各入力要素は、関連したアクションおよび入力境界を有し得る。入力要素に関連付けられたアクションの例は、ボタンを選択すること、状態スイッチをトグルすること(チェックされた対チェックされていない)、セグメント化された制御、テキストフィールドまたはテキストエリアにおいて文字を追加または削除すること、スクロール要素をトリガすること、および他の適切なアクションを含み得る。ターゲット入力要素が識別されたとき、モバイルアプリケーションに含まれるSDKは、ターゲット入力要素のタイプに対応するイベントの定義されたアクションを検索し得る。ブロック922において、定義されたアクションは、モバイルアプリケーションによって行われ得る。例えば、定義されたアクションを行うことは、端末デバイスにおいて生成された入力イベントがモバイルアプリケーションの入力要素を制御するためにネットワークデバイスにおいてシームレスに複製され得るように、モバイル入力イベント(例えば、端末デバイスの代わりに、ネットワークデバイスにおいてローカルで実行された入力イベント)の処理を模倣し得る。ターゲット入力が発見されなかったとき(例えば、ブロック918から出る「NO」)、処理900は、処理900が終了するブロック924へと進む。
【0136】
[00148] ある場合には、テキストフィールドまたはテキストエリアなどの特定の入力要素は、複雑な入力オペレーション(例えば、コピー、ペースト、複数文字消去、改行など)をサポートする。処理900もまたこれらの複雑なオペレーションをサポートし得ることが理解されるだろう。これらの例では、処理900は、入力要素が必要に応じて端末デバイス上で動的に複製されるように、入力要素の動的なまたはオンデマンドの複製を容易にし得る。例えば、(例えば、ブロック920において)ターゲット入力要素がテキストフィールドであると決定された場合、ネットワークデバイスは、ターゲット入力要素がテキストフィールドであることを端末デバイスに通知し得る。さらに、ネットワークデバイスはまた、端末デバイスへの通知メッセージとともにまたはそれと別個に、テキストフィールドの現在のコンテンツも送信し得る。端末デバイスがテキストフィールドの通知メッセージおよび現在のコンテンツを受信したとき、端末デバイスは、リアルタイムのスクリーンショットイメージの上部に表示する(例えば、オーバーレイ要素がコンテンツ740の上部に表示され得る)ように、オーバーレイ要素を生成し得る。ある場合には、オーバーレイ要素は、それがテキストフィールドに対応するコンテンツ740のイメージ部分の上部に位置するように、生成され得る。コンテンツ740は、イメージまたはビデオデータを含んでおり、かつフラットな非構造的データであるため、エージェントは、テキストフィールドに通常はテキストをタイプすることができない可能性がある。しかしながら、端末デバイスで生成される(例えば、ウェブアプリケーションまたはウェブブラウザによって生成される)オーバーレイ要素は、テキストフィールドに対応し得るコンテンツ740のイメージ部分上で表示され得、エージェントからテキストデータを受信するように構成され得る。例えば、オーバーレイ要素は、エージェントが文字(character letters)をタイプすることができるテキストボックスを含み得る。
【0137】
[00149] ある場合には、エージェントによってタイプされる各文字は、通信サーバを使用してもとのネットワークデバイスに送信される。他の例では、全体のテキスト文字列は、エージェントが入力テキストを完了したとき、ネットワークに送られる。ネットワークデバイスが端末デバイスからの入力された文字または文字列を受信したとき、モバイルアプリケーションは、エージェントによって修正されたテキストフィールドが更新されたテキストにポピュレートするように、テキストフィールドの入力値を更新する。ある場合には、端末デバイスにおけるエージェントによるオーバーレイ要素に入力されたテキストは、テキストフィールドに含まれた当初のテキストに付加され得る。これらの例では、テキストフィールドの定義されたアクションは、テキストフィールドの入力値に含まれるテキストのポピュレートであり得る。例えば、テキストフィールドに関連付けられた入力値は、モバイルアプリケーションのプログラムコードにコード化された、ポピュレートされるべき当初のテキストであり得る。エージェントがオーバーレイ要素にタイピングしているとき、エージェントは、文字を追加し、テキストフィールドに当初に含まれるテキストの文字を削除し、テキストフィールド内のカーソルの場所を移動させ、テキストをハイライトし、テキストのフォーマットの態様を変更し(太字、イタリック、アンダーラインなど)、およびテキストへの他の適切な変更を行い得る。
【0138】
[00150]
図10は、モバイルアプリケーションを遠隔制御するための処理1000のフローチャートを示す。ある場合には、処理1000は、通信サーバ(例えば、通信サーバ180、710)によって行われ得る。処理1000はまた、少なくとも部分的に、ネットワークデバイス(例えば、ネットワークデバイス105、705)または端末デバイス(例えば、端末デバイス115、715)によって行われ得る。例として、処理1000は、端末デバイスが、(端末デバイスから離れている)ネットワークで実行しているモバイルアプリケーションを遠隔制御することを可能にするように行われ得る。さらに、処理1000はまた、ネットワークデバイス上のモバイルアプリケーションによって提示されたコンテンツが端末デバイスとリアルタイムに共有され得るように、ネットワークデバイスと端末デバイスとの間の通信セッションを確立し得る。
【0139】
[00151] ネットワークデバイスは、通信セッションを開始し得るモバイルアプリケーションを実行するように構成され得る。モバイルアプリケーションは、端末デバイスによって遠隔制御され得る。さらに、モバイルアプリケーションは、初期状態で入力要素を含むまたは提示し得る。ある場合には、入力要素の初期状態は、モバイルアプリケーションが実行されるときの入力要素の状態であり得る。入力要素の初期状態の例は、空のテキストフィールドであり得、文字の初期セットを有するテキストフィールド(例えば、「テキストをここに入力して下さい」)、未選択のラジオボタンなどであり得る。
【0140】
[00152] 処理1000は、通信サーバがネットワークデバイスと端末デバイスとの間の通信セッションを確立する、ブロック1005で始まる。通信セッションは、本明細書で説明される任意の方法を使用して確立され得る。例えば、上述されるように、ネットワークデバイスは、(例えば、モバイルアプリケーションに関連付けられた)アプリケーションサーバからのサービス識別子を要求し得る。よって、ネットワークデバイスは、通信セッションに参加するために、インビテーションのためのサービス識別子を通信サーバと交換し得る。
【0141】
[00153] ある場合には、リアルタイムコンテンツ共有のための通信セッションは、既存の通信セッションの一部分として確立され得る。例えば、非同期メッセージ交換のための通信セッションは、ネットワークデバイスと端末デバイスとの間で確立され得る。非同期交換は、例えば、インスタントメッセージやチャットとは異なる(例えば、アプリ、ウェブベースのメッセージ/受信ボックスシステム、電子メールを介して)電子メッセージ交換を含み得る。非同期交換は、宛先デバイスが、メッセージが提示されるよう要求するか、あるいはキューまたは受信ボックスに対応するウェブページまたはアプリページを訪問するまで、送信されたメッセージがメッセージキューまたは受信ボックスに記憶されるような方法で、メッセージを通信することを含み得る。
【0142】
[00154] ネットワークデバイスと端末デバイスとの間の非同期メッセージ交換の一部分として、端末デバイスは、ネットワークデバイスへの出力メッセージ中のインビテーションを含み得る。インビテーションは、ネットワークデバイスにおいて受け入れられたとき、既存の通信セッションの向上をもたらすデータを含み得る。既存の通信セッションを向上させることは、既存の通信セッションの一部として追加の通信セッションを確立することを含み得る。例えば、追加の通信セッションは、モバイルアプリケーションまたはネットワークデバイス上に表示された追加のウィンドウとして提示され得る。別の例では、既存の非同期通信セッションは、追加の通信セッションにコンバートされ得る。この例では、追加の通信セッションは、非同期通信セッションと同じウィンドウに提示され得る。さらに、(モバイルアプリケーションが実行されている間)ネットワークデバイスのスクリーン上に提示されるコンテンツは、追加の通信セッションのウィンドウに表示され得る。
【0143】
[00155] ある場合には、追加の通信セッションはまた、ネットワークデバイスに関連付けられた別のデバイスを使用して確立され得る。例えば、非同期メッセージ交換は、ユーザによってオペレートされる端末デバイスとデスクトップコンピュータとの間で確立され得る。この例では、端末デバイスは、モバイルアプリケーションによって提示されたコンテンツのリアルタイムスクリーン共有のための追加の通信セッションに参加するためのインビテーションを含む非同期メッセージを送信し得る。ある場合には、ユーザは、ユーザに関連付けられたスマートフォンまたはタブレットデバイスを使用して、インビテーションを受け入れ得る。他の例では、ユーザは、デスクトップコンピュータを使用してインビテーションを受け入れ、ユーザのスマートフォンを使用して通信セッション受け入れ得る。追加の通信セッションは、ユーザに関連付けられたスマートフォンまたはタブレットデバイスと端末デバイスとの間で確立され得る。例えば、スマートフォン上で実行しているまたはスマートフォンでキャプチャされた(例えば、オーディオまたはビデオ信号)モバイルアプリケーションによって提示されたコンテンツは、端末デバイス上にリアルタイムに表示され得る。(例えば、デスクトップからスマートフォンへの)通信セッション中にデバイスを切り替えることがエージェントとユーザとの間のチャットメッセージの状態を維持し得ることが理解されるだろう。例えば、ユーザがデスクトップからユーザのモバイルデバイスに切り替える場合、ユーザは、エージェントとの会話の同じ場所から続ける(pick up)ことができるだろう。エージェントがモバイルデバイスの診断を決定および評価する目的で、モバイルデバイスおよび/またはモバイルデバイスを動作するモバイルアプリケーションを遠隔制御し得ることもまた理解されるだろう。
【0144】
[00156] ブロック1010において、通信サーバは、通信セッション中にデータストリームを受信し得る。データストリームは、ネットワークデバイスから受信され得る。ある場合には、データストリームは、リアルタイム通信プロトコルを使用して生成され得る。非限定的な例として、WebRTCプロトコルは、ネットワークデバイスにおいてキャプチャされたコンテンツのビデオフレームを符号化するために使用され得る。例えば、WebRTCプロトコルは、ネットワークデバイスで実行しているモバイルアプリケーションによって提示されたスクリーンのキャプチャされたビデオフレームのシーケンスをダウンサンプリングするために使用され得る。ダウンサンプリングされたビデオフレームは、ネットワークデバイスにおいてデータストリームを生成するように処理され得る。
【0145】
[00157] ある場合には、データストリームは、ネットワークデバイスにおいてキャプチャされたコンテンツデータを含み得る。コンテンツデータは、ネットワークデバイスにおいてコンテンツキャプチャエンジンによってキャプチャされた任意のデータを含み得る。ある場合には、コンテンツデータは、モバイルアプリケーションが実行されている間、ネットワークデバイスにおいてキャプチャされた任意のデータを含み得る。コンテンツデータの例は、モバイルアプリケーションによって提示されたページのイメージまたはスクリーンショット、モバイルアプリケーションによって提示されたビデオのビデオフレーム、ネットワークデバイスのカメラによってキャプチャされたビデオフィードのビデオデータ(例えば、ビデオフレーム)、ネットワークデバイスのマイクロフォンによってキャプチャされたオーディオ信号のオーディオデータ、および他の適切なメディアストリームまたはコンテンツデータを含み得る。
【0146】
[00158] 例えば、コンテンツデータは、モバイルアプリケーションによって提示されるオブジェクトを含み得る。ある場合には、オブジェクトは、ネットワークデバイスにおいてキャプチャされたイメージまたはスクリーンショットの一部分であり得る。例えば、コンテンツデータに含まれるオブジェクトは、モバイルアプリケーションに含まれる入力要素に対応し得る。この例では、初期状態で入力要素が空のテキストフィールドであるとき、オブジェクトは、空のテキストフィールドを表すスクリーンショットの部分であり得る。さらに、この例では、オブジェクトは、テキストフィールドの空のテキストボックスを含むスクリーンショットの部分を含み得る。例えば、このケースでは、オブジェクトは、入力要素ではなく、入力要素を表すスクリーンショットのイメージ部分である。端末デバイスで受信されたデータストリームがネットワークデバイスで実行しているモバイルアプリケーションによって提示されるコンテンツの視覚的フィードバックデータ(例えば、ネットワークデバイスでキャプチャされたビデオのビデオフレーム)であり得ることが理解されるだろう。端末デバイスで受信された視覚的フィードバックデータは、モバイルアプリケーションの構造(例えば、ページ上の入力要素のいくつかのタイプ)を含まないが、構造のイメージのみを含む。このケースでは、モバイルアプリケーションの構造は、モバイルアプリケーションのページ上に提示される入力要素の階層を含む。さらに、端末デバイスで受信されたデータストリームは、ネットワークデバイスで動作しているオペレーティングシステムを識別する任意の情報を含みんでも含まなくともよい。有利なことに、本開示に記載される実施形態は、ネットワークデバイス上で動作するオペレーティングシステムに関わらず、ネットワークデバイスで実行しているモバイルアプリケーションを端末デバイスが制御することを可能にする。
【0147】
[00159] ブロック1015において、通信サーバは、通信セッション中に(ブロック1010で受信された)データストリームを送信し得る。ある場合には、データストリームは、端末デバイスに送信され得る。データストリームが端末デバイスで受信されたとき、データストリームに含まれるコンテンツデータは、端末デバイスにおいて表示または出力され得る。例えば、コンテンツデータは、モバイルアプリケーションによって提示されたコンテンツの(成功裏にキャプチャされた)ビデオフレームを含み得る。この例では、コンテンツデータが端末デバイスで受信されたとき、ビデオフレームは、端末デバイスのスクリーンに表示され得る。従って、ネットワークデバイスで実行しているモバイルアプリケーションによって提示されたリアルタイムビデオは、エージェントによる閲覧のために端末デバイスのスクリーンに表示され得る。ある場合には、コンテンツデータは、ネットワークデバイスにおいてキャプチャされたコンテンツを含み得る。例えば、コンテンツデータは、ネットワークデバイスのマイクロフォンにおいてキャプチャされたオーディオを含み得る。この例では、コンテンツデータは、データストリームに含まれており、データストリームが端末デバイスで受信されたとき、端末デバイスは、コンテンツデータを出力し得る(例えば、オーディオ信号を出力する)。
【0148】
[00160] ブロック1020において、入力イベントが検出され得る。ある場合には、入力イベントは、端末デバイスでオペレートしているウェブブラウザによって検出され得る。例えば、ウェブブラウザは、端末デバイスで入力イベントが生成された(例えば、エージェントがマウスボタンをクリックした)ことを検出し得る。別の例では、ウェブブラウザは、表示されたコンテンツ(例えば、コンテンツ740)での選択(例えば、クリックイベント、タップイベント、スワイプイベントなど)に対応する入力を受け取り得る。他の例では、通信サーバは、端末デバイスにおいて生成された入力イベントを表すデータ(例えば、クリックイベントが発生したことを表すデータ)を受信し得る。さらに、通信サーバは次いで、受信したデータが端末デバイスで行われる入力イベントに対応することを検出し得る。入力イベントは、コンテンツデータとの関連付けを検出され得る。例えば、入力イベントは、表示されたコンテンツにおけるクリックイベント(例えば、コンテンツ740内で検出されたクリックイベント)に入力が対応するような、クリックイベントであり得る。ある場合には、入力イベントは、(例えば、ユーザがモバイルアプリケーションによって提示されたページ上の入力要素ではないロケーションをタップする場合に)モバイルアプリケーションのイベントリスナによって検出され得る。
【0149】
[00161] ブロック1025において、通信サーバは、検出された入力に基づいて制御データを生成し得る。例えば、検出された入力イベントの座標(例えば、端末デバイスで検出されたクリックイベントまたはタップイベントの座標)は、制御データに含まれ得る。他の情報は、例えば、検出された入力に関連付けられたメタデータ、検出された入力イベントの時間、入力イベントのタイプ(例えば、クリック、タップ、スワイプ)、制御データを受信すべきネットワークデバイスの識別子、入力イベントが検出される端末デバイスの識別子、および他の適切な情報などの制御データに含まれ得る。
【0150】
[00162] ブロック1030において、通信サーバは、ネットワークデバイスに制御データを送信し得る。例えば、通信サーバは、制御データを受信するための宛先のアイデンティティを決定し得る。ある場合には、通信セッションは、対応する識別子を有し得る。通信セッションの識別子はまた、通信セッションに関与したネットワークデバイスと端末デバイスとを識別し得る。通信サーバは、受信されたまたは検出された入力イベントに関連付けられたメタデータから識別子を抽出し得る。通信サーバは、抽出された識別子を使用して、制御データを生成し、制御データの宛先を決定し得る。制御データがネットワークデバイスで受信されたとき、制御データは、モバイルアプリケーションに含まれる入力イベントの初期状態を修正し得る。例えば、制御データがネットワークデバイスで受信されたとき、モバイルアプリケーションは、制御データを処理し得る。この例では、ネットワークデバイスに組み込まれたSDKは、検出された入力イベントを複製するためのイベント複製器(例えば、イベント複製器760)をトリガし得る。制御データを使用して検出された入力イベントを複製することは、上述された処理800および900のいずれも含み得る。さらに、モバイルアプリケーションによって提示された入力要素の初期状態を修正することはまた、上述された処理800および900のいずれも含み得る。制御データが端末デバイスで生成され得ることが理解されるだろう。
【0151】
[00163]
図11は、ネットワークデバイスで入力イベントを複製するための処理のフローチャートを示す。処理1100は、ネットワークデバイスによって行われ得る。さらに、処理1100は、シンセティックイベントのディスパッチをサポートしないオペレーティングシステム(例えば、iOS)のために、(例えば、イベント複製器760を使用して)ネットワークデバイスにおいて遠隔で生成された入力イベントを複製するために行われ得る。処理1100は、ネットワークデバイス上に記憶されるモバイルアプリケーションに含まれる入力要素をネットワークデバイスが識別し得るブロック1105で始まる。例えば、モバイルアプリケーションのプログラムコードは、入力要素を識別するコードの一部分を含み得る。プログラムコードは、複数の入力要素を識別するコードを含む。入力要素は、インタラクションに基づいて入力データを受け取るように構成され得る。例えば、入力要素は、ネットワークデバイス上に提示されるキーボードの文字の選択に対応する入力に基づいて、テキスト文字を受け取るように構成されたテキストフィールドであり得る。
【0152】
[00164] ブロック1110において、入力要素に対応する入力境界が決定され得る。入力境界は、特定の入力要素に関連付けられた入力データを受け取るためにモバイルアプリケーションのページ上に提示されるエリアであり得る。例えば、モバイルアプリケーションに含まれる入力要素がテキストフィールドである場合、テキストフィールドの入力境界は、テキスト文字が入力され得るテキストボックスであり得る。この例では、入力境界は、テキストフィールドボックスの左上のピクセルのロケーションと、テキストフィールドボックスの右下のピクセルのロケーションとによって表され得る。複数の入力要素は、モバイルアプリケーションによって提示され得る。
【0153】
[00165] ブロック1115において、モバイルアプリケーションは、ネットワークデバイスで実行され得る。ネットワークデバイスを実行することは、ネットワークデバイス上のアプリケーションをブートすることを含み得る。さらに、モバイルアプリケーションを実行することは、初期状態で入力要素を表示することを含み得る。例えば、ネットワークデバイスは、ネットワークデバイスに表示されるアイコンの選択に対応する入力を受け取り得る。アイコンを選択することは、ネットワークデバイス上でモバイルアプリケーションをブートすることを開始し得る。モバイルアプリケーションがブートされると、モバイルアプリケーションは、ネットワークデバイスのスクリーン上の複数のページのうちの1ページを表示し得る。さらに、モバイルアプリケーションのページは、入力要素(例えば、入力テキストのためのテキストフィールド)を含み得る。ある場合には、初期状態で入力要素を表示することは、その初期入力値または任意の前の入力値を用いた入力要素を表示することを含み得る。例えば、入力要素の初期状態は、未選択のラジオボタンおよび未選択のボタン、空のテキストフィールド、(例えば、モバイルアプリケーションのプログラムコードにコード化されたような初期入力値からのまたはそれをあらかじめポピュレートされた)テキストを有するテキストフィールド、並びに他の適切な初期状態に対応し得る。さらに、モバイルアプリケーションは、端末デバイスによって遠隔制御され得る。
【0154】
[00166] ブロック1120において、ネットワークデバイスは、端末デバイスでの選択に対応する入力を受け取り得る。例えば、表示されたコンテンツエリア(例えば、コンテンツ740)上の入力イベント(例えば、クリックイベント)に対応する入力を端末デバイスが受け取るとき、入力イベントが検出され得る。さらに、端末デバイスは、ウェブソケットを使用して、通信サーバに入力イベントを送信し得る。通信サーバは、検出された入力イベントをネットワークデバイスに送信または中継し得る。検出入力イベントは、入力としてネットワークデバイスで受け取られ得る。さらに、受け取られた入力は、端末デバイスにおいて検出された選択(例えば、クリックイベント)に対応し得る。
【0155】
[00167] ある場合には、端末デバイスでの選択(例えば、クリックイベント)は、選択データに関連付けられ得る。選択データは、端末デバイスで検出された選択(例えば、クリックイベント)に関連付けられた任意のデータまたはメタデータを含み得る。選択データの例は、端末デバイスにおいて検出された選択のピクセル座標(例えば、エージェントによって行われるクリックのロケーションにおけるコンテンツ740上の座標)、エージェントのウェブブラウザ上で動作するイベントリスナによって検出されかつ選択に関連付けられたデータまたはメタデータ、クリックイベントの処理に関連付けられたデータまたはメタデータ(例えば、クリック750、クリックの時間、クリックの持続時間、クリックまたはタップがシングルクリック/タップであったか、あるいはダブルクリック/タップであったか、あるいはクリックドラッグオペレーションであったかなど)、クリックが左クリックであったか、または右クリックであったか、あるいは、他の適切なデータを含み得る。端末デバイスにおいて検出された入力イベントは任意の入力イベントであり得、クリックに限定されるものではないことが理解されるだろう。例えば、端末デバイスにおける入力イベントはまた、スワイプ、タップ、クリック-ドラッグオペレーション、マルチタッチ、端末デバイスに関連付けられウェアラブルコンピューティングデバイスのジェスチャなどでもあり得る。ある場合には、選択データは、モバイルアプリケーションに関連付けられた場所を識別するために使用され得る。例えば、端末デバイスにおいて検出された入力イベントの座標(例えば、コンテンツ740上のエージェントによって行われるクリックの座標)を選択データが含む場合、ネットワークデバイスで受信された選択データがネットワークデバイスのスクリーン上の入力イベントのロケーション(例えば、モバイルアプリケーションに関連付けられた入力イベントの場所)を識別するために使用され得る。
【0156】
[00168] 例えば、端末デバイスにおいて検出された入力イベントが端末デバイスのスクリーン上のロケーション(x,y)におけるクリックである場合、選択データは、ロケーション座標を含み得る。ネットワークデバイスが選択データを受信したとき、ネットワークデバイスは、ネットワークデバイス上の対応するロケーションにおいて、遠隔で生成されたクリックを複製し得る。例えば、ネットワークデバイスは、ロケーション(x,y)に対応するロケーションにおけるクリックを複製し得る。端末デバイスのロケーション(x,y)が各デバイスのスクリーンの寸法に基づいてネットワークデバイス上の対応するロケーション(x’,y’)に変換または転送され得ることが理解されるだろう。例えば、ネットワークデバイスが端末デバイスとは異なるスクリーンサイズまたは方位を有する場合、選択データに含まれるロケーション(x,y)は、ネットワークデバイス上の対応するロケーション(x’,y’)に変換され得る。ある場合には、ネットワークデバイスは、選択データが受信されたとき、ロケーション(x,y)の変換を行い得る。他の例では、通信サーバまたは端末デバイスは、座標の変換を行い得る。
【0157】
[00169] ブロック1125において、ネットワークデバイスに組み込まれたSDKは、選択データが入力要素に対応するか否かを決定し得る。選択データが入力要素に対応するか否かを決定することは、その選択の座標が子要素の入力境界内にあるか否かを決定するために、モバイルアプリケーションのルート要素(例えば、現在のページ)を識別すること、および各子要素(例えば、現在のページ上に提示される入力要素)を繰り返しチェックすることを含み得る。例えば、ネットワークデバイスで入力イベントが受信された時に、ルート要素は、モバイルアプリケーションの現在のページまたは特定のページとなり得る。ルート要素は、子要素の関連した階層を有し得る。例えば、ルート要素の子要素は、ルート要素に対応するページ上に含まれる入力要素であり得る。さらに、選択データが入力要素に対応するか否かを決定することは、選択データを入力境界と比較することを含み得る。例えば、各子要素に関して、モバイルアプリケーションに組み込まれたSDKは、選択データの座標が子要素の入力境界と交差するか否かを決定し得る。SDKは、子要素の入力境界を受信し、座標がその入力境界内にあるか否かを決定するために、ロケーションを比較し得る。
【0158】
[00170] ブロック1130において、モバイルアプリケーションに組み込まれたSDKは、選択データが入力要素に対応するとき、入力要素に関連付けられたアクションを決定し得る。例えば、モバイルアプリケーションに組み込まれたSDKが、特定の子要素の入力境界と入力イベントの座標が交差すると決定したとき、子要素に対応する入力要素は、ターゲット入力要素となる。ターゲット入力要素は、端末デバイスで検出された入力イベントに対応する入力要素であり得る。例えば、コンテンツ740を閲覧するエージェントがテキストフィールドのイメージに対応するコンテンツ740のロケーション上でクリックする場合、ターゲット入力要素は、テキストフィールドに対応する入力要素であり得る。SDKは、ターゲット入力要素に関連付けられた定義されたアクションを検索し得る。例えば、各入力要素は、モバイルアプリケーションのプログラムコードにおいて定義される関連付けされたアクションを有し得る。定義されたアクションは、入力要素のタイプに基づき得る。例えば、ラジオボタンに関するアクションは、ラジオボタンの選択を未選択と選択済みとの間でトグルすることであり得、テキスト要素に関するアクションは、テキストボックスに含まれるべきテキストを定義する入力値に含まれたテキストをポピュレートすることであり得、ドロップダウンメニューに関するアクションは、ドロップダウンリストに含まれる項目を表示するためのものであり得、ボタンに関するアクションは、そのボタンの選択であり得、スクロールアローを表示するボタンに関するアクションは、スクリーンをスクロールするためのものなどであり得る。特定の入力要素のためのアクションは、モバイルアプリケーションのプログラムコードに符号化され得る。モバイルアプリケーションに組み込まれたSDKは、ターゲット入力要素に関連付けられたアクションを検索し得る。ブロック1135において、ターゲット入力要素についての検索されたアクションが行われ得る。
【0159】
[00171]
図12は、モバイルアプリケーションを遠隔制御するための別の処理のフローチャートを示す。処理1200は、ネットワークデバイスによって行われ得る。さらに、処理1200は、端末デバイスによって遠隔制御されるべきネットワークデバイス上で実行しているモバイルアプリケーションを有効にするために行われ得る。さらに、処理1200はまた、ネットワークデバイス上のモバイルアプリケーションによって提示されたコンテンツが端末デバイスとリアルタイムに共有され得るように、および端末デバイスがモバイルアプリケーションを遠隔制御し得るように、ネットワークデバイスと端末デバイスとの間の通信セッションを確立し得る。
【0160】
[00172] 処理1200は、ネットワークデバイスがモバイルアプリケーションを実行する、ブロック1205で始まる。ある場合には、モバイルアプリケーションは、初期状態で入力要素を含み得る。モバイルアプリケーションは、端末デバイスがリアルタイムにモバイルアプリケーションを制御することを可能にする、組み込まれたSDKを含み得る。モバイルアプリケーションは、ネットワークデバイスに表示されたアイコンの選択に対応する入力をネットワークデバイスが受け取ったときに、実行され得る。例えば、入力要素の初期状態は、モバイルアプリケーションがブートされたときの入力要素の状態(例えば、選択、未選択、空のテキストフィールドなど)であり得る。初期状態はまた、入力要素の最も最近の状態または入力要素の任意の以前の状態であり得る。端末デバイスがモバイルアプリケーションによって提示されたリアルタイムコンテンツを受信することを可能にする通信セッションは、モバイルアプリケーションが実行された後(例えば、モバイルアプリケーションが通信セッションを開始するボタンの選択に対応する入力を受け取ったとき)に確立され得る。
【0161】
[00173] ブロック1210において、モバイルアプリケーションに組み込まれたSDKは、モバイルアプリケーションによって提示されるコンテンツ(例えば、コンテンツデータ)を含むデータストリームを生成し得る。例えば、コンテンツデータは、ネットワークデバイス上でモバイルアプリケーションによって提示された、イメージ、ビデオフレーム、あるいは1ページまたは複数のページのスクリーンショットであり得る。別の例として、コンテンツデータがイメージまたはスクリーンショットを含むとき、そのイメージまたはスクリーンショットは、モバイルアプリケーションによって提示されたオブジェクトを含み得る。オブジェクトは、入力要素に対応するイメージまたはスクリーンショットの一部分であり得る。例えば、入力要素がラジオボタンである場合、オブジェクトは、ラジオボタンを含むスクリーンショットのピクセルに対応し得る。さらに、データストリームを生成することは、リアルタイムにコンテンツデータを含むデータストリームを生成するために、コンテンツにWebRTCプロトコルを適用することを含み得る。他のリアルタイム通信プロトコルが使用され得ることが理解されるだろう。さらに、任意の変換がキャプチャされたコンテンツデータへのものである(例えば、ビデオフレームのサイズの変換)ことが理解されるだろう。
【0162】
[00174] ブロック1215において、ネットワークデバイスは、通信セッション中に通信サーバにデータストリームを送信し得る。通信サーバは、受信されたデータストリームを端末デバイスに送信または転送し得る。ある場合には、ネットワークデバイスは、どのデバイスが通信セッションの一部分として通信しているかを通信サーバが決定することができるように、データストリームに通信セッションの識別子を含み得る。例えば、識別子はまた、どのネットワークデバイスおよびどの端末デバイスが通信セッションに参加したかを識別し得る。通信サーバがデータストリームを受信したとき、通信サーバは、識別子を抽出し、どの端末デバイスがデータストリームを送信するかを決定し得る。さらに、通信サーバが検出された入力イベントを端末デバイスから受信したとき、通信サーバは、どのネットワークデバイスが入力イベントを受信すべきかを決定するために入力イベントに関連付けられるまたは含まれる識別子を抽出し得る。さらに、データストリームが端末デバイスで受信されたとき、データストリームに含まれるコンテンツデータは、端末デバイスに表示され得る。例えば、端末デバイスは、モバイルアプリケーションによって提示されたコンテンツのリアルタイムビデオが端末デバイスをオペレートしているエージェントによって閲覧されることができるように、端末デバイス上にビデオフレームを表示し得る。
【0163】
[00175] ブロック1220において、ネットワークデバイスは制御データを受信し得る。例えば、制御データは、オブジェクトに関連付けられ得る。通信サーバは、通信サーバが端末デバイスからの検出された入力イベントに関連するイベントデータを受信したとき、制御データを生成し得る。ある場合には、制御データは、通信セッションの識別子、またはネットワークデバイスおよび端末デバイスの識別子(例えば、デバイス識別子)を含み得る。制御データは、端末デバイスでの選択に関連付けられたデータ選択を含み得る。例えば、端末デバイスでの選択は、例えば端末デバイスで行われる検出されたクリック、タップ、またはスワイプであり得る。さらに、端末デバイスでの選択は、選択が入力要素に対応するオブジェクトロケーション(例えば、入力要素に対応するスクリーンショット、イメージ、またはビデオの一部分)であり得るので、オブジェクトに関連付けられ得る。
【0164】
[00176] ブロック1225において、モバイルアプリケーションに組み込まれたSDKは、制御データが入力要素に対応するか否かを決定し得る。例えば、SDKは、制御データから抽出された選択データに含まれる座標から入力イベントのロケーションを識別し得る。さらに、SDKは、ルート要素(例えば、モバイルアプリケーションによって提示された現在のページ)を識別し得、各子要素(例えば、現在のページ上に提示された入力要素)ごとに、選択の座標が子要素の入力境界に内にあるか否かを決定し得る。座標が入力境界内にある場合、その子要素は、ターゲット入力要素であり得る。座標が任意の子要素の入力境界に含まれる場合、処理が終了し得る。
【0165】
[00177] ブロック1230において、SDKがターゲット入力要素を識別したとき、SDKは、入力要素の初期状態を修正し得る。ある場合には、入力要素の初期状態を修正することは、初期状態を次の状態に変えることを含み得る。例えば、テキストフィールドの初期状態を修正することは、テキストフィールドの入力値として端末デバイスから受信された1つまたは複数の文字を追加すること、および追加された文字をテキストボックスにポピュレートすることを含み得る。この例では、テキストボックスの入力値は、モバイルアプリケーションのプログラムコード中のテキストフィールドのためにコード化されたテキストボックスのコンテンツであり得る。入力値は、モバイルアプリケーションによって提示されたテキストフィールドのコンテンツを端末デバイスが遠隔制御することを可能にする、端末デバイスから受信された文字に基づいて更新され得る。別の例では、未選択のラジオボタンの初期状態を修正することは、ラジオボタンを選択済み状態にトグルすることを含み得る。さらに、ある場合には、入力要素の初期状態を修正することは、上述された処理800または900を行うことを含み得る。例えば、入力要素の初期状態を修正することは、入力要素のロケーションで入力イベントを複製することを含み得る。
【0166】
[00178] 上の説明では実施形態の十分な理解を提供するために具体的詳細が示されている。しかしながら、それら実施形態がこれらの具体的詳細なしでも実施することができることを理解されたい。例えば、回路は、不要な詳細で実施形態を不明瞭にしないようにブロック図として示され得る。他の例では、実施形態を不明瞭にしないように、周知の回路、処理、アルゴリズム、構造、および技法が不要な詳細なしで示され得る。
【0167】
[00179] 上述の技法、ブロック、ステップおよび手段の実装が、様々な方法で行われ得る。例えば、これらの技法、ブロック、ステップおよび手段は、ハードウェア、ソフトウェア、またはそれらの組み合わせで実施され得る。ハードウェアの実装に関して、処理ユニットは、1つまたは複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理装置(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、上述された機能を行うように設計された他の電子ユニット、および/またはそれらの組み合わせの内部で実施され得る。
【0168】
[00180] また、実施形態の一部は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として描く処理として説明され得ることに留意されたい。フローチャートは、オペレーションを順次的な処理として説明し得るが、オペレーションの多くは、並列に、または同時に行われ得る。加えて、オペレーションの順序は並べ換えることができる。処理は、そのオペレーションが完了したときに終了するが、図面には含まれていないさらに別のステップを有する可能性もある。処理は、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。処理が関数に対応するとき、その終了は、この関数が呼び出し関数または主関数に戻ることに対応する。
【0169】
[00181] さらに、実施形態は、ハードウェア、ソフトウェア、スクリプト言語、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、および/またはそれらの任意の組み合わせによって実施され得る。ソフトウェア、ファームウェア、ミドルウェア、スクリプト言語、および/またはマイクロコードにおいて実施されると、必要なタスクを行うプログラムコードまたはコードセグメントは、記憶媒体などの機械可読媒体に記憶され得る。コードセグメントまたは機械実行可能命令は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、スクリプト、クラス、あるいは、命令、データ構造、および/またはプログラム文の任意の組み合わせを表し得る。コードセグメントは、情報、データ、引数、パラメータ、および/またはメモリコンテンツを渡し、および/または受信することによって、別のコードセグメントまたはハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ受け渡し、チケット受け渡し、ネットワーク送信などを含む任意の適切な手段によって受け渡し、転送、または送信され得る。
【0170】
[00182] ファームウェアおよび/またはソフトウェア実装について、方法が、本明細書で説明される機能を行うモジュール(例えば、プロシージャ、機能など)を用いて実施され得る。命令を有形に具体化する任意の機械可読媒体は、本明細書で説明される方法を実施する際に、使用され得る。例えば、ソフトウェアコードは、メモリに記憶され得る。メモリは、プロセッサ内で、またはプロセッサの外部に実装され得る。本明細書で使用されるとき、「メモリ」という用語は、任意のタイプの長期、短期、揮発性、または他の記憶媒体を指し、いかなる特定のタイプのメモリにも特定の数のメモリにも、メモリが記憶される媒体のタイプにも限定されない。
【0171】
[00183] さらに、本明細書で開示されるとき、「記憶媒体」、「記憶」、または「メモリ」という用語は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気RAM、コアメモリ、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1つまたは複数のメモリを表し得る。「機械可読媒体」という用語は、携帯式または固定式の記憶デバイス、光記憶デバイス、無線チャネル、並びに/あるいは、命令および/またはデータを収容または搬送する、記憶することが可能な様々な他の記憶媒体を含むが、これらに限定されない。
【0172】
[00184] 本開示の原理は、特定の装置および方法に関連して上述されているが、この記述は、本開示の範囲の限定としてではなく例示としてなされているにすぎないことが明確に理解されるべきである。
【手続補正書】
【提出日】2023-05-10
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
ネットワークデバイスと端末デバイスとの間の通信セッションを確立することと、ここにおいて、前記通信セッションは、通信サーバに関連付けられ、前記ネットワークデバイスは、アプリケーションに関連付けられ、
前記アプリケーションのイベントリスナコードに基づいて前記ネットワークデバイスと前記端末デバイスとの間の通信を容易にすることと、前記イベントリスナコードは、前記端末デバイスにおいて1つまたは複数のイベントを検出し、前記検出されたイベントに対応するイベントデータを生成するために実行可能であり、
前記生成されたイベントデータをリアルタイムに受信することと、
前記受信されたイベントデータに基づいて前記ネットワークデバイスにおいて1つまたは複数のシンセティックイベントを動的に、リアルタイムに生成することと、ここにおいて、前記1つまたは複数のシンセティックイベントを動的に生成することは、前記検出されたイベントのうちの1つまたは複数を複製することを含み、
シンセティックイベントを送信することと、ここにおいて、前記シンセティックイベントが前記ネットワークデバイスにおいて受信されたとき、前記ネットワークデバイスは、前記シンセティックイベントに基づいて1つまたは複数のアクションを行う、
を備える、コンピュータ実装方法。
【請求項2】
前記ネットワークデバイスと端末デバイスとの間の通信を容易にすることは、前記ネットワークデバイスから前記端末デバイスへのコンテンツデータの送信を容易にすることを含み、前記検出されたイベントは、前記コンテンツデータに対応する、請求項1に記載の方法。
【請求項3】
前記イベントリスナコードは、前記ネットワークデバイスに送られるデータ量を減らすために前記生成されたイベントデータをフィルタリングするようにさらに実行可能である、請求項1に記載の方法。
【請求項4】
前記生成されたイベントデータは、前記端末デバイスのディスプレイ内のロケーションに関連付けられる、請求項1に記載の方法。
【請求項5】
前記検出されたイベントは、前記ディスプレイ内の前記ロケーションに関連付けられた1つまたは複数の選択を示す、請求項4に記載の方法。
【請求項6】
前記生成されたイベントデータは、前記端末デバイスのディスプレイ内の1つまたは複数の選択に関するメタデータに関連付けられる、請求項1に記載の方法。
【請求項7】
前記メタデータは、前記検出されたイベントのうちの1つまたは複数のタイプを示す、請求項6に記載の方法。
【請求項8】
前記検出されたイベントのうちの1つまたは複数のタイプを識別することをさらに備え、前記シンセティックイベントを生成することは、前記1つまたは複数の検出されたイベントの前記識別されたタイプに基づく、請求項1に記載の方法。
【請求項9】
前記1つまたは複数の検出されたイベントの前記タイプは、1つまたは複数のあらかじめ定義されたタイプとして識別される、請求項8に記載の方法。
【請求項10】
前記識別されたタイプの識別子をあらかじめ定義されたイベントタイプのリストと比較することをさらに備える、請求項8に記載の方法。
【請求項11】
前記シンセティックイベントを生成することは、
前記イベントのうちの1つまたは複数をイベント構造とマッチさせることと、
前記受信されたイベントデータで前記マッチングイベント構造を埋めることと
を含む、請求項1に記載の方法。
【請求項12】
前記シンセティックイベントに関連付けられた前記イベントデータは、前記ネットワークデバイスにおける入力要素および前記入力要素に関連付けられたロケーションを含む、請求項1に記載の方法。
【請求項13】
システムであって、
ネットワークデバイスと端末デバイスとの間の通信セッションを確立し、ここにおいて、前記通信セッションは、通信サーバに関連付けられ、前記ネットワークデバイスは、アプリケーションに関連付けられ、
前記アプリケーションのイベントリスナコードに基づいて前記ネットワークデバイスと前記端末デバイスとの間の通信を容易にし、前記イベントリスナコードは、前記端末デバイスにおいて1つまたは複数のイベントを検出し、前記検出されたイベントに対応するイベントデータを生成するために実行可能であり、
前記生成されたイベントデータをリアルタイムに受信する通信インターフェースと、
メモリに記憶された命令を実行するプロセッサとを備え、ここにおいて、前記プロセッサは、前記受信されたイベントデータに基づいて前記ネットワークデバイスにおいて1つまたは複数のシンセティックイベントを動的に、リアルタイムに生成するための前記命令を実行し、前記シンセティックイベントを動的に生成することは、前記検出されたイベントのうちの1つまたは複数を複製することを含み、
前記通信インターフェースは、シンセティックイベントをさらに送信し、前記シンセティックイベントが前記ネットワークデバイスにおいて受信されたとき、前記ネットワークデバイスは、前記シンセティックイベントに基づいて1つまたは複数のアクションを行う、システム。
【請求項14】
方法を実行するためにプロセッサによって実行可能なプログラムを具現化した非一時的なコンピュータ可読記憶媒体であって、
ネットワークデバイスと端末デバイスとの間の通信セッションを確立することと、ここにおいて、前記通信セッションは、通信サーバに関連付けられ、前記ネットワークデバイスは、アプリケーションに関連付けられ、
前記アプリケーションのイベントリスナコードに基づいて前記ネットワークデバイスと前記端末デバイスとの間の通信を容易にすることと、前記イベントリスナコードは、前記端末デバイスにおいて1つまたは複数のイベントを検出し、前記検出されたイベントに対応するイベントデータを生成するために実行可能であり、
前記生成されたイベントデータをリアルタイムに受信することと、
前記受信されたイベントデータに基づいて前記ネットワークデバイスにおいて1つまたは複数のシンセティックイベントを動的に、リアルタイムに生成することと、ここにおいて、前記シンセティックイベントを動的に生成することは、前記検出されたイベントのうちの1つまたは複数を複製することを含み、
シンセティックイベントを送信することと、ここにおいて、前記シンセティックイベントが前記ネットワークデバイスにおいて受信されたとき、前記ネットワークデバイスは、前記シンセティックイベントに基づいて1つまたは複数のアクションを行う、
を備える、非一時的なコンピュータ可読記憶媒体。
【請求項15】
前記通信インターフェースは、前記ネットワークデバイスから前記端末デバイスへのコンテンツデータの送信を容易にすることによって前記ネットワークデバイスと端末デバイスとの間の通信を容易にし、前記検出されたイベントは、前記コンテンツデータに対応する、請求項13に記載のシステム。
【請求項16】
前記イベントリスナコードは、前記ネットワークデバイスに送られるデータ量を減らすために前記生成されたイベントデータをフィルタリングするようにさらに実行可能である、請求項13に記載のシステム。
【請求項17】
前記生成されたイベントデータは、前記端末デバイスのディスプレイ内のロケーションに関連付けられる、請求項13に記載のシステム。
【請求項18】
前記検出されたイベントは、前記ディスプレイ内の前記ロケーションに関連付けられた1つまたは複数の選択を示す、請求項17に記載のシステム。
【請求項19】
前記生成されたイベントデータは、前記端末デバイスのディスプレイ内の1つまたは複数の選択に関するメタデータに関連付けられる、請求項13に記載のシステム。
【請求項20】
前記メタデータは、前記検出されたイベントのうちの1つまたは複数のタイプを示す、請求項19に記載のシステム。
【請求項21】
前記プロセッサは、
前記検出されたイベントのうちの1つまたは複数のタイプを識別するための命令をさらに実行し、前記シンセティックイベントを生成することは、前記1つまたは複数の検出されたイベントの前記識別されたタイプに基づく、請求項13に記載のシステム。
【請求項22】
前記1つまたは複数の検出されたイベントの前記タイプは、1つまたは複数のあらかじめ定義されたタイプとして識別される、請求項21に記載のシステム。
【請求項23】
前記プロセッサは、
前記識別されたタイプの識別子をあらかじめ定義されたイベントタイプのリストと比較するための命令をさらに実行する、請求項21に記載のシステム。
【請求項24】
前記プロセッサは、
前記イベントのうちの1つまたは複数をイベント構造とマッチさせることと、
前記受信されたイベントデータで前記マッチングイベント構造を埋めることと
によって前記シンセティックイベントを生成する、請求項13に記載のシステム。
【請求項25】
前記シンセティックイベントに関連付けられた前記イベントデータは、前記ネットワークデバイスにおける入力要素および前記入力要素に関連付けられたロケーションを含む、請求項13に記載のシステム。
【請求項26】
前記ネットワークデバイスと端末デバイスとの間の通信を容易にすることは、前記ネットワークデバイスから前記端末デバイスへのコンテンツデータの送信を容易にすることを含み、前記検出されたイベントは、前記コンテンツデータに対応する、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項27】
前記イベントリスナコードは、前記ネットワークデバイスに送られるデータ量を減らすために前記生成されたイベントデータをフィルタリングするようにさらに実行可能である、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項28】
前記生成されたイベントデータは、前記端末デバイスのディスプレイ内のロケーションに関連付けられる、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項29】
前記検出されたイベントは、前記ディスプレイ内の前記ロケーションに関連付けられた1つまたは複数の選択を示す、請求項28に記載の非一時的なコンピュータ可読記憶媒体。
【請求項30】
前記生成されたイベントデータは、前記端末デバイスのディスプレイ内の1つまたは複数の選択に関するメタデータに関連付けられる、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項31】
前記メタデータは、前記検出されたイベントのうちの1つまたは複数のタイプを示す、請求項30に記載の非一時的なコンピュータ可読記憶媒体。
【請求項32】
前記検出されたイベントのうちの1つまたは複数のタイプを識別することをさらに備え、前記シンセティックイベントを生成することは、前記1つまたは複数の検出されたイベントの前記識別されたタイプに基づく、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項33】
前記1つまたは複数の検出されたイベントの前記タイプは、1つまたは複数のあらかじめ定義されたタイプとして識別される、請求項32に記載の非一時的なコンピュータ可読記憶媒体。
【請求項34】
前記識別されたタイプの識別子をあらかじめ定義されたイベントタイプのリストと比較することをさらに備える、請求項32に記載の非一時的なコンピュータ可読記憶媒体。
【請求項35】
前記シンセティックイベントを生成することは、
前記イベントのうちの1つまたは複数をイベント構造とマッチさせることと、
前記受信されたイベントデータで前記マッチングイベント構造を埋めることと
を含む、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【請求項36】
前記シンセティックイベントに関連付けられた前記イベントデータは、前記ネットワークデバイスにおける入力要素および前記入力要素に関連付けられたロケーションを含む、請求項14に記載の非一時的なコンピュータ可読記憶媒体。
【手続補正2】
【補正対象書類名】明細書
【補正対象項目名】0172
【補正方法】変更
【補正の内容】
【0172】
[00184] 本開示の原理は、特定の装置および方法に関連して上述されているが、この記述は、本開示の範囲の限定としてではなく例示としてなされているにすぎないことが明確に理解されるべきである。
以下に、出願当初の特許請求の範囲に記載の事項を、そのまま、付記しておく。
[C1]
コンピュータ実装方法であって、
通信サーバにおいて、モバイルデバイスと端末デバイスとの間の通信セッションを容易にすることと、ここにおいて、前記モバイルデバイスは、モバイルアプリケーションを実行するように構成され、前記モバイルアプリケーションは、初期状態で入力要素を含んでおり、前記モバイルアプリケーションは、前記端末デバイスによって遠隔制御され、
前記通信セッション中にデータストリームを受信することと、ここにおいて、前記データストリームは、コンテンツデータを含んでおり、前記コンテンツデータは、前記モバイルアプリケーションによって提示されるオブジェクトを含んでおり、前記オブジェクトは、前記入力要素を表し、
前記通信セッション中に前記データストリームを送信することと、ここにおいて、前記データストリームが前記端末デバイスで受信されたとき、前記コンテンツデータは、前記オブジェクトを前記端末デバイスに表示させ、
前記オブジェクトに関連付けられた入力イベントを検出することと、
前記入力イベントが検出されたとき、制御データを生成することと、
前記制御データを送信することと、ここにおいて、前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、
を備える、コンピュータ実装方法。
[C2]
前記制御データが前記モバイルデバイスで受信されたとき、前記入力イベントは、前記モバイルデバイスにおいて複製される、C1に記載のコンピュータ実装方法。
[C3]
前記通信セッション中に前記データストリームを送信することは、
前記入力要素を表す前記オブジェクトを表示することと、ここにおいて、前記オブジェクトは、コンテンツデータを含んでおり、
前記入力要素に含まれる前記コンテンツデータが操作されるのを防ぐことと
を備える、C1に記載のコンピュータ実装方法。
[C4]
前記通信セッション中に前記データストリームを送信することは、
前記モバイルアプリケーションに含まれる前記入力要素のためのフィールドマスクを生成することと、ここにおいて、前記フィールドマスクは、前記コンテンツデータが前記端末デバイスに表示されたとき、前記オブジェクトが閲覧可能となるのを防ぎ、
前記データストリームを送信することと、ここにおいて、前記データストリームは、前記コンテンツデータと前記フィールドマスクとを含む、
を備える、C1に記載のコンピュータ実装方法。
[C5]
前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルデバイスにおいてシンセティックイベントを生成させ、前記シンセティックイベントは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、C1に記載のコンピュータ実装方法。
[C6]
前記シンセティックイベントは、前記モバイルデバイスのオペレーティングシステムによって生成され、前記シンセティックイベントは、前記検出された入力イベントを複製する、C5に記載のコンピュータ実装方法。
[C7]
前記制御データが前記モバイルデバイスで受信されたとき、前記方法は、
前記制御データが前記入力要素に対応するか否かを決定することと、
前記制御データが前記入力要素に対応するとき、前記入力要素の前記初期状態を修正することと、ここにおいて、前記入力要素の前記初期状態を修正することは、前記初期状態を次の状態に変えることを含む、
をさらに備える、C1に記載のコンピュータ実装方法。
[C8]
システムであって、
1つまたは複数のデータプロセッサと、
命令を含む非一時的コンピュータ可読記憶媒体であって、前記命令は、前記1つまたは複数のデータプロセッサで実行されると、前記1つまたは複数のデータプロセッサに、
通信サーバにおいて、モバイルデバイスと端末デバイスとの間の通信セッションを容易にすることと、ここにおいて、前記モバイルデバイスは、モバイルアプリケーションを実行するように構成され、前記モバイルアプリケーションは、初期状態で入力要素を含んでおり、前記モバイルアプリケーションは、前記端末デバイスによって遠隔制御され、
前記通信セッション中にデータストリームを受信することと、ここにおいて、前記データストリームは、コンテンツデータを含んでおり、前記コンテンツデータは、前記モバイルアプリケーションによって提示されるオブジェクトを含んでおり、前記オブジェクトは、前記入力要素を表し、
前記通信セッション中に前記データストリームを送信することと、ここにおいて、前記データストリームが前記端末デバイスで受信されたとき、前記コンテンツデータは、前記オブジェクトを前記端末デバイスに表示させ、
前記オブジェクトに関連付けられた入力イベントを検出することと、
前記検出された入力イベントに基づいて制御データを生成することと、
前記制御データを送信することと、ここにおいて、前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、
を含むオペレーションを行わせる、非一時的コンピュータ可読記憶媒体と、
を備える、システム。
[C9]
前記制御データが前記モバイルデバイスで受信されたとき、前記入力イベントは、前記モバイルデバイスにおいて複製される、C8に記載のシステム。
[C10]
前記通信セッション中に前記データストリームを送信することは、
前記入力要素を表す前記オブジェクトを表示することと、ここにおいて、前記オブジェクトは、コンテンツデータを含んでおり、
前記入力要素に含まれる前記コンテンツデータが操作されるのを防ぐことと
を備える、C8に記載のシステム。
[C11]
前記通信セッション中に前記データストリームを送信することは、
前記モバイルアプリケーションに含まれる前記入力要素のためのフィールドマスクを生成することと、ここにおいて、前記フィールドマスクは、前記コンテンツデータが前記端末デバイスに表示されたとき、前記オブジェクトが閲覧可能となるのを防ぎ、
前記データストリームを送信することと、ここにおいて、前記データストリームは、前記コンテンツデータと前記フィールドマスクとを含む、
を備える、C8に記載のシステム。
[C12]
前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルデバイスにおいてシンセティックイベントを生成させ、前記シンセティックイベントは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、C8に記載のシステム。
[C13]
前記シンセティックイベントは、前記モバイルデバイスのオペレーティングシステムによって生成され、前記シンセティックイベントは、前記検出された入力イベントを複製する、C12に記載のシステム。
[C14]
前記制御データが前記モバイルデバイスで受信されたとき、前記オペレーションは、
前記制御データが前記入力要素に対応するか否かを決定することと、
前記制御データが前記入力要素に対応するとき、前記入力要素の前記初期状態を修正することと、ここにおいて、前記入力要素の前記初期状態を修正することは、前記初期状態を次の状態に変えることを含む、
をさらに備える、C8に記載のシステム。
[C15]
命令を含む非一時的機械可読記憶媒体中で有形に具体化されるコンピュータプログラム製品であって、前記命令は、データ処理装置に、
通信サーバにおいて、モバイルデバイスと端末デバイスとの間の通信セッションを容易にすることと、ここにおいて、前記モバイルデバイスは、モバイルアプリケーションを実行するように構成され、前記モバイルアプリケーションは、初期状態で入力要素を含んでおり、前記モバイルアプリケーションは、前記端末デバイスによって遠隔制御され、
前記通信セッション中にデータストリームを受信することと、ここにおいて、前記データストリームは、コンテンツデータを含んでおり、前記コンテンツデータは、前記モバイルアプリケーションによって提示されるオブジェクトを含んでおり、前記オブジェクトは、前記入力要素を表し、
前記通信セッション中に前記データストリームを送信することと、ここにおいて、前記データストリームが前記端末デバイスで受信されたとき、前記コンテンツデータは、前記オブジェクトを前記端末デバイスに表示させ、
前記オブジェクトに関連付けられた入力イベントを検出することと、
前記検出された入力イベントに基づいて制御データを生成することと、
前記制御データを送信することと、ここにおいて、前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、
を含むオペレーションを行わせるように構成される、コンピュータプログラム製品。
[C16]
前記制御データが前記モバイルデバイスで受信されたとき、前記入力イベントは、前記モバイルデバイスにおいて複製される、C15に記載のコンピュータプログラム製品。
[C17]
前記通信セッション中に前記データストリームを送信することは、
前記入力要素を表す前記オブジェクトを表示することと、ここにおいて、前記オブジェクトは、コンテンツデータを含んでおり、
前記入力要素に含まれる前記コンテンツデータが操作されるのを防ぐことと
を備える、C15に記載のコンピュータプログラム製品。
[C18]
前記通信セッション中に前記データストリームを送信することは、
前記モバイルアプリケーションに含まれる前記入力要素のためのフィールドマスクを生成することと、ここにおいて、前記フィールドマスクは、前記コンテンツデータが前記端末デバイスに表示されたとき、前記オブジェクトが閲覧可能となるのを防ぎ、
前記データストリームを送信することと、ここにおいて、前記データストリームは、前記コンテンツデータと前記フィールドマスクとを含む、
を備える、C15に記載のコンピュータプログラム製品。
[C19]
前記制御データが前記モバイルデバイスで受信されたとき、前記制御データは、前記モバイルデバイスにおいてシンセティックイベントを生成させ、前記シンセティックイベントは、前記モバイルアプリケーションに含まれる前記入力要素の前記初期状態を修正する、C15に記載のコンピュータプログラム製品。
[C20]
前記シンセティックイベントは、前記モバイルデバイスのオペレーティングシステムによって生成され、前記シンセティックイベントは、前記検出された入力イベントを複製する、C19に記載のコンピュータプログラム製品。
【外国語明細書】