(57)【要約】      （修正有）【課題】ウェブページのＪａｖａＳｃｒｉｐｔ（登録商標）タグまたはネイティブアプリケーションのコードセグメントの動的管理などの、動的コード管理を行うためのシステムおよび方法を提供する。【解決手段】ウェブまたはネイティブアプリケーションをロードするユーザデバイスは、ユーザデバイス固有属性またはロードされるウェブページもしくはネイティブアプリケーションのコンテンツなどの因子にアクセスし、この因子を規則に適用する。規則をユーザデバイスまたはコードサーバによって評価して、利用可能なコードのプール（例えば、予め埋め込まれたコードまたは動的に注入されたコード）から、ユーザデバイスが実行する１つ以上の望ましいコードのセグメント（例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）タグまたはネイティブアプリケーションコード）を選択する。【選択図】図７
2020123360.tif 000002
【特許請求の範囲】
【請求項１】
デバイス上にウェブページをロードするステップと、
前記ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性または前記ウェブページのコンテンツを含む、ステップと、
規則を判定するステップと、
前記因子および前記規則を用いて選択したウェブコードを実行するステップと、
を含む、コンピュータ実装方法。
【請求項２】
前記ウェブページをロードする間に動的コードを注入するステップであって、前記動的コードが望ましいウェブコードを含む、ステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記因子をサーバに送信するステップであって、前記動的コードが、前記送信された因子と前記規則とに基づいて選択された前記望ましいウェブコードを含む、ステップ、をさらに含む、請求項２に記載の方法。
【請求項４】
前記因子が顧客識別情報を含み、前記動的コードが、前記顧客識別情報に基づいて選択された前記望ましいウェブコードを含む、請求項３に記載の方法。
【請求項５】
前記動的コードが前記規則と複数の利用可能なコードとを含み、前記望ましいウェブコードが、前記因子と前記デバイス上での前記規則の評価とに基づいて、前記複数の利用可能なコードから選択される、請求項２に記載の方法。
【請求項６】
前記因子がユーザエージェント文字列であり、前記望ましいウェブコードが、前記ユーザエージェント文字列と前記規則とに基づいて選択される、請求項１に記載の方法。
【請求項７】
前記因子が前記ウェブページの前記コンテンツに基づくものであり、前記ウェブページの前記コンテンツが複数のウェブページ要素を含み、前記望ましいウェブコードが、前記複数のウェブページ要素のうちの少なくとも１つに基づいて選択される、請求項１に記載の方法。
【請求項８】
前記望ましいウェブコードがＪａｖａＳｃｒｉｐｔ（登録商標）タグである、請求項１に記載の方法。
【請求項９】
１つ以上のデータプロセッサと、
前記１つ以上のデータプロセッサで実行した場合、前記１つ以上のデータプロセッサに、
デバイス上にウェブページをロードするステップと、
前記ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性または前記ウェブページのコンテンツを含む、ステップと、
規則を判定するステップと、
前記因子および前記規則を用いて選択したウェブコードを実行するステップと、
を含む動作を行わせる命令を含む非一時的コンピュータ可読記憶媒体と、
を備えるシステム。
【請求項１０】
前記命令が、前記１つ以上のデータプロセッサに、前記ウェブページをロードする間に動的コードを注入するステップであって、前記動的コードが望ましいウェブコードを含む、ステップを含む、追加的動作をさらに行わせる、請求項９に記載のシステム。
【請求項１１】
前記命令が、前記１つ以上のデータプロセッサに、前記因子をサーバに送信するステッ
プをさらに含む、前記追加的動作をさらに行わせ、前記動的コードが、前記送信した因子と前記規則とに基づいて選択された前記望ましいウェブコードを含む、請求項１０に記載のシステム。
【請求項１２】
前記因子が顧客識別情報を含み、前記動的コードが、前記顧客識別情報に基づいて選択された前記望ましいウェブコードを含む、請求項１１に記載のシステム。
【請求項１３】
前記動的コードが前記規則と複数の利用可能なコードとを含み、前記望ましいウェブコードが、前記因子と前記デバイス上での前記規則の評価とに基づいて、前記複数の利用可能なコードから選択される、請求項１０に記載のシステム。
【請求項１４】
前記因子がユーザエージェント文字列であり、前記望ましいウェブコードが、前記ユーザエージェント文字列と前記規則とに基づいて選択される、請求項９に記載のシステム。
【請求項１５】
前記因子が前記ウェブページの前記コンテンツに基づくものであり、前記ウェブページの前記コンテンツが複数のウェブページ要素を含み、前記望ましいウェブコードが、前記複数のウェブページ要素のうちの少なくとも１つに基づいて選択される、請求項９に記載のシステム。
【請求項１６】
前記望ましいウェブコードがＪａｖａＳｃｒｉｐｔ（登録商標）タグである、請求項９に記載のシステム。
【請求項１７】
データ処理装置に、
ユーザデバイス上にウェブページをロードすることと、
前記ウェブページをロードする際に因子にアクセスすることであって、因子が、ユーザデバイス固有属性または前記ウェブページのコンテンツを含む、ことと、
規則を判定することと、
前記因子および前記規則を用いて選択したウェブコードを実行することと、
を行わせるように構成される命令を含む、非一時的機械可読記憶媒体に有形具現化されたコンピュータプログラム製品。
【請求項１８】
前記命令が、前記データ処理装置に、前記ウェブページをロードする間に動的コードを注入することを行わせるようにさらに構成され、前記動的コードが望ましいウェブコードを含む、請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
前記命令が、前記データ処理装置に、前記因子をサーバに送信することを行わせるようにさらに構成され、前記動的コードが、前記送信した因子と前記規則とに基づいて選択された前記望ましいウェブコードを含む、請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
前記因子が顧客識別情報を含み、前記動的コードが、前記顧客識別情報に基づいて選択された前記望ましいウェブコードを含む、請求項１９に記載のコンピュータプログラム製品。
【請求項２１】
前記動的コードが前記規則と複数の利用可能なコードとを含み、前記望ましいウェブコードが、前記因子と前記ユーザデバイス上での前記規則の評価とに基づいて、前記複数の利用可能なコードから選択される、請求項１８に記載のコンピュータプログラム製品。
【請求項２２】
前記因子がユーザエージェント文字列であり、前記望ましいウェブコードが、前記ユーザエージェント文字列と前記規則とに基づいて選択される、請求項１７に記載のコンピュータプログラム製品。
【請求項２３】
前記因子が前記ウェブページの前記コンテンツに基づくものであり、前記ウェブページの前記コンテンツが複数のウェブページ要素を含み、前記望ましいウェブコードが、前記複数のウェブページ要素のうちの少なくとも１つに基づいて選択される、請求項１７に記載のコンピュータプログラム製品。
【請求項２４】
前記望ましいウェブコードがＪａｖａＳｃｒｉｐｔ（登録商標）タグである、請求項１７に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[0001]本出願は、２０１４年９月９日に出願された「ＤＹＮＡＭＩＣ  ＪＡＶＡＳＣＲＩＰＴ（登録商標）  ＴＡＧ  ＭＡＮＡＧＥＭＥＮＴ」と題する米国特許仮出願第６２／０４８，０２２号明細書の利益を主張するものであり、上記明細書は、本明細書において参照によりその全体を組み込まれる。
【０００２】
[0002]本開示は、一般的に、インターネット対応のアプリケーションに関し、特に、デバイス固有および／または他の因子固有のアプリケーションデプロイメントに関する。
【０００３】
[0003]本明細書は以下の添付の図面を参照し、添付の図面では、異なる図面において同様の参照番号を使用している場合、同様または類似の構成要素を表すことを意図している。
【図面の簡単な説明】
【０００４】
【図１】ネットワークインタラクションシステムの一実施形態のブロック図を示す。
【図２】ネットワークインタラクションシステムの別の実施形態のブロック図を示す。
【図３Ａ】接続管理システムを含むネットワークインタラクションシステムの他の実施形態のブロック図を示す。
【図３Ｂ】接続管理システムを含むネットワークインタラクションシステムの他の実施形態のブロック図を示す。
【図３Ｃ】接続管理システムを含むネットワークインタラクションシステムの他の実施形態のブロック図を示す。
【図４】接続コンポーネントの動作のプロトコルスタックマッピングを表したものを示す。
【図５】一実施形態によるマルチデバイス通信交換システムを示す。
【図６】接続管理システムの一実施形態のブロック図を示す。
【図７】ユーザデバイスがウェブページにアクセスできるウェブページアクセス環境を示す概略図である。
【図８】本開示の特定の実施態様による、利用可能なコードを含むウェブページをロードする方法を示す流れ図である。
【図９】本開示の特定の実施態様による、静的タグを含むウェブページをロードする方法を示す流れ図である。
【図１０】本開示の特定の実施態様による、コード管理をコードサーバで行う、ウェブページをロードする方法を示す流れ図である。
【図１１】本開示の特定の実施態様による、ウェブページを表示するスマートフォンの描写である。
【図１２】本開示の特定の実施態様による、ウェブアプリケーションを表示する図１１のスマートフォンの描写である。
【図１３】本開示の特定の実施態様による、図１１からのウェブページを表示するタブレットの描写である。
【図１４】本開示の特定の実施態様による、ウェブアプリケーションを表示する図１３のタブレットの描写である。
【図１５】本開示の特定の実施態様による、図１１からのウェブページを表示する、デスクトップのウェブブラウザの描写である。
【図１６】本開示の特定の実施態様による、インタラクションウィンドウを提示するための処理を示す流れ図である。
【図１７】本開示の特定の実施態様による、第１のズームレベルでウェブページにアクセスするスマートフォンを示す概略図である。
【図１８】本開示の特定の実施態様による、第２のズームレベルでウェブページにアクセスする図１７のスマートフォンを示す概略図である。
【図１９】本開示の特定の実施態様による、インタラクションウィンドウを提示する、図１７のスマートフォンを示す概略図である。
【図２０】本開示の特定の実施態様による、ユーザデバイスがネイティブアプリケーションにアクセスし実行できる動的ネイティブアプリケーション環境を示す概略図である。
【図２１】本開示の特定の実施態様による、ネイティブアプリケーションのための動的コード管理の方法２１００を示す流れ図である。
【発明を実施するための形態】
【０００５】
[0025]添付の図面では、同様のコンポーネントおよび／または特徴は、同じ参照符号を有し得る。さらに、同じタイプの様々なコンポーネントを区別するには、ダッシュ記号および同様のコンポーネントを区別する第２の符号によって参照符号を追えばよい。本明細書において、第１の参照符号のみが使用される場合、説明は、第２の参照符号にかかわりなく、同じ第１の参照符号を有する同様のコンポーネントのうちのいずれか１つに適用可能である。
【０００６】
[0026]本開示の特定の実施態様および特徴は、ウェブページのＪａｖａＳｃｒｉｐｔ（登録商標）タグまたはネイティブアプリケーションのコードセグメントの動的管理などの、動的コード管理を行うためのシステムおよび方法に関する。一部の実施形態では、ウェブページまたはネイティブアプリケーションをロードする電子デバイス（例えば、ユーザデバイス）は、ユーザデバイス固有属性、ロードされるウェブページのコンテンツ、またはロードされるネイティブアプリケーションのコンテンツ（例えば、ネイティブアプリケーションに埋め込まれた顧客識別子）などの因子にアクセスする。規則を（例えば、ユーザデバイスまたはサーバがアクセスおよび／または実行することによって）判定できる。因子を規則に適用して、ユーザデバイスが実行するウェブコード（例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）タグ）またはネイティブアプリケーションコードのうちの１つ以上の望ましいセグメントを判定できる。一部のケースでは、因子をリモートサーバに送信し、リモートサーバが、規則を判定し、規則を因子に適用できる。リモートサーバは、命令またはコードを返すことができ、命令またはコードは、デバイスが受信した場合に実行されて、具体的な機能を行う、アプリケーション（例えば、ウェブアプリケーションまたはネイティブアプリケーション）の具体的なバージョンを提示する、または次に実行するウェブコードもしくはネイティブアプリケーションの具体的なコードセグメントを選択することができる。これらの実施態様および特徴を使用して、ユーザデバイスの因子（例えば、利用可能な機能）に基づいて、ウェブサイト上で稼働しているアプリケーションおよびネイティブアプリケーションをカスタマイズできる。（例えば、リモートサーバに格納された）規則は、クライアント（例えば、ウェブサイトまたはネイティブアプリケーションの発行元）またはサービスプロバイダ（例えば、ウェブサイトまたはネイティブアプリケーションに埋め込まれたチャットアプリケーションのプロバイダなどの、ウェブアプリケーションまたはネイティブアプリケーションの拡張のプロバイダ）によって、オンデマン
ドで更新でき、その結果、基盤となるウェブサイトコードまたはネイティブアプリケーションコードの修正または再発行なしで、カスタマイズできる。
【０００７】
[0027]ウェブコードは、ユーザデバイスが実行可能な任意のコードを含み得る。ウェブコードは、ユーザデバイスが実行可能な任意のスクリプトとすることができる。ウェブコードは、ユーザデバイスが実行可能な任意のＪａｖａＳｃｒｉｐｔ（登録商標）タグとすることができる。ウェブコードは、ウェブサイトに（例えば、静的または動的に）埋め込み可能なウェブアプリケーションの一部分または全体をさらに指すことができる。ウェブコードは、ウェブサイトに（例えば、静的または動的に）埋め込まれ、クライアントコンピュータで実行可能な任意のコードを指すことができる。本明細書で使用する場合、ウェブコードは、ハイパーテキストマークアップ言語（ＨＴＭＬ）を指さない。
【０００８】
[0028]一部の実施形態では、ウェブアプリケーションのサプライヤなどのウェブコードのサプライヤは、異なる環境および／または状況を対象とした、複数のウェブコードを開発できる。例えば、第１のウェブコードは、第１のスタイルのモバイルデバイス用に設計され、第１のスタイルのモバイルデバイスで使用できる、第１のウェブアプリケーションを提示でき、第２のウェブコードは、第２のスタイルのモバイルデバイス用に設計され、第２のスタイルのモバイルデバイスで使用できる、第２のウェブアプリケーションを提示でき、第３のウェブコードは、デスクトップデバイス用に設計され、デスクトップデバイスで使用できる、第３のウェブアプリケーションを提示できる。各ウェブアプリケーションは、アプリケーションの設計の目的となったデバイスの特定のハードウェアおよびソフトウェア機能を利用できる。これらの実施形態では、どのウェブコードを実行するか、それによって、どのウェブアプリケーションをユーザに提示するかを判定するために、ウェブページをロードする際にユーザデバイス固有属性へアクセスでき、かつ規則を評価する際にユーザデバイス固有属性を使用できる。ユーザデバイス固有属性の例として、ウェブページにアクセスするユーザデバイスに固有の任意の属性を示す情報を挙げることができ、この情報としては、デバイスのタイプ（例えば、電話、タブレット、デスクトップ、ラップトップなど）、デバイスの型式、デバイスが使用したブラウザ、ソフトウェアの対応バージョン（例えば、ＨＴＭＬおよび／またはＪａｖａＳｃｒｉｐｔ（登録商標）の対応バージョン）、デバイスの対応画面サイズ、ユーザ固有属性（例えば、利用可能であれば、別のウェブアプリケーションではなく、特定のウェブアプリケーションを提示するという望みなどの、ユーザのデバイスのユーザ設定）、またはユーザデバイスに固有の、他の属性もしくは属性指標を挙げることができる。ユーザデバイスでどのウェブコードを実行するか（例えば、どのウェブアプリケーションをユーザに提示するか）を判定するために、本明細書で説明するように、ユーザデバイス固有属性を使用できる。
【０００９】
[0029]一部の実施形態では、ユーザエージェント文字列を解析する、またはユーザエージェント文字列に別の方法でアクセスすることによって、ユーザデバイス固有属性を取得できる。例えば、ユーザエージェント文字列は、ユーザデバイスが使用したブラウザに関する情報を含むことができ、この情報を使用して、ユーザデバイスのタイプまたは他の属性を（例えば、ブラウザおよびバージョンを可能なブラウザおよびバージョンのデータベースと比較することによって）推定できる。
【００１０】
[0030]一部の実施形態では、因子は、ウェブページのコンテンツに基づき得る。ウェブページのコンテンツには、企業名、顧客識別情報（例えば、顧客識別番号すなわち「顧客ＩＤ」）、単語、画像および他のウェブページ要素などの、ウェブページに含まれる可視および非可視の情報が含まれ得る。ウェブページのコンテンツの例としては、画面要素のサイズ、開発者（例えば、ウェブページ開発者）が有効化または無効化した機能（例えば、ビューポート要素などを通した、ピンチによるズーム機能の無効化）、顧客ＩＤを含む可視または非可視要素、テキスト要素（例えば、タイトルまたはヘッダ）またはウェブペ
ージの他のタグもしくは要素を挙げることができる。ウェブページのコンテンツは、ウェブページをロードする際にユーザデバイスによってアクセスされ、本明細書で説明するように、ユーザデバイスでどのウェブコードを実行するか（例えば、どのウェブアプリケーションをユーザに提示するか）を判定するために使用され得る。
【００１１】
[0031]例えば、ピンチによるズーム機能が無効である場合、ウェブアプリケーションの特定のバージョンを提示でき、他方、ピンチによるズーム機能が有効である場合、ウェブアプリケーションの異なるバージョンを提示できる。別の例では、具体的な顧客ＩＤがウェブページに提示された場合、ウェブアプリケーションの完全バージョンを提示できる（例えば、本明細書でさらに詳細に説明するように、コードサーバ上のデータベースに対して、顧客ＩＤを比較して、その顧客がウェブアプリケーションの完全バージョンへのアクセスを許可されているかどうか判定できる）が、具体的な顧客ＩＤがウェブページに提示されない場合、ウェブアプリケーションの部分バージョンまたは別のウェブコードを提示できる。このような例では、ウェブアプリケーションサプライヤは、単純に、コードサーバ上の許可を更新する、またはコードサーバ上の動的コードを更新するだけで、ウェブアプリケーションのどのバージョンが利用可能であり、顧客のウェブサイトに注入できるかを動的に変更できる。一部の実施形態では、ウェブアプリケーションの異なるバージョンとしては、安定版リリースとベータ版リリースとを挙げることができる。さらなる例では、ウェブページ上に特定の要素が存在するか、または欠如しているかを含む因子（例えば、ウェブアプリケーションサプライヤのための属性ステートメント）を使用して、完全なウェブアプリケーションをユーザに提示するか否かを判定できる。このような例では、顧客が、顧客のウェブサイト上に必要な属性ステートメントを適切に含む場合のみ、完全なウェブアプリケーションを提供できる。このような例では、顧客が、属性ステートメントを適切に含まずに、ウェブアプリケーションを使用しようとする場合、ウェブアプリケーションは提示されない。他の使用方法も可能である。ウェブアプリケーションの異なるバージョンとしては、異なる視覚的要素（例えば、グラフィクスおよびウィンドウ）、異なる入力オプション（例えば、ボタンおよびフィールド）、ならびに全く異なる機能および他の差異を挙げることができる。
【００１２】
[0032]一部の実施形態では、ロードされるウェブページは、実行され得る、すべての可能なウェブコード（「利用可能なコード」）ならびに因子にアクセスし、因子および規則に基づいて、実行する望ましいウェブコードを判定するのに必要な、すべてのウェブコードを含むことができる。本明細書で使用する場合、利用可能なコードの語は、実行され得る、可能なウェブコードを含み、各ウェブコードは、独自のウェブアプリケーションまたはウェブアプリケーションの一部分もしくは要素であり得る。
【００１３】
[0033]一部の実施形態では、単一のＪａｖａＳｃｒｉｐｔ（登録商標）タグは、利用可能なコード（例えば、複数バージョンの単一ウェブアプリケーションまたは複数の別個のアプリケーションなどの複数のウェブアプリケーション）と、有効化コードとを含むコードを含み得る。有効化コードは、ユーザデバイスが、デバイスのタイプ（例えば、モバイルデバイスまたは非モバイルデスクトップデバイス）を示すユーザデバイス固有属性である因子にアクセスできるようにする。有効化コードはまた、因子に基づいて評価されて、どの利用可能なコード（例えば、望ましいウェブコード）を実行すべきかを判定し得る、１つ以上の規則を含み得る。１つ以上の規則を評価することにより、望ましいウェブコードを選択でき、次いで望ましいウェブコードをユーザデバイス上で実行できる。例えば、スマートフォンであるユーザデバイスが、上述のように、単一のＪａｖａＳｃｒｉｐｔ（登録商標）タグを含む特定のウェブページをロードした場合、ユーザデバイスは、モバイルバージョンのチャットルームウェブアプリケーションを提示する望ましいウェブコードを実行するに至り得る。デスクトップコンピュータが、同じ単一のＪａｖａＳｃｒｉｐｔ（登録商標）タグを含む同じウェブページをロードした場合、ユーザデバイスは、デスク
トップバージョンのチャットルームウェブアプリケーションを提示する、異なる望ましいウェブコードを実行するに至り得る。一部の実施形態では、単一のウェブページの複数のＪａｖａＳｃｒｉｐｔ（登録商標）タグに利用可能なコードと有効化コードとの両方を埋め込むことができる。
【００１４】
[0034]一部の実施形態では、ウェブページは、コードサーバから動的コードをウェブサイトに注入させる静的タグを含み得る。本明細書で使用する場合、「注入」の語は、ウェブページをロードする際、コードサーバからコードをダウンロードすること、またはその他の方法でアクセスすることと、コードの少なくとも一部分を実行することとを含む。一部の実施形態では、動的コードは、利用可能なコードと有効化コードとを含み得る。一部の実施形態では、静的タグは、因子にアクセスするためのコードを含み、かつ１つ以上の規則を含む、有効化コードを含む。一部の実施形態では、ウェブページをロードする際に注入される動的コードは、規則を評価したときに選択されなかったためにユーザデバイスで実行されずに至り得る不要なコードを含む利用可能なコードを含む。
【００１５】
[0035]一部の実施形態では、静的タグは、因子にアクセスし、因子をコードサーバに送信するのに十分なコードを含む。このような実施形態では、コードサーバは、因子に基づいて規則を評価し、実行する望ましいコードを判定できる。次いで、コードサーバは、望ましいウェブコードのみを含む動的コードをユーザデバイスに提供できる。換言すると、このような実施形態では、ユーザデバイスで実際に実行されるコードのみが、ウェブページをロードする際に注入される。
【００１６】
[0036]一部の実施形態では、規則は、因子に基づくものとすることができ、すべて利用可能なコードのうち、どのウェブコードをユーザデバイスで実行すべきかを示すことができる。例えば、規則を設定して、ユーザデバイスがデスクトップコンピュータであることを示す因子が提示された場合に、ユーザデバイスで実行するために第１のウェブコードが選択され得るようにできる。同じ規則または異なる規則を設定して、ユーザデバイスがタブレットであると提示された因子が示す場合に、ユーザデバイスで実行するために第２のウェブコードが選択され得るようにできる。一部の実施形態では、規則は、複数のサブ規則を含み得る、および／または複数の因子の評価を含み得る。他のタイプの規則も使用できる。
【００１７】
[0037]本明細書で説明されるシステムおよび方法を使用することにより、単一の場所（例えば、コードサーバ）に格納したコードを更新することによって、ウェブアプリケーションサプライヤは、ウェブアプリケーションを容易に更新できる。加えて、ウェブアプリケーションサプライヤは、単一の場所（例えば、コードサーバ）から迅速かつ容易に、特定のデバイス用（例えば、携帯電話用）に使用される、または特定の環境で（例えば、ピンチによるズームが無効化されているウェブページで使用するための環境で）使用される、具体的なバージョンのウェブアプリケーションを迅速に更新できる。本明細書で開示されるシステムおよび方法により、ウェブ開発者は、ユーザのウェブブラウザを別のページにリダイレクトする必要なく、またユーザが、単にウェブページをロードする以外のやりとりをウェブページとする必要なく、複数のバージョンのウェブアプリケーションを単一のウェブページに含めることができる。
【００１８】
[0038]一部のケースでは、（例えば、ウェブブラウザを介して実行するウェブアプリケーションとは対照的に）ネイティブアプリケーションで動的コード管理を行うことができる。ネイティブアプリケーションで実行される場合、コードのセグメントは、ユーザデバイス固有属性または実行されるアプリケーションのコンテンツなどの因子にアクセスできる。規則を（例えば、リモートサーバからアクセスおよび／または実行することによって）判定できる。因子を規則に適用して、ユーザデバイスが実行する１つ以上の望ましいコ
ードのセグメント（例えば、ネイティブアプリケーションのコードのセグメント）を判定できる。一部のケースでは、サーバが規則を判定し適用するために、因子をリモートサーバに送信できる。リモートサーバは、命令またはコードを送信して、ユーザデバイスで実行中のネイティブアプリケーションに返すことができ、命令またはコードは、実行時、ネイティブアプリケーションに１つ以上の望ましいコードのセグメント（例えば、ネイティブアプリケーションの既存のコード）を実行させる。
【００１９】
[0039]本開示の特定の実施態様および特徴はまた、様々な画面サイズを有するデバイスで使用するための、インターネットチャットアプリケーションなどのインターネットアプリケーションを最適化するための方法、システムおよびコンピュータプログラム製品に関する。特に、本開示は、モバイルデバイスなどのデバイスにロードしたウェブサイト上でチャットまたは他の機能を提供でき、インタラクションウィンドウ（例えば、チャットウィンドウ）は、基盤となるウェブサイトの大きさではなく、モバイルデバイスの画面に応じて最適化される。本開示は、インタラクションウィンドウが表示されているときはいつでも、サイトまたはウェブページをズーム不可と識別するために、ビューポートタグを変更することと、次いで、インタラクションウィンドウが表示されていない場合、ビューポートタグをその元の設定または初期設定に戻すことと、を含み得る。
【００２０】
[0040]以下の説明は、好ましい実施形態（複数可）の例のみを提供するものであり、本開示の範囲、適用可能性または構成を限定することを意図するものではない。むしろ、以下の、好ましい実施形態（複数可）の例の説明は、当業者に、好ましい実施形態の例の実施を可能にする説明を提供する。添付の特許請求の範囲で説明する趣旨および範囲から逸脱することなく、要素の機能および配置に様々な変更をなし得ることを理解されたい。
【００２１】
[0041]本明細書で説明する特定の実施形態および特徴を実装し、かつサポートする、ネットワークインタラクションシステム１００の一実施形態のブロック図を図１に示す。特定の実施形態は、ネットワークデバイス１０５（ユーザ１１０が操作可能）と、端末デバイス１１５（エージェント１２０が操作可能）との間の接続チャネルを確立することに関する。特定の実施形態では、ネットワークインタラクションシステム１００は、クライアント１２５と関連するクライアントデバイス１３０を含み得る。
【００２２】
[0042]特定の実施形態では、ユーザ１１０は、リモートサーバ１４０が提供する、ウェブサイトを閲覧する、またはオンラインサービスにアクセスする個人であり得る。クライアント１２５は、ウェブサイトもしくはオンラインサービスを提供、操作または稼働する事業体、またはそのような事業体に雇用または任命された個人であって、本明細書で説明されるように、クライアント１２５が利用可能なタスクを行い得る。エージェント１２０は、ウェブサイトまたはオンラインサービスに関するサポートまたは情報（例えば、オンラインストアで入手可能な製品に関する情報）をユーザ１１０に提供する任務を負う、サポートエージェントまたは販売員などの個人であり得る。多数のエージェントの中でも、特定のクライアント１２５のためにサポートまたは情報を提供するのにふさわしいのは、エージェントの一部である場合がある。エージェント１２０は、クライアント１２５と提携していてもしていなくてもよい。各エージェントは、１つ以上のクライアント１２５と連携できる。一部の非限定的な例では、ユーザ１１０は、パーソナルコンピューティングデバイスからオンラインストアで買い物をする個人であり、クライアント１２５は、製品をオンラインで販売する企業であり、エージェント１２０は、企業に雇用された販売員であり得る。様々な実施形態において、ユーザ１１０、クライアント１２５およびエージェント１２０は、他の個人または事業体であり得る。
【００２３】
[0043]図１は、単一のネットワークデバイス１０５、端末デバイス１１５およびクライアントデバイス１３０のみを示しているが、インタラクションシステム１００は、これら
のタイプのデバイスのうちの１つ以上のそれぞれを、複数または多数（例えば、数十、数百または数千）含み得る。同様に、図１は、単一のユーザ１１０、エージェント１２０およびクライアント１２５のみを示しているが、インタラクションシステム１００は、これらの事業体のうちの１つ以上のそれぞれを、複数または多数含み得る。よって、所与のネットワークデバイスと通信するために、どの端末デバイスを選択するかを判定する必要があり得る。さらに事態を複雑にしているのは、リモートサーバ１４０もまた、ネットワークデバイス通信を選択するために、受信および応答するように構成され得ることである。
【００２４】
[0044]接続管理システム１５０は、通信の戦略的ルーティングを促進し得る。通信は、（例えば、タイプ入力または口頭入力などの、事業体からの入力に基づいて規定された）コンテンツ付きのメッセージを含み得る。通信はまた、送信デバイス（例えば、ＩＰアドレス、アカウント識別子、デバイスタイプおよび／またはオペレーティングシステム）、宛先アドレス、クライアントの識別子、ウェブページまたはウェブページ要素の識別子（例えば、通信を生成したときに訪問された、またはその他の方法で通信に関連する、ウェブページまたはウェブページ要素）、もしくはオンライン履歴データ、時間（例えば、時刻および／または日付）、および／または宛先アドレスに関するデータなどの追加的なデータを含み得る。他の情報を通信に含むこともできる。一部の場合では、接続管理システム１５０は、全通信を別のデバイスにルーティングする。一部の場合では、接続管理システム１５０は、（例えば、最初の通信に基づいて）通信を修正する、または新しい通信を生成する。新しいまたは修正された通信は、メッセージ（または処理したバージョンのメッセージ）、追加的なデータの少なくとも一部（またはすべて）（例えば、送信デバイス、ウェブページもしくはオンライン履歴および／または時間）、および／または接続管理システム１５０が識別した他のデータ（例えば、特定のアカウント識別子またはデバイスに関連するアカウントデータ）を含み得る。新しいまたは修正された通信は、他の情報もまた含み得る。
【００２５】
[0045]戦略的ルーティング促進の一部は、ネットワークデバイス１０５と１つ以上の端末デバイス１１５との間で１つ以上の接続チャネルを確立、更新および使用することを含み得る。例えば、ネットワークデバイス１０５から通信を受信すると、接続管理システム１５０は、（ある場合）どのクライアントに通信が対応するかを、まず予測し得る。クライアントを識別すると、接続管理システム１５０は、ネットワークデバイス１０５との通信のために、クライアントに関連する端末デバイス１１５を特定できる。一部の場合では、識別には、複数のエージェント（または専門家もしくは代理人）のそれぞれのプロファイルを評価することを含み、複数のエージェント中の各エージェント（例えばエージェント１２０）は、端末デバイス（例えば、端末デバイス１１５）に関連し得る。評価は、ネットワークデバイスのメッセージのコンテンツに関連し得る。端末デバイス１１５の識別は、例えば、２０１０年３月１７日に出願の米国特許出願第１２／７２５，７９９号明細書に説明されている技法を含むことができ、その全体が、すべての目的のために参照により本明細書に組み込まれる。
【００２６】
[0046]一部の場合では、接続管理システム１５０は、ネットワークデバイス１０５とクライアント（またはリモートサーバ１４０）に関連する端末デバイスとの間になんらかの接続チャネルが確立されているかどうか、また確立されている場合、そのようなチャネルを使用して、この通信を含む一連の通信を交換するかどうかを判定できる。この判定は、少なくとも部分的に、通信に関連するトピック、通信もしくは過去の関係する通信に関連する感情スコア、端末デバイス１１５の予測される（例えば、相対または絶対）レスポンス遅延および／または通信に関連する通信チャネルのタイプ（例えば、インスタントメッセージ、メッセージ、電子メール、電話）によって決まり得る。確立した通信チャネルを選択することにより、一貫性が促進され、ネットワークデバイス１０５からの情報を何度も中継する必要性を低減され得る。その一方、新しい通信チャネルが確立されると判定す
ることにより、より専門化したエージェントからの迅速なレスポンスを促進できる。
【００２７】
[0047]確立した通信チャネルを選択する（または使用し続ける）かどうかに関する判断および／または新しい端末デバイスの選択には、（例えば、クライアントに関連する）１つ以上の端末デバイスのそれぞれが通信および／または関連ユーザに対応する範囲を判定することが含まれ得る。このような対応は、例えば、エージェントの知識ベースが、通信トピック、所与の時間および／もしくはあるチャネルタイプにおけるエージェントの利用可能性、ユーザとエージェントとの間の言語マッチ、ならびに／または性格分析に対応する範囲に関係し得る。
【００２８】
[0048]接続管理システム１５０は、ルーティング判定（例えば、通信を送信したネットワークデバイスからの通信を以前に受信した端末デバイスに通信をルーティングするかどうかを判定すること、または通信を受信または送信するために端末デバイスを選択すること）に影響を及ぼす通信解析を使用できる。１つの通信解析には、現在または過去の通信または一連の通信の１つ以上のカテゴリまたはタグを判定および評価することを含み得る。例えば、通信には、（例えば）トピック、チャネルタイプ（例えば、電子メール、ＳＭＳメッセージ、リアルタイムチャット、電話または非同期メッセージ）、言語、複雑度、感情、および／またはファイルタイプを取り付けるかどうか／どのファイルタイプを取り付けるかのそれぞれについてカテゴリが割り当てられ、端末デバイス選択には、同様、同じまたは相補的な知識ベース、チャネルタイプ利用可能性、言語、スキルレベル、感情および／またはファイルタイプ能力に関連する端末デバイス寄りのバイアスがかけられ得る。
【００２９】
[0049]一部のケースでは、通信解析は、本明細書で説明するように、クライアントデバイス１３０の因子を判定して、クライアントデバイス１３０の能力を判定することを含み得る（例えば、デバイスが高速インターネット接続に接続されているかどうか、デバイスがテレビ電話を扱うのに必要な中央処理装置（ＣＰＵ）またはグラフィック処理装置（ＧＰＵ）速度を有しているかどうか、デバイスがテレビ電話を扱うのにカメラを有しているかどうかなど）。通信解析は、ルーティング判定に影響を及ぼすために、因子に基づいて規則を判定し適用することを含み得る。
【００３０】
[0050]ネットワークデバイス１０５と通信するための端末デバイス１１５を選択すると、接続管理システム１５０は、ネットワークデバイス１０５と端末デバイス１１５との間に接続チャネルを確立できる。一部の場合では、接続管理システム１５０は、選択した端末デバイス１１５にメッセージを送信できる。メッセージは、ネットワークデバイス１０５と通信するために提案された割り当ての承諾を要求してもよいし、そのような割り当てが行われたことを識別してもよい。メッセージは、ネットワークデバイス１０５に関する情報（例えば、ＩＰアドレス、デバイスタイプおよび／またはオペレーティングシステム）、関連するユーザ１１０に関する情報（例えば、話す言語、クライアントとのやりとりの継続時間、スキルレベル、感情および／またはトピックの好み）、受信した通信、ネットワークデバイス１０５に通信を生成および送信するためのコード（例えば、クリック可能なハイパーリンク）および／またはネットワークデバイス１０５に通信を生成および送信するための命令を含み得る。
【００３１】
[0051]１つの場合では、ネットワークデバイス１０５と端末デバイス１１５との間の通信は、接続管理システム１５０を通してルーティングされ得る。このような構成により、接続管理システム１５０が、通信交換を監視し、いずれかのデバイスの非応答性または遅延が延びていることなどの（例えば、規則に基づいて規定されたような）問題を検出できる。さらに、このような構成により、選択的または完全な通信の保存を促進でき、これを使用して、例えば、通信交換の品質を評価してもよい、および／または特定の通信後ター
ゲットのレベルを上げるために、ルーティング規則を更新または生成するための学習を支援してもよい。このような保存はまた、ネットワークデバイスと第１の端末デバイスとの間のメッセージ履歴の生成を促進し、第２の端末デバイスがネットワークデバイスとの既存の一連の通信に加わろうとしている、または新しい一連の通信に参加しようとしていると判定された場合、メッセージ履歴を（例えば）第２の端末デバイスに送信できる。
【００３２】
[0052]一部の実施形態では、接続管理システム１５０は、通信交換をリアルタイムで監視し、ライブ通信に基づいて自動アクション（例えば、規則に基づくアクション）を行うことができる。例えば、通信が特定の製品に関係すると接続管理システム１５０が判定した場合、接続管理システム１５０は、製品に関する追加的な情報を含む追加的なメッセージを端末デバイス１１５に自動的に送信できる（例えば、在庫の製品の品質、製品に関係するサポート文書へのリンク、または製品または同様の製品に関する他の情報）。
【００３３】
[0053]１つの場合では、指定された端末デバイス１１５は、接続管理システム１５０を通して通信を中継せずとも、ネットワークデバイス１０５と通信できる。一方または両方のデバイス１０５、１１５は、通信の監視および／またはデータの保存を促進するために、特定の通信指標またはコンテンツを接続管理システム１５０に報告しても（しなくても）よい。接続管理システム１５０に報告される通信指標またはコンテンツは、本明細書で詳述するように、クライアントデバイス１３０の因子とすることができる。
【００３４】
[0054]既に述べたように、接続管理システム１５０は、選択された通信をリモートサーバ１４０にルーティングし得る。リモートサーバ１４０は、情報を既定の方式で提供するように構成され得る。例えば、リモートサーバ１４０は、規定の文字列の１以上の節、音声記録および／またはファイルにアクセスして、通信に応答して送信し得る。リモートサーバ１４０は、例えば、受信した通信の解析（例えば、意味解析またはマッピング解析）に基づいて、特定の文字列の一節、記録またはファイルを選択してもよい。
【００３５】
[0055]接続管理システム１５０で行われるルーティングおよび／または他の判定もしくは処理は、１つ以上のクライアントデバイス１３０によって少なくとも部分的に規定または提供される、規則および／またはデータに基づいて行われ得る。例えば、クライアントデバイス１３０は、エージェントの優先順位付け、端末デバイスタイプおよび／またはトピック／スキルマッチングを識別する通信を送信してもよい。別の例として、クライアントデバイス１３０は、潜在的にルーティング判定に影響する様々な変数に適用するための、１つ以上のウェイトを識別し得る（例えば、言語互換性、予測されるレスポンス時間、デバイスタイプおよび能力ならびに／または端末デバイス負荷分散）。どの端末デバイスおよび／またはエージェントがクライアントと関連されるかは、動的であってよいことが理解されよう。クライアントデバイス１３０および／または端末デバイス１１５からの通信は、所与の端末デバイスおよび／またはエージェントがクライアントに関連するものとして追加または除去されることを示す情報を提供してもよい。例えば、クライアントデバイス１３０は、ＩＰアドレスと、クライアント関連端末デバイス識別するリストにアドレスを有する端末デバイスを追加またはリストから除去するかどうかに関する指示と共に通信を送信できる。
【００３６】
[0056]１つの場合では、接続管理システム１５０は、ネットワークデバイス１０５と第１の端末デバイス１１５との間の最初のマッチングおよびルーティングを促進する。例えば、ネットワークデバイス１０５からの通信で受信したメッセージを、第１の端末デバイスにルーティングできる。別の例として、接続管理システム１５０は、（例えば、一連の通信を開始する）通信をネットワークデバイス１０５に送信するための要求または命令を含むまたは示す通信を第１の端末デバイスに送信できる。
【００３７】
[0057]接続管理システム１５０は、ネットワークデバイス１０５と第１の端末デバイスとの間の対応する一連の通信を監視および／または解析して、特性を判定できる。例えば、接続管理システム１５０は、１つ以上の通信におけるメッセージコンテンツを解析できる（例えば、解析して、「ｆｒｕｓｔｒａｔ＊」、「ｖｅｒｙ」、「ｔｈａｎｋ」もしくは「ｉｒｒｉｔａｔ＊」、「！」または大文字などの特定の単語、記号または文字のタイプが使われているかどうか、および／またはどのくらい使われているかを判定できる）。別の例として、接続管理システム１５０は、１つ以上のメッセージおよび／または一連の通信それぞれに関連する１つ以上の統計値を判定できる。統計値の例として、例えば、（例えば、単語または文字単位の）メッセージ長、通信の受信と応答通信の送信との間の遅延、後続のメッセージ送信間の遅延、またはメッセージをタイプする際のタイピングの速さを挙げることができる。さらに別の例として、接続管理システム１５０は、ネットワークデバイス１０５または第１の端末デバイスで最初に検出され、次いで、接続管理システム１５０で識別された、１つ以上の入力を受信および処理できる。このような入力は、例えば、感情、再ルーティング要求または解決段階を識別できる。
【００３８】
[0058]一部のケースでは、接続管理システム１５０は、例えば、感情、再ルーティング要求または解決段階を示すクライアントデバイス１３０の因子を受信できる。例えば、クライアントデバイス１３０の激しい振動を示す加速度計データを含む因子は、不満を示すものとすることができる。別の例として、店のレジの近くであることを示すクライアントデバイス１３０の場所情報を含む因子は、特定の解決段階（例えば、検討中の製品の購入希望）を示すものとすることができる。クライアントデバイス１３０が受信または実行した場合、クライアントデバイス１３０上で稼働しているウェブアプリケーションまたはネイティブアプリケーションをカスタマイズできる特定の命令をクライアントデバイス１３０に送信するように判定するために、因子は、接続管理システム１５０が受信した場合、規則に適用できる。例えば、接続管理システム１５０で不満を検出すると、接続管理システム１５０は、クライアントデバイス１３０で稼働中のアプリケーションに追加的な解決段階オプションを提示させる、またはフィードバックの機会を提示させる命令を送信できる。別の例では、接続管理システム１５０において（例えば、検討中の製品を購入したいとの望みを示す）特定の解決段階を検出すると、接続管理システム１５０は、クライアントデバイス１３０で稼働中のアプリケーションにクーポンもしくはリベート情報またはソーシャルメディアネットワークで購入したこと共有する機会を提示させる命令を送信できる。
【００３９】
[0059]接続管理システム１５０は、（例えば、統計値を含むメッセージコンテンツを特徴付ける、または入力を特徴付ける）特性を評価して、特定の方式で続くルーティングにバイアスをかけるかどうかを判定できる。例えば、連続チャネル規則は、（ネットワークデバイスとの通信交換に以前参加した）第１の端末デバイス寄りのバイアスをネットワークデバイスメッセージのルーティングにいつかけるかを指定する、特性に関係する条件を含み得る。規則は、条件を満たすことによって、ネットワークデバイスと第１の端末デバイスとの間で連続チャネルが確立されるように構成できる。連続チャネルにより、ネットワークデバイスからの後続のメッセージが第１の端末デバイスに自動的にルーティングされ得る、および／または第１の端末デバイスに優先的にルーティングされ得る。連続チャネルは、複数の一連の通信を通じて持続するように構成され得る。例えば、第１の一連のメッセージは、最初の日にネットワークデバイスと第１の端末デバイスとの間で交換され、チャネルは、次の日に送信されたネットワークデバイスからの別のメッセージのルーティングにバイアスをかけて、同じ第１の端末デバイスにルーティングされるようにすることができる。このようなバイアスの大きさは、例えば、ネットワークデバイスと第１の端末デバイスとの間の前回のインタラクションからの時間（例えば、過去のインタラクションが最近であった場合にバイアスを強める）、ネットワークデバイスと第１の端末デバイスとの間の前回のメッセージ交換における通信のすべての持続時間および／もしくは数、
ならびに／またはネットワークデバイスと第１の端末デバイスとの間の前回のメッセージ交換の数（および／または交換したメッセージの累積インタラクション時間または回数）によって決まり得る。
【００４０】
[0060]連続チャネルを確立すると、接続管理システム１５０は、ユーザ１１０に連続チャネルが確立したことを通知するように、ネットワークデバイス１０５で提示（例えば、通知）を提示することをさらに促進して、第１の端末デバイスもしくは関連するユーザを識別する、および／または後続のメッセージがルーティングされる、もしくは第１の端末デバイス寄りにバイアスをかけられてルーティングされることを示す（例えば、チャネルの識別子と関連付けられて送信される、特定のクライアントに関連付けられるなど）ことができる。
【００４１】
[0061]反対に、接続管理システム１５０は、特性が、ネットワークデバイス１０５からの（例えば、クライアントに関する）後続のメッセージが同じ第１の端末デバイスにルーティングされない、および／または再ルーティングされることを示すと判定してもよい。例えば、連続チャネル規則の条件が満たされていないことを判定できる。そのような判定の際、接続管理システム１５０は、新しい端末デバイスを識別して、ネットワークデバイスとの（例えば、クライアントに関する）通信をルーティングできる。
【００４２】
[0062]１つの場合では、連続チャネル規則は、連続チャネルが、２つのデバイスの間の通信の最初のルーティングに続いて、ネットワークデバイスと端末デバイスとの間で確立されるように構成される。よって、連続チャネルは、単一のメッセージ交換内で一貫したメッセージルーティングを促進する役に立ち得る。代替的または同じ場合では、連続チャネル規則は（同様に、または代替的に）、異なる一連のメッセージ（例えば、時間が隔たった一連のメッセージ）間において一貫したメッセージルーティングを促進するように、連続チャネルが確立、維持または使用されるように構成され得る。実施形態に応じて、連続チャネル規則は、所与のネットワークデバイスおよび／またはクライアントに関して提供され得る連続チャネルの数を制限できる。例えば、規則は、所与のネットワークデバイスおよびクライアントに関し、ネットワークデバイスのみを連続チャネルを介して１つ（または３つもしくは別の指定される数）の端末デバイスに接続できることを示し得る。
【００４３】
[0063]一部の場合では、接続管理システム１５０は、（例えば、再ルーティング規則において条件が満たされたことに基づいて）再ルーティングする処理を開始することを判定できる。判定は、（例えば、統計値を含むメッセージコンテンツを特徴付ける、または入力を特徴付ける）特性に基づき得る。例えば、再ルーティング規則は、ユーザの不満または不満足を示す特性を検出すると、問題の解決に向かう許容可能な進展の欠如を示す特性を検出すると、許容できない端末デバイス通信の統計値（例えば、長いレスポンス遅延）を検出すると、またはメッセージが新しいトピックに集中し始めていることを検出すると、再ルーティングを開始するように構成できる。
【００４４】
[0064]再ルーティング処理は、異なる端末デバイスを識別して、ネットワークデバイス１０５との通信交換に参加することを含み得る。このような識別は、例えば、通信に関連するトピック、通信もしくは過去の関係する通信に関連する感情スコア、端末デバイス１１５の予測される（例えば、相対または絶対）レスポンス遅延、通信に関連する通信チャネルのタイプ（例えば、インスタントメッセージ、メッセージ、電子メール、電話）、言語マッチ、１つ以上の他の端末デバイスのそれぞれのタイプ、１つ以上の他の端末デバイスの能力、および／またはネットワークデバイス通信複雑度とのエージェントのスキルのマッチに基づき得る。異なる端末デバイスの選択は、第１の端末デバイスの選択と比べて、同じ、同様または異なる方式で行われてもよい。例えば、再ルーティング規則の条件が満たされたことを判定することにより、より上級の広範な知識ベースおよび／またはより
良い言語能力に関連するデバイス寄りのバイアスを後続の端末デバイス選択にかけてもよい。
【００４５】
[0065]再ルーティング処理は、ネットワークデバイス１０５、第１の端末デバイスまたは異なる端末デバイスなどの１つ以上のデバイスに提案された再ルーティングを識別する通知を送信することを含み得る。通知は、提案された再ルーティングを受諾するオプションおよび／または拒否するオプションを含み得る。通知は、ネットワークデバイス１０５、第１の端末デバイスおよび／もしくは異なる端末デバイスならびに／または関連者に関する情報を含み得る。
【００４６】
[0066]端末デバイス間の急激な移行を抑制するために、接続管理システム１５０は、オーバーラップ期間を調整できる。この期間の間、第１の端末デバイスおよび異なる端末デバイスのそれぞれは、ネットワークデバイス１０５から１つ以上の通信（またはその処理されたバージョン）を受信できる。例えば、ネットワークデバイス１０５からの新しい通信を複製し、次いで、第１の端末デバイスおよび異なる端末デバイスのそれぞれにルーティングできる。
【００４７】
[0067]一部の場合では、接続管理システム１５０は、ネットワークデバイス１０５からおよび／または第１の端末デバイスからの複数のメッセージを含む動的メッセージ記録を生成できる。記録は、例えば、通信交換におけるすべてのメッセージ、規定の期間（例えば、３分）内でルーティングされるすべてのメッセージ、または１つ以上の規定のタグまたはカテゴリに関連するすべてのメッセージを含み得る。例えば、特定のトピック、（例えば、不満足に対応する）感情または（例えば、質問を含む）コンテンツタイプに関するメッセージを選択できる。接続管理システム１５０は、異なる端末デバイスに動的メッセージ記録を送信できる。ネットワークデバイス１０５および／または第１の端末デバイスからの新しいメッセージを異なる端末デバイスへさらに送信して、動的メッセージ記録がそのような新しいメッセージに加えられ得るようにできる。動的メッセージ記録のためのメッセージ選択および／または動的メッセージ記録を提供するかどうかはまた、一時的にクラスタ化された一連のメッセージの間または一連のメッセージの間に再ルーティングを行うかどうかによって決まり得る。
【００４８】
[0068]一部の場合では、接続管理システム１５０は、第１の端末デバイスへのルーティング通信を停止するかどうか、および／または停止するのはいつかを判定できる。例えば、このようなルーティングの終了は、異なる端末デバイスから応答通信を検出すると、メッセージ記録の送信に続き規定の期間が経過した後、通信交換を出る意図を示す、第１の端末デバイスで受信した入力を検出した後、通信交換を扱う意図を示す、異なる端末デバイスで受信した入力を検出した後、異なる端末デバイスに対する提案された再ルーティングの有効化を要求する、ネットワークデバイス１０５で受信した入力を検出した後などに行われ得る。
【００４９】
[0069]再ルーティング転送を開始する規則または理由に応じて、再ルーティングは、（例えば、低いユーザ感情に応じて再ルーティング処理が開始された場合）ネットワークデバイス１０５と第１の端末デバイスとの間の接続チャネルを解放すること、および／またはネットワークデバイス１０５と異なる端末デバイスとの間で新しい接続チャネルを確立することを含み得る。
【００５０】
[0070]（例えば、デバイス間、デバイスと接続管理システム１５０との間、リモートサーバ１４０と接続管理システム１５０との間、またはリモートサーバ１４０とデバイスとの間の）各通信は、１つ以上のネットワーク１７０を介して行われ得る。１つ以上のネットワーク１７０にはオープンまたはクローズドネットワークの任意の組み合わせが含まれ
得る。好適なネットワークの例としては、インターネット、パーソナルエリアネットワーク、ローカルエリアネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）または無線ローカルエリアネットワーク（ＷＬＡＮ）を挙げることができる。他のネットワークもまた好適であり得る。１つ以上のネットワーク１７０は、イントラネット、エクストラネットもしくはこれらの組み合わせに完全に組み込まれ得る、またはイントラネット、エクストラネットもしくはこれらの組み合わせを含み得る。一部の場合では、１つ以上のネットワーク１７０におけるネットワークは、Ｂｌｕｅｔｏｏｔｈ（登録商標）またはＢｌｕｅｔｏｏｔｈ（登録商標）  Ｌｏｗ  Ｅｎｅｒｇｙチャネルなどの短距離通信チャネルを含む。一実施形態では、２つ以上のシステムおよび／またはデバイスの間の通信は、セキュアソケットレイヤ（ＳＳＬ）またはトランスポート層セキュリティ（ＴＬＳ）などのセキュア通信プロトコルによって達成され得る。加えて、データおよび／またはトランザクションの細部は、限定するものではないが、データ暗号化標準（ＤＥＳ）、トリプルＤＥＳ、リベスト−シャミア−エーデルマン暗号化（ＲＳＡ）、ブローフィッシュ暗号化、高度暗号化標準（ＡＥＳ）、ＣＡＳＴ−１２８、ＣＡＳＴ−２５６、無相関高速暗号（ＤＦＣ）、Ｔｉｎｙ  Ｅｎｃｒｙｐｔｉｏｎ  Ａｌｇｏｒｉｔｈｍ（ＴＥＡ）、ｅＸｔｅｎｄｅｄ  ＴＥＡ（ＸＴＥＡ）、Ｃｏｒｒｅｃｔｅｄ  Ｂｌｏｃｋ  ＴＥＡ（ＸＸＴＥＡ）、および／またはＲＣ５などの、任意の簡便な既知またはこれから開発される方式に基づいて暗号化してもよい。
【００５１】
[0071]ネットワークデバイス１０５、端末デバイス１１５および／またはクライアントデバイス１３０は、例えば、携帯用電子デバイス（例えば、スマートフォン、タブレット、ラップトップコンピュータまたはスマートウェアラブルデバイス）または非携帯用電子デバイス（例えば、１つ以上のデスクトップコンピュータ、スマート機器、サーバおよび／またはプロセッサ）を含み得る。接続管理システム１５０は、ネットワーク、端末およびクライアントデバイスとは別々に収容できる、または（例えば、デバイス上にアプリケーションをインストールすることにより）１つ以上のそのようなデバイスの一部としてもよい。リモートサーバ１４０は、各デバイスおよび接続管理システム１５０とは別々に収容してもよいし、別のデバイスまたはシステムの一部としてもよい。図１の各デバイス、サーバおよびシステムは単一のデバイスとして示されているが、そうではなく複数のデバイスを使用してもよいことを理解されたい。例えば、一式のネットワークデバイスを使用して、単一のユーザからの様々な通信を送信できる、またはリモートサーバ１４０がサーバスタックを含み得る。
【００５２】
[0072]ソフトウェアエージェントまたはアプリケーションを、図示のデバイス、システムまたはサーバ上にインストールおよび／または図示のデバイス、システムまたはサーバ上で実行してもよい。１つの場合では、ソフトウェアエージェントまたはアプリケーションは、様々な図示の要素が相補的に動作できるように構成される。例えば、デバイス上のソフトウェアエージェントが、別個の接続管理システムにデバイス使用量に関するデータを収集および送信するように構成され、別個の接続管理システム上のソフトウェアアプリケーションが、データを受信および処理するように構成され得る。
【００５３】
[0073]図２は、ネットワークインタラクションシステム２００の別の実施形態のブロック図を示す。一般的に、図２は、ネットワークデバイス２０５が１つ以上の端末デバイス２１５と通信できるように構成および配置される、様々なコンポーネントを示している。図示の場合、３つのローカルエリアネットワーク２３５に含まれる、９つの端末デバイス２１５を含む。
【００５４】
[0074]一部の場合では、ネットワークデバイス２０５からの通信は、どの端末デバイスが通信を受信するのかを少なくとも部分的にまたは完全に示す宛先データ（例えば、宛先ＩＰアドレス）を含む。ネットワークインタラクションシステム２００は、宛先データを
処理し、適切なルーティングを促進できる、１つ以上のネットワーク間接続コンポーネント２４５および／または１つ以上のネットワーク内接続コンポーネント２５５を含み得る。
【００５５】
[0075]各ネットワーク間接続コンポーネント２４５は、複数のネットワーク２３５に接続され、（例えば、各カードが異なるネットワークに接続される）複数のネットワークカードをインストールされ得る。例えば、ネットワーク間接続コンポーネント２４５は、広域ネットワーク２７０（例えば、インターネット）と１つ以上のローカルエリアネットワーク２３５とに接続され得る。図示の場合、ネットワークデバイス２０５から任意の端末デバイスに通信を送信するために、図示のシステムでは、複数のネットワーク間接続コンポーネント２４５が通信を扱わなければならない。
【００５６】
[0076]ネットワーク間接続コンポーネント２４５が通信（または通信に対応する一式のパケット）を受信した場合、ネットワーク間接続コンポーネント２４５は、宛先に関連するネットワークに通信を送る経路の少なくとも一部分を判定できる。経路は、例えば、（例えば、ルータに格納した）ルーティングテーブルを使用して判定でき、ルーティングテーブルは、予め定義された、（例えば、別のルータから、または別のデバイスから）到着したメッセージに基づいて生成した、または学習した１つ以上のルーティングを含み得る。
【００５７】
[0077]ネットワーク間接続コンポーネント２４５の例として、ルータ２６０およびゲートウェイ２６５が挙げられる。ネットワーク間接続コンポーネント２４５（例えば、ゲートウェイ２６５）は、ネットワークシステム間またはプロトコル間で変換するように構成され得る。例えば、ゲートウェイ２６５は、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）デバイスとインターネットワークパケット交換／順次パケット交換（ＩＰＸ／ＳＰＸ）デバイスとの間の通信を促進し得る。
【００５８】
[0078]ローカルエリアネットワーク２３５で通信を受信すると、さらなるルーティングを依然として行う必要がある場合がある。スイッチ２８０またはハブ２８５などのネットワーク内接続コンポーネント２５５を介して、このようなネットワーク内ルーティングを行うことができる。各ネットワーク内接続コンポーネント２５５は、（例えば、無線またはイーサネット（登録商標）ケーブルなどを介して有線で）複数の端末デバイス２１５に接続され得る。ハブ２８５は、ハブが接続された各デバイスに対して、すべての受信した通信を繰り返すように構成され得る。次いで、各端末デバイスは、各通信を評価して、端末デバイスが宛先デバイスであるかどうか、または通信を無視するかどうかを判定できる。スイッチ２８０は、通信を宛先端末デバイスのみに選択的に導くように構成され得る。
【００５９】
[0079]一部の場合では、ローカルエリアネットワーク２３５は、複数のセグメントに分割でき、セグメントのそれぞれは、独立したファイアウォール、セキュリティ規則およびネットワークプロトコルに関連付けされ得る。ネットワーク内接続コンポーネント２５５は、セグメントのうちの１つ以上またはすべてのそれぞれに設けて、セグメント内ルーティングを促進することができる。ブリッジ２９０は、セグメント２７５間で通信をルーティングするように構成され得る。
【００６０】
[0080]ネットワーク間または内で通信を適切にルーティングするために、様々なコンポーネントが、通信内の宛先データを解析する。例えば、このようなデータは、どのネットワークに通信をルーティングするか、ネットワーク内のどのデバイスに通信をルーティングするか、またはどの通信を端末デバイスが（無視せずに）処理するかを示すことができる。しかしながら、一部の場合では、ネットワークデバイスからの通信にどの端末デバイスが参加するか（またはどのネットワークが参加するかさえ）すぐに明らかにならない。
【００６１】
[0081]例として、一式の端末デバイスが、同様のタイプの応答通信を提供するように構成され得る。これにより、どのネットワークデバイスに通信がルーティングされるかにかかわらず、ネットワークデバイスからの通信におけるクエリが同様の方式で応答され得ることが期待できる。この仮定は上位レベルで真であるが、端末デバイスに関係する様々な細部では、他のルーティングと比べて有利な特定のルーティングが生じ得る。例えば、この一式内の端末デバイスは、（例えば）どの通信チャネルがサポートされるか、ネットワークデバイスに対する地理的および／またはネットワーク的近接性、および／または関連するエージェントの特性（例えば、知識ベース、経験、話す言語、利用可能性、一般的な性格または感情など）に関して、互いに異なり得る。したがって、ルーティングの選択により、ネットワークデバイス通信により正確および／または完全に応答するより高速な応答を促進し得る。複雑なのは、ネットワークデバイスを端末デバイスにマッピングする静的ルーティングが、通信トピック、チャネルタイプ、エージェント利用可能性などの変動を考慮に入れることを失敗し得るということである。
【００６２】
[0082]図３Ａ〜図３Ｃは、接続管理システムを含むネットワークインタラクションシステム３００ａ〜３００ｃの他の実施形態のブロック図を示す。図示のシステム３００ａ〜３００ｃのそれぞれは、簡潔にするため、２つのローカルエリアネットワーク２３５のみを示しているが、各実施形態を拡張して、ローカルエリアネットワークの数を拡大できることを理解できよう。システム３００ａ〜３００ｃのそれぞれが接続管理システム３５０を含み、接続管理システム３５０は、どの端末デバイスがネットワークデバイス２０５と通信するかを識別する、接続チャネルを確立および管理（例えば、維持または解放）する、ある交換において通信を再ルーティングかどうか、いつするかを判定するなどを行うことができる。このように、接続管理システム３５０は、通信、エージェント利用可能性、端末デバイスまたはエージェントの能力などを動的かつリアルタイムで評価して、ルーティング判定に影響を及ぼすように構成され得る。
【００６３】
[0083]図３Ａでは、接続管理システム３５０は、ネットワークデバイス２０５とリモートサーバ３４０とのそれぞれと連携する（例えば、接続管理システム３５０ａは、ネットワークデバイス２０５と連携し、接続管理システム３５０ｂは、リモートサーバ３４０と連携する）。例えば、接続管理システム３５０ａおよび／または接続管理システム３５０ｂは、それぞれ、ネットワークデバイス２０５とリモートサーバ３４０とのそれぞれにアプリケーションとしてインストールまたは格納され得る。アプリケーション（複数可）を実行することにより、例えば、ネットワークデバイス２０５とリモートサーバ３４０との間の通信を促進して、ネットワークデバイス２０５との通信交換に参加するように選択された端末デバイス２１５を識別できる。本明細書で開示される１つ以上の因子に基づいて、識別を行うことができる（例えば、利用可能性、エージェントまたは端末デバイスの知識ベースに関する通信のトピック／詳細度の間のマッチング、予測した遅延、チャネルタイプ利用可能性など）。
【００６４】
[0084]クライアントデバイス３３０は、ルーティング判定を行う仕方を示すクライアントデータを供給できる。例えば、このようなデータは、特定の特性に重み付けもしくはマッチングする仕方に関する指示、または（例えば、負荷分散または予測した応答遅延に関する）制約もしくはバイアスを含み得る。クライアントデータはまた、いつ通信チャネルを確立（または解放）するか、またはいつ通信を異なるネットワークデバイスに再ルーティングするかに関係する仕様を含み得る。クライアントデータを使用して、通信のルーティング、チャネルの確立、管理または解放、通信の再ルーティング、通信のカテゴリ化などのための規則などの、様々なクライアント固有の規則を規定できる。
【００６５】
[0085]リモートサーバ３４０上で稼働する接続管理システム３５０ｂは、どの通信チャ
ネルをサポートするか、ネットワークデバイスに対する地理的および／もしくはネットワーク的な近接性、端末デバイスとの通信遅延および／もしくは安定性、端末デバイスのタイプ、端末デバイスの能力、端末デバイス（またはエージェント）が所与のネットワークデバイス（またはユーザ）と以前通信したかどうか、ならびに／または関連するエージェントの特性（例えば、知識ベース、経験、話す言語、利用可能性、一般的な性格または感情など）などの、端末デバイスに関する（例えば、所与のクライアントに関する）様々な指標を監視できる。したがって、接続管理システム３５０ｂは、ルーティングを選択して、指標に基づいて、ネットワークデバイス通信により正確および／または完全に応答するより高速な応答を促進できるようにされ得る。
【００６６】
[0086]図３Ａに示す例では、ネットワークデバイス２０５とリモートサーバ３４０との間の通信交換によって、宛先アドレスの早期識別が促進され得る。次いで、ネットワークデバイス２０５は、宛先アドレスを使用して、後続の通信を導き得る。例えば、ネットワークデバイス２０５は、最初の通信を（例えば、１つ以上のネットワーク間接続および広域ネットワークを介して）リモートサーバ３４０に送信してよく、リモートサーバ３４０は、１つ以上の対応するクライアントを識別してよい。次いで、リモートサーバ３４０は、１つ以上の対応するクライアントに関連する一式の端末デバイスを識別し、これらの端末デバイスための指標を収集してよい。端末デバイスを選択して通信交換に含まれるように、指標を（例えば、リモートサーバ３４０によって）評価でき、端末デバイスに関する情報（例えば、ＩＰアドレス）をネットワークデバイス２０５に送信できる。一部の実施形態では、リモートサーバ３４０は、様々な端末デバイスのための指標を連続的または定期的に収集および評価し、評価結果をデータストアに保存してもよい。このような実施形態では、１つ以上の対応するクライアントに関連する一式の端末デバイスを識別すると、リモートサーバ３４０は、データストアからの保存した評価結果にアクセスし、保存した評価結果に基づいて端末デバイスを選択して、通信交換に含まれるようにし得る。
【００６７】
[0087]図３Ｂでは、接続管理システム３５０は、中継および／または宛先アドレスとして機能するように構成され得る。よって、例えば、一式のネットワークデバイス２０５は、通信を送信し、それぞれが接続管理システム３５０を宛先として識別してよい。接続管理システム３５０は、各通信を受信でき、同時に、一式の端末デバイスを（例えば、各端末デバイスのための指標を生成するために）監視できる。監視および規則に基づいて、接続管理システム３５０は、接続管理システム３５０が各通信を中継し得る端末デバイス２１５を識別できる。実施形態に応じて、端末デバイス通信は、さらに中継するため、（例えば、接続管理システム３５０の）一定の宛先に同様に導かれてもよいし、端末デバイスは、対応するネットワークデバイスと直接通信し始めてもよい。これらの実施形態は、効率的なルーティングおよび徹底的な通信の監視を促進できる。
【００６８】
[0088]図３Ｃに示す実施形態は、図３Ｂと同様のものである。しかしながら、一部の実施形態では、接続管理システム３５０は、ネットワーク内コンポーネント（例えば、端末デバイス、ネットワーク内接続など）に直接接続される。
【００６９】
[0089]図３Ａ〜図３Ｃの多くの変形が企図されていることが理解されよう。例えば、接続管理システム３５０は、接続コンポーネント（例えば、ネットワーク間接続コンポーネント２４５またはネットワーク内接続コンポーネント２５５）と連携して、接続管理システム３５０（またはそれらの一部）に対応するアプリケーションがコンポーネント上にインストールされるようにし得る。アプリケーションは、例えば、独立に、または（例えば、１つ以上の他のコンポーネント、ネットワークデバイスまたはリモートサーバ上で実行する）１つ以上の同様または相補的なアプリケーションと通信することによって行ってよい。
【００７０】
[0090]図４は、接続コンポーネントの動作のプロトコルスタックマッピング４００を表したものを示す。より具体的には、図４は、様々な接続コンポーネントに対応する、開放型システム間インタラクション（ＯＳＩ）モデルにおける動作層を明らかにする。
【００７１】
[0091]ＯＳＩモデルは、複数の論理層４０２〜４１４を含み得る。層は、順序付けられたスタックで配置されて、層４０２〜４１２は、それぞれ、上位のレベルのサービス要求に応じ、層４０４〜４１４は、それぞれ、下位層に対してサービス要求を行うようにする。ＯＳＩモデルは、物理層４０２を含む。物理層４０２は、物理的（例えば、電気的、光学的または電磁式）通信のパラメータを定義できる。物理層４０２はまた、接続を確立および解放するためのプロトコルなどの接続管理プロトコルを定義する。物理層４０２は、フロー制御プロトコルおよび伝送モードをさらに定義できる。
【００７２】
[0092]リンク層４０４は、ノード間通信を管理できる。リンク層４０４は、誤り（例えば、物理層４０２における伝送エラー）を検出および訂正し、アクセス許可を管理できる。リンク層４０４は、メディアアクセス制御（ＭＡＣ）層と論理リンク制御（ＬＬＣ）層とを含み得る。
【００７３】
[0093]ネットワーク層４０６は、同じネットワーク内のノード間での（例えば、可変長の）データの転送を（例えばデータグラムとして）調整できる。ネットワーク層４０６は、論理ネットワークアドレスを物理マシンアドレスに変換できる。
【００７４】
[0094]トランスポート層４０８は、送信および受信の品質を管理できる。トランスポート層４０８は、伝送制御プロトコル（ＴＣＰ）などのデータを転送するためのプロトコルを提供できる。トランスポート層４０８は、伝送用にデータパケットのセグメント化／セグメントの再結合を行うことができ、また層４０２〜４０６で発生する伝送誤りを検出および考慮できる。セッション層４１０は、ローカルアプリケーションとリモートアプリケーションとの間の接続を開始、維持および終了できる。セッションは、リモートプロシージャインタラクションの一部として使用してもよい。プレゼンテーション層４１２は、アプリケーションまたはネットワーク層によって受け入れられることが分かっているデータタイプに基づいて、データを暗号化、復号および書式整形できる。
【００７５】
[0095]アプリケーション層４１４は、通信を制御または管理するソフトウェアアプリケーションと相互作用できる。このようなアプリケーションを介して、アプリケーション層４１４は、（例えば）宛先、ローカルリソース状態もしくは利用可能性、および／または通信コンテンツもしくはフォーマットを識別できる。様々な層４０２〜４１４は、利用可能および適用可能であれば、他の機能を行うことができる。
【００７６】
[0096]ネットワーク内接続コンポーネント４２２、４２４は、物理層４０２およびリンク層４０４で動作するものとして示されている。より具体的には、ハブは、物理層で動作して、通信の受信および送信に関連して動作を制御できるようにできる。ハブは、通信に対処する、またはデータをフィルタする能力を欠くため、ハブが持つ上位のレベルで動作する能力は皆無かそれに近い。その一方、スイッチは、リンク層４０４で動作できるが、これは、スイッチがアドレス（例えば、ＭＡＣアドレス）に基づいて、通信フレームをフィルタリングできるためである。
【００７７】
[0097]その一方、ネットワーク間接続コンポーネント４２６、４２８は、より上位のレベル（例えば、層４０６〜４１４）で動作するものとして示されている。例えば、ルータは、アドレス（例えば、ＩＰアドレス）に基づいて、通信データパケットをフィルタできる。ルータは、アドレスに基づいて、パケットを特定のポートに転送して、パケットを適切なネットワークに導くことができる。ゲートウェイは、ネットワーク層以上で動作し、
同様のフィルタリングおよび誘導を行い、（例えば、プロトコルまたはアーキテクチャを越える）データの変換をさらに行うことができる。
【００７８】
[0098]接続管理システム４５０は、様々な実施形態において、様々な層のうちの１つ以上、すべて、またはいずれかと相互作用できる、および／または様々な層のうちの１つ以上、すべて、またはいずれかで動作できる。例えば、接続管理システム４５０は、ハブと相互作用して、ハブがどの端末デバイスと通信するかを動的に調整するようにできる。別の例として、接続管理システム４５０は、ブリッジ、スイッチ、ルータまたはゲートウェイと通信して、コンポーネントがどの端末デバイスを宛先（例えば、ＭＡＣ、論理または物理）アドレスとして選択するかに影響を及ぼすことができる。さらなる例として、接続管理システム４５０は、トランスポート層４０８でのデータパケットのセグメント化、セッション層４１０でのセッション持続時間、ならびに／またはプレゼンテーション層４１２での暗号化および／もしくは圧縮を監視、制御または誘導できる。一部の実施形態では、接続管理システム４５０は、特定の層上で動作する機器（例えば、リンク層４０４上で動作するスイッチ）と通信を交換する（例えば、コマンドを送信する）ことによって、（例えば、ネットワークデバイスと端末デバイスとの間の）既存の通信を特定の方式でルーティングまたは修正することによって、および／または既存の通信に基づいて、特定の情報（例えば、新しい宛先アドレス）を含む新しい通信を生成することによって様々な層と相互作用できる。このように、接続管理システム４５０は、様々なデバイスとのインタラクションを介して、および／または様々なプロトコルスタック層で動作することに影響を及ぼすことを介して、通信ルーティングおよびチャネル確立（または維持または終了）に影響を及ぼすことができる。
【００７９】
[0099]図５は、一実施形態によるマルチデバイス通信交換システム５００を示す。システム５００は、様々なタイプの通信チャネルを介して様々なタイプの端末デバイスと通信するように構成されるネットワークデバイス５０５を含む。
【００８０】
[0100]図示の場合では、ネットワークデバイス５０５は、セルラーネットワークを介して（例えば、基地局５１０を介して）通信を送信できる。通信は、動作中のネットワーク５１５にルーティングできる。動作中のネットワーク５１５は、通信を受信し、通信に対してどの端末デバイスが応答するかを識別する、接続管理システム５２０を含み得る。このような判定は、（例えば、クライアントを示すコンテンツ解析またはユーザ入力に基づいて）この通信が関連するクライアントを識別することと、クライアントに関連する１つ以上の端末デバイスのそれぞれについて１つ以上の指標を判定することとによって決まり得る。例えば、図５では、端末デバイス５３０ａ〜５３０ｃの各クラスタは、異なるクライアントに対応し得る。端末デバイスは、地理的に同じ位置にあってもよいし、分散配置されていてもよい。指標は、保存もしくは学習したデータおよび／または（例えば、利用可能性に基づく）リアルタイム監視に基づいて判定されてよい。
【００８１】
[0101]接続管理システム５２０は、１つ以上のルータ５２５または他のネットワーク間もしくはネットワーク内接続コンポーネントを介して、様々な端末デバイスと通信できる。接続管理システム５２０は、１つ以上のデータストアにおいて、通信、端末デバイス動作、クライアント規則、および／またはユーザ関連アクション（例えば、オンラインアクティビティ、アカウントデータ、購入履歴など）からのまたは通信に関するデータを収集、解析および／または保存してよい。このようなデータは、通信のルーティングに影響を及ぼし得る。
【００８２】
[0102]特に、様々な他のデバイスは、通信のルーティングおよび／または処理に影響を及ぼすために、さらに使用され得る。例えば、図示の場合では、接続管理システム５２０はまた、ウェブサーバ５４０に接続される。このように、接続管理システム５２０は、製
品の技術的詳細、ニュース、現在の製品提供、現在または予測される天気などの着目するデータを回収できる。
【００８３】
[0103]ネットワークデバイス５０５はまた、ウェブサーバ（例えば、ストリーミングウェブサーバ５４５を含む）に接続され得る。一部の場合では、このようなサーバとの通信には、接続管理システム５２０と通信交換を開始する最初のオプションが提供される。例えば、ネットワークデバイス５０５は、特定のウェブページを訪問する際、通信の機会が利用可能であり、そのようなオプションを提示できることを検出できる。
【００８４】
[0104]通信システム５００の１つ以上の要素はまた、ソーシャルネットワーキングサーバ５５０に接続され得る。ソーシャルネットワーキングサーバ５５０は、様々なユーザデバイスから受信したデータを集約できる。よって、例えば、接続管理システム５２０は、所与のトピックに対する一般的な（またはユーザ固有の）感情を予測できる、または所与のユーザもしくは所与のクラスのユーザを予測できる。
【００８５】
[0105]図６は、接続管理システム６００の一実施形態のブロック図を示す。メッセージ受信インターフェース６０５は、メッセージを受信できる。一部の場合では、メッセージは、例えば、ネットワークデバイスまたは端末デバイスなどの（例えば、接続管理システム６００とは別々に収容された、または同じハウジング内に収容された）送信元デバイスが送信した通信の一部として受信され得る。一部の場合では、通信は、一連の通信または通信交換の一部であってよく、これには、２つのデバイス（例えば、ネットワークデバイスおよび端末デバイス）の間でルーティングされる一連のメッセージまたはメッセージ交換を含み得る。このメッセージまたは通信交換は、デバイス間のインタラクションの一部であり得る、および／またはデバイス間のインタラクションを定義し得る。通信チャネルまたは動作中のチャネルは、デバイス間のルーティングおよび通信交換を促進するために使用される、１つ以上のプロトコル（例えば、ルーティングプロトコル、タスク割り当てプロトコルおよび／またはアドレス指定プロトコル）を含み得る。
【００８６】
[0106]一部の場合では、メッセージは、ローカルまたはリモートのユーザインターフェースで受信した入力に基づいて生成されたメッセージを含み得る。例えば、メッセージは、ボタンもしくはキーの押下または録音された音声信号に基づいて生成されたメッセージを含み得る。１つの場合では、メッセージは、ネットワークデバイスが特定のアプリページもしくはウェブページを提示したこと、または特定の入力コマンド（例えばキーシーケンス）を提供したことを検出すると生成されるメッセージなどの、自動的に生成されたメッセージを含む。メッセージは、通信交換を開始するものなどの、命令または要求を含み得る。
【００８７】
[0107]一部の場合では、メッセージは、クライアントの識別子を含み得る、またはこれに関連付けられ得る。例えば、メッセージは、クライアント（またはクライアントに関連付けられたデバイス）を明示的に識別できる、メッセージは、クライアントに関連付けられたウェブページもしくはアプリページを含むことができる、またはこれに関連付けることができる、メッセージは、クライアントに関連付けられた宛先アドレスを含むことができる、またはこれに関連付けることができる、あるいはメッセージは、クライアントに関連付けられた品目（例えば、製品）もしくはサービス（例えば、クライアントが販売用に提供している、クライアントが販売中である、またはクライアントがサービスを提供するサービスである）の識別情報を含むことができる、またはこれに関連付けることができる。例として、ネットワークデバイスは、特定のクライアントのアプリページを提示してよく、これは、通信をエージェントに送信するオプションを提供し得る。メッセージに対応するユーザ入力を受信すると、メッセージおよび特定のクライアントの識別子を含むように通信が生成され得る。
【００８８】
[0108]処理エンジン６１０は、受信した通信および／またはメッセージを処理し得る。処理には、例えば、１つ以上の特定のデータ要素（例えば、メッセージ、クライアント識別子、ネットワークデバイス識別子、アカウント識別子など）の抽出を含み得る。処理は、（例えば、特定のデバイスタイプ、オペレーティングシステム、通信チャネルタイプ、プロトコルおよび／またはネットワークと互換性を持つため）フォーマットまたは通信タイプの変換を含み得る。
【００８９】
[0109]メッセージ評価エンジン６１５は、（例えば抽出または受信した）メッセージを評価し得る。評価は、例えば、メッセージに関する１つ以上のカテゴリまたはタグの識別を含み得る。カテゴリまたはタグタイプの例として、（例えば）トピック、感情、複雑度および緊急性を挙げることができる。メッセージのカテゴリ化とタグ付けとの間の差は、カテゴリは（例えば、既定の一式のカテゴリオプションに従って）制限され得るが、タグはオープンであり得るということである。トピックは、例えば、製品、サービス、技術的課題、使用に関する質問、苦情、返金請求または購買要求を含み得る。カテゴリまたはタグは、例えば、（例えば、キーワード、文の構造、繰り返された単語、句読文字および／または冠詞でない単語を識別することによって）メッセージ、（例えば、１つ以上のカテゴリを選択した）ユーザ入力、および／またはメッセージ関連の統計値（例えば、タイピング速さおよび／または応答遅延）の意味解析に基づいて判定できる。
【００９０】
[0110]一部の場合では、メッセージ評価エンジン６１５は、メッセージに関する指標を判定できる。指標は、例えば、文字、単語、大文字、すべての大文字または特定の文字もしくは句読点（例えば、感嘆符、疑問符および／または終止符）のインスタンスの数を含み得る。指標は、感嘆符（または疑問符）で終わる文の割合、大文字化されている単語の割合などの比率を含み得る。
【００９１】
[0111]メッセージ評価エンジン６１５は、メッセージ、メッセージ指標および／またはメッセージ統計値をメッセージデータストア６２０に保存できる。各メッセージはまた、他のデータ（例えば、対応する送信元デバイス、宛先デバイス、ネットワークデバイス、端末デバイス、クライアント、１つ以上のカテゴリ、１つ以上の段階および／またはメッセージ関連の統計値を識別するデータなどのメタデータ）に関連付けされて保存され得る。接続管理システム６００の様々なコンポーネント（例えば、メッセージ評価エンジン６１５および／またはインタラクション管理エンジン６２５）は、メッセージデータストア６２０に問い合わせて、クエリ応答メッセージ、メッセージ指標および／またはメッセージ統計値を回収できる。
【００９２】
[0112]インタラクション管理エンジン６２５は、どのデバイスに通信をルーティングするかと、受信デバイスと送信デバイスとの通信の仕方とを判定できる。これらの判定のそれぞれは、例えば、特定のネットワークデバイス（または特定のユーザに関連する任意のネットワークデバイス）が一式の端末デバイスにおける端末デバイス（例えば、接続管理システム６００に関連する任意の端末デバイスまたは１つ以上の特定のクライアントに関連する任意の端末デバイス）と以前通信したかどうかによって決まり得る。
【００９３】
[0113]一部の場合では、ネットワークデバイス（または妥当なユーザまたはアカウントに関連する他のネットワークデバイス）が所与の端末デバイスと（例えば、クライアントに関する事柄に関して）以前通信している場合、通信ルーティングは、一般的に、同じ端末デバイス寄りにバイアスをかけられ得る。ルーティングに影響を及ぼし得る他の因子は、例えば、以前の通信に関する推定もしくは識別されたユーザもしくはエージェント感情、現在の通信のトピック（例えば、加えて、現在の通信のトピックが以前の通信のトピックおよび／または１つ以上の端末デバイスまたはエージェントに関連する知識ベースに関
連する範囲）、端末デバイス（または対応するエージェント）が利用可能であるかどうか、および／または端末デバイスの予測した応答遅延を含み得る。このような因子は、絶対的または相対的に、他の端末デバイスに対応する同様の指標とみなされ得る。再ルーティング規則（例えば、クライアント固有または一般的規則）は、エージェントの一貫性に先んずるかどうかを判定するために、このような因子を評価および重み付けする仕方を示し得る。
【００９４】
[0114]ネットワークデバイス（または同じユーザまたはアカウントに関連する他のネットワークデバイス）が、所与の端末デバイスと（例えば、クライアントに関係する事柄に関して）これまで通信していない場合、端末デバイス選択は、例えば、様々なエージェントの知識ベースが通信トピックに対応する範囲、所与の時間および／またはチャネルタイプにおける様々なエージェントの利用可能性、（例えば、クライアントに関連する）端末デバイスのタイプおよび／もしくは能力、ユーザとエージェントとの間の言語マッチ、ならびに／または性格分析などの因子に基づいて行われ得る１つの場合では、規則は、これらのような１つ以上の因子に対するサブスコアと、各スコアに割り当てるウェイトとを判定する仕方を識別できる。重み付けしたサブスコアを組み合わせる（例えば、加算する）ことによって、各エージェントのスコアを判定できる。次いで、（例えば、高いまたは最も高いスコアを選択するように）端末デバイスのスコアを比較することによって、端末デバイス選択を行うことができる。
【００９５】
[0115]デバイスが通信する仕方を判定することに関して、インタラクション管理エンジン６２５は、（例えば）端末デバイスが通信に（例えば）電子メール、オンラインチャット、ＳＭＳメッセージ、音声電話、ビデオチャットなどを介して応答するかどうかを判定できる。通信タイプは、例えば、（例えば、クライアントまたはユーザによって少なくとも部分的に規定された）通信タイプ優先順位リスト、（例えば、一貫性を促進するために）ネットワークデバイスから以前に受信した通信のタイプ、受信したメッセージの複雑度、ネットワークデバイスの能力、および／または１つ以上の端末デバイスの利用可能性に基づいて選択され得る。明らかに、一部の通信タイプは、（例えば、迅速なメッセージ応答が期待される）リアルタイム通信となる一方、その他は、（例えば、（例えば、数分または数時間の）メッセージ間の遅延が受容される）非同期通信となり得る。
【００９６】
[0116]さらに、インタラクション管理エンジン６２５は、２つのデバイス間の連続チャネルを確立、使用または終了すべきかどうかを判定できる。連続チャネルは、ネットワークデバイスから指定された端末デバイスへの将来の通信のルーティングを促進するように構成され得る。このバイアスは、一連のメッセージにわたっても（例えば、数日、数週または数ヶ月）持続し得る。一部の場合では、（例えば、エージェントを識別する）連続チャネルの表現を、ネットワークデバイス上で提示される提示に含むことができる。このようにして、ユーザは、効率を高めるために通信が一貫してルーティングされることを理解できる。
【００９７】
[0117]１つの場合、本明細書で説明される１つ以上の因子と（例えば、１つ以上の因子のそれぞれのウェイトを含む）規則とを使用してスコアを生成して、所与のネットワークデバイスおよび端末デバイスに対応する接続スコアを判定できる。スコアは、所与の通信または一連の通信全体または固有のマッチに関係し得る。よって、例えば、スコアは、所与の端末デバイスがネットワークデバイス通信に応答するのに向いていると予測される程度を反映し得る。一部の場合では、スコア解析を使用して、所与の通信をルーティングするための端末デバイスのそれぞれ、および接続チャネルを確立、使用または終了かどうかを識別できる。スコア解析を使用して、ルーティング決定とチャネル決定との両方に対処する場合、各決定に関連するスコアは、同じ、同様または異なる方式で判定され得る。
【００９８】
[0118]よって、例えば、スコアが、ある程度の長期マッチを予測するスコアなのか、特定のメッセージクエリに応答するスコアなのかに応じて、異なる因子を考慮してよいことが理解されよう。例えば、前者の場合、全体的なスケジュールおよびタイムゾーンの考慮が重要であり得るが、後者の場合、即時利用可能性がより高く重み付けされ得る。単一のネットワークデバイス／端末デバイスの組み合わせについてスコアを判定することもできるし、複数のスコアを判定し、複数のスコアのそれぞれが、所与のネットワークデバイスと異なる端末デバイスとの間のマッチを特徴付けるものとすることもできる。
【００９９】
[0119]例として、潜在的な通信ルーティングのために、クライアントに関連する一式の３つの端末デバイスを評価できる。特定の通信に関するマッチに関連するそれぞれについて、スコアを生成できる。最初の２つの端末デバイスのそれぞれは、通信を送信したネットワークデバイスと以前通信したものであり得る。ネットワークデバイスからの入力は、第１のデバイスとの通信（複数可）によるインタラクションへ満足を示したものであり得る。よって、（規則に従って計算した）第１、第２および第３のデバイスの過去の相互作用のサブスコアは、それぞれ、１０、５および０であり得る。（負の満足入力は負のサブスコアとなり得る。）第３の端末デバイスのみが即時利用可能であると判定され得る。第２の端末デバイスは１５分以内に応答のために利用可能となるが、第１の端末デバイスは、次の日まで応答のために利用可能とならないと予測される場合もある。よって、第１、第２および第３のデバイスの高速応答サブスコアは、１、３および１０であり得る。最後に、（端末デバイスに関連する）エージェントが通信におけるトピックに関して知っている程度が予測され得る。第３の端末デバイスに関連するエージェントは、他の２つのデバイスに関連するエージェントよりも知識が豊富であると判定し、サブスコアを３、４および９とし得る。この例では、規則は、重み付けまたは正規化パラメータを含まず（ただし、他の場合では含むこともできる）、スコアは、１４、１１および１９となる。よって、規則は、メッセージが、最も高いスコアであるデバイス、すなわち第３の端末デバイスにルーティングされることを示し得る。特定の端末デバイスへのルーティングが失敗であった場合、メッセージは、その次に最も高いスコアのデバイスへと順次ルーティングされ得る。
【０１００】
[0120]スコアを１つ以上の絶対的または相対的な閾値と比較してもよい。例えば、一式の端末デバイスについてのスコアを互いに比較して、高いスコアを識別して、通信をルーティングさせ得る端末デバイスを選択できる。別の例として、スコア（例えば、高いスコア）を１つ以上の絶対的な閾値と比較して、端末デバイスと連続チャネルを確立するかどうかを判定できる。連続チャネルを確立するための全体的な閾値は、所与の一連のメッセージにおける通信を一貫してルーティングための閾値よりも高くてよい（が、必須ではない）。全体的な閾値と、通信を一貫してルーティングするかどうかを判定するための閾値との間のこの差は、チャネルの利用が拡大している連続チャネルの状況では、強いマッチが重要であることによる。一部の実施形態では、連続チャネルを使用するための全体的な閾値は、連続チャネルを確立するための閾値および／または所与の一連のメッセージにおいて通信を一貫してルーティングするための閾値よりも低くてもよい（が、必須ではない）。
【０１０１】
[0121]インタラクション管理エンジン６２５は、アカウントエンジン６３０と様々な状況で相互作用できる。例えば、アカウントエンジン６３０は、アカウントデータストア６３５でネットワークデバイスまたは端末デバイスの識別子を調べて、デバイスに対応するアカウントを識別してもよい。さらに、アカウントエンジン６３０は、以前の通信交換（例えば、時間、関与した他のデバイス（複数可）、チャネルタイプ、解決段階、トピック（複数可）および／または関連クライアント識別子）、接続チャネル（例えば、１つ以上のクライアントのそれぞれについて、なんらかのチャネルが存在するかどうか、各チャネルに関連する端末デバイス、確立時間、使用頻度、最終使用日の日付、なんらかのチャネ
ル制約および／またはサポートされる通信のタイプを示す）、ユーザもしくはエージェントの好みまたは制約（例えば、端末デバイス選択、レスポンス遅延、端末デバイス一貫性、エージェントの専門知識および／または通信タイプの好みもしくは制約に関係する）、ならびに／またはユーザもしくはエージェントの特性（例えば、年齢、話す言語もしくは好む言語（複数可）、地理学的場所、関心など）に関するデータを維持できる。
【０１０２】
[0122]さらに、インタラクション管理エンジン６２５は、アカウントエンジン６３０に様々な接続チャネルアクションを通知して、アカウントデータストア６３５が更新されて、現在のチャネルデータを反映できるようにし得る。例えば、チャネルを確立すると、インタラクション管理エンジン６２５は、アカウントエンジン６３０に確立を通知し、ネットワークデバイス、端末デバイス。アカウントおよびクライアントのうちの１つ以上を識別できる。続いて、アカウントエンジン６３０は、（一部の場合では）チャネルの存在をユーザに通知して、ユーザがエージェントの一貫性が得られたことに気付くことができるようにし得る。
【０１０３】
[0123]インタラクション管理エンジン６２５は、クライアントマッピングエンジン６４０とさらに相互作用でき、クライアントマッピングエンジン６４０は、通信を１つ以上のクライアント（および／または関連ブランド）にマッピングできる。一部の場合では、ネットワークデバイス自体から受信した通信は、クライアントに対応する識別子（例えば、クライアント、製品、サービス、ウェブページまたはアプリページの識別子）を含む。識別子は、（例えば、クライアントマッピングエンジン６４０が検出し得る）メッセージの一部として含まれ得る、またはメッセージを含む通信における他のデータとして含まれ得る。次いで、クライアントマッピングエンジン６４０は、クライアントデータストア６４５内の識別子を調べて、クライアントおよび／またはクライアントの識別子に関する追加的なデータを回収し得る。
【０１０４】
[0124]一部の場合では、メッセージは、いかなるクライアントにも特に対応しない場合もある。例えば、メッセージは、一般クエリを含み得る。クライアントマッピングエンジン６４０は、例えば、メッセージに対して意味解析を行い、１つ以上のキーワードを識別し、キーワード（複数可）に関連する１つ以上のクライアントを識別し得る。一部の場合では、単一のクライアントが識別される。一部の場合では、複数のクライアントが識別される。次いで、各クライアントの識別がネットワークデバイスを介して提示されて、ユーザが（例えば、関連する端末デバイスを介して）通信するクライアントを選択できるようにする。
【０１０５】
[0125]クライアントデータストア６４５は、クライアントに関連する１つ以上の端末デバイス（および／またはエージェント）の識別情報を含み得る。端末ルーティングエンジン６５０は、ルーティング判定に影響を及ぼすために、１つ以上またはすべてのそのような端末デバイス（および／またはエージェント）のそれぞれに関するデータを回収または収集できる。例えば、端末ルーティングエンジン６５０は、端末データストア６５５を維持でき、端末データストア６５５は、端末デバイスのデバイスタイプ、オペレーティングシステム、通信タイプ能力、インストール済のアプリケーションアクセサリ、地理的場所および／または識別子（例えば、ＩＰアドレス）などの情報を保存できる。情報はまた、経験レベル、地位、スキルレベル、知識ベース（例えば、エージェントが知っているトピックおよび／または様々なトピックに関する知識レベル）、性格指標、労働時間、話す言語（複数可）および／または人口統計学的情報などのエージェント情報を含み得る。一部の情報は、動的に更新できる。例えば、端末デバイスが利用可能かどうかを示す情報は、（例えば）端末デバイスからの通信（例えば、デバイスがスリープ状態であるかどうか、電源がオンであるかオフであるか、アイドル状態かアクティブ状態かを識別する、またはある期間内に入力が受信されたかどうかを識別する）、通信ルーティング（例えば、端末
デバイスが通信交換の一部に含まれているか、これに割り当てられているかを示す）、または通信交換が終了もしくは開始したことを示す、ネットワークデバイスもしくは端末デバイスからの通信に基づいて動的に更新され得る。
【０１０６】
[0126]様々な状況において、１つ以上の通信交換に関与していることは、端末デバイスが別の通信交換への関与に利用できないことを必ずしも示すものではないことが理解されよう。通信タイプ（例えば、メッセージ、電子メール、チャット、電話）、クライアントが特定もしくはユーザが特定した目標応答時間、および／またはシステム負荷（例えば、一般的またはユーザに関する）などの様々な因子が、端末デバイスがどのくらいの数の交換に関与し得るかに影響を及ぼし得る。
【０１０７】
[0127]インタラクション管理エンジン６２５が、端末デバイスを通信交換または接続チャネルに含まれるように識別した場合、インタラクション管理エンジン６２５は、端末ルーティングエンジン６５０に通知でき、端末ルーティングエンジン６５０は、宛先（例えば、ＩＰ）アドレス、デバイスタイプ、プロトコルなどの、端末デバイスに関する任意の関連データを端末データストア６５５から回収し得る。次いで、処理エンジン６１０は、（一部の場合では）メッセージを含む通信を修正、または新しい通信（メッセージを含む）を生成して、特定のフォーマットを有する、特定のプロトコルに準拠するなどにし得る。一部の場合では、新しいまたは修正されたメッセージは、ネットワークデバイスに対応するアカウントデータ、メッセージ記録および／またはクライアントデータなどの追加的なデータを含み得る。
【０１０８】
[0128]次いで、メッセージ送信インターフェース６６０は、通信を端末デバイスに送信できる。送信は、例えば、別個のハウジングに収容されたデバイスへの有線または無線送信を含み得る。端末デバイスは、同じまたは異なるネットワーク（例えば、ローカルエリアネットワーク）の端末デバイスを接続管理システム６００として含み得る。したがって、通信を端末デバイスに送信することは、通信をネットワーク間またはネットワーク内接続コンポーネントに送信することを含み得る。
【０１０９】
[0129]図７は、ユーザデバイス７０２、７０４、７０６がウェブページ７２０にアクセスできる、ウェブページアクセス環境７００を示す概略図である。一部の実施形態では、本明細書で開示されるシステムおよび方法は、単一のコンピューティングデバイス（例えば、そのコンピュータ自体に置かれたウェブサイトにアクセスするコンピュータ）に収容されたウェブページアクセス環境７００上で使用できる。より一般的には、ウェブページアクセス環境７００は、複数のコンピューティングデバイスを含むことができ、以下、そうした意味で記載される。
【０１１０】
[0130]ユーザデバイス７０２、７０４、７０６は、第１のタイプの携帯電話７０２と、第２のタイプの携帯電話７０４と、デスクトップコンピュータ７０６とを含み得る。家庭用ゲーム機、ラップトップ、タブレットコンピュータおよびウェブページをアクセスおよび／またはロードできる任意の他のデバイスなどの、ウェブページにアクセスできる他のユーザデバイスも使用できる。ユーザデバイス７０２、７０４、７０６は、（例えば、ユニフォームリソースロケータ（ＵＲＬ）またはインターネットプロトコル（ＩＰ）アドレスを入力することによって）クラウド７０８を介してウェブページ７２０にアクセスできる。クラウド７０８は、ローカルエリアネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含むコンピュータの任意のネットワークであり得る。一部の実施形態では、クラウド７０８は、インターネットである。
【０１１１】
[0131]ウェブページ７２０は、ウェブサーバ７１０上に保存できる。ウェブページ７２０は、ＨＴＭＬ要素ならびにウェブコード（例えば、ＪａｖａＳｃｒｉｐｔ（登録商標）
タグ）を含み得る。一部の実施形態では、ウェブページ７２０は、静的タグ７２６を含み得る。静的タグ７２６は、ウェブページ７２０をロードする間にユーザデバイス７０２、７０４、７０６によって実行されると、ユーザデバイス７０２、７０４、７０６に、コードサーバ７１２からの動的コード７２２をウェブページ７２０内へと注入させ、動的コード７２２の少なくとも一部を実行させる、命令を含み得る。コードサーバ７１２は、クラウド７０８を介してアクセス可能な別個のコンピュータとすることもできるし、コードサーバ７１２は、ウェブサーバ７１０と同じコンピュータとすることもできる。動的コード７２２は、利用可能なコード７５０を含むことができ、利用可能なコード７５０は、いくつかのウェブコード７３６、７３８、７４０を含み得る。第１のウェブコード７３６は、第１のウェブアプリケーション７４２を提示するために必要なプログラムを含むことができ、第２のウェブコード７３８は、第２のウェブアプリケーション７４４を提示するために必要なプログラムを含むことができ、第３のウェブコード７４０は、第３のウェブアプリケーション７４６を提示するために必要なプログラムを含むことができる。他の番号のウェブコード７３６、７３８、７４０も使用できる。各ウェブアプリケーション７４２、７４４、７４６は、第１のモバイルデバイス７０２用に特に作成されたバージョン、第２のモバイルデバイス７０４用に特に作成されたバージョン、第３のモバイルデバイス７０６用に特に作成されたバージョンなど、単一のウェブアプリケーションの異なるバージョンを表すことができる。
【０１１２】
[0132]一部の実施形態では、静的タグ７２６は、ユーザデバイス７０２、７０４、７０６が実行すると、ユーザデバイス７０２、７０４、７０６に、因子にアクセスさせる、コードを含み得る。上述のように、因子は、ユーザデバイス固有属性７１４、７１６、７１８またはウェブページ７２０からのコンテンツに基づき得る。静的タグ７２６はまた、ユーザデバイス７０２、７０４、７０６が実行すると、ユーザデバイスに、利用可能なコード７５０から望ましいウェブコード７３６、７３８、７４０を選択させる、１つ以上の規則を含み得る。
【０１１３】
[0133]一部の実施形態では、動的コード７２２は、ユーザデバイス７０２、７０４、７０６が実行すると、ユーザデバイス７０２、７０４、７０６に、因子にアクセスさせる、コードを含む。動的コード７２２はまた、場合により、ユーザデバイス７０２、７０４、７０６が実行すると、ユーザデバイスに、利用可能なコード７５０から望ましいウェブコード７３６、７３８、７４０を選択させる、１つ以上の規則を含み得る。
【０１１４】
[0134]一部の実施形態では、静的タグ７２６は、ユーザデバイス７０２、７０４、７０６が実行すると、ユーザデバイス７０２、７０４、７０６に、因子にアクセスさせ、因子をコードサーバ７１２に送信させる、コードを含み得る。このような実施形態では、コードサーバ７１２は、ウェブページにアクセスするユーザデバイスがどの利用可能なコード７５０を実行すべきか判定するために、因子に基づいて１つ以上の規則７２４を評価できる。１つ以上の規則７２４の評価に基づいて、コードサーバ７１２は、望ましいウェブコードのみを含む動的コード７２２を送信（例えば、注入）できる。
【０１１５】
[0135]各実施形態において、ユーザデバイス７０２、７０４、７０６は、望ましいウェブコードのみを実行し、望ましいと評価されない、いかなる他の利用可能なコード７５０も実行しない。例えば、第１のタイプの携帯電話７０２がウェブページ７２０にアクセスしロードすると、第１のタイプの携帯電話７０２は、第１のタイプの携帯電話７０２に、第１のタイプの携帯電話７０２固有のユーザデバイス固有属性７１４へアクセスさせる、（例えば、静的タグ７２６内または動的コード７２２内の）コードを実行できる。本明細書に開示される方法のいずれかにより、第１のタイプの携帯電話７０２用に特に設計された、第１のウェブアプリケーション７４２を提示するために、規則（例えば、規則７２４または規則７５２）を（例えば、第１のタイプの携帯電話７０２またはコードサーバ７１
２によって）評価して、ウェブコード７３８を第１のタイプの携帯電話７０２で実行することを判定できる。第１のタイプの携帯電話７０２は、望ましいウェブコード７３８を実行でき、第１のウェブアプリケーション７４２をユーザに提示できる。
【０１１６】
[0136]第２のタイプの携帯電話７０４が同じウェブページ７２０にアクセスしロードすると、第２のタイプの携帯電話７０４は、第２のタイプの携帯電話７０４に、第２のタイプの携帯電話７０４固有のユーザデバイス固有属性７１６へアクセスさせる、（例えば、静的タグ７２６内または動的コード７２２内の）コードを実行する。第２のタイプの携帯電話７０４用に特に設計された、第２のウェブアプリケーション７４４を提示するために、規則を評価して、ウェブコード７４０を第２のタイプの携帯電話７０４で実行することを判定できる。第２のタイプの携帯電話７０４は、望ましいウェブコード７４０を実行でき、第２のウェブアプリケーション７４４をユーザに提示できる。
【０１１７】
[0137]デスクトップコンピュータ７０６が同じウェブページ７２０にアクセスしロードすると、デスクトップコンピュータは、デスクトップコンピュータ７０６に、デスクトップコンピュータ７０６固有のユーザデバイス固有属性７１８へアクセスさせる、（例えば、静的タグ７２６内または動的コード７２２内の）コードを実行する。デスクトップコンピュータ７０６用に特に設計された、第３のウェブアプリケーション７４６を提示するために、規則を評価して、ウェブコード７４０をデスクトップコンピュータ７０６で実行することを判定できる。デスクトップコンピュータ７０６は、望ましいウェブコード７４０を実行でき、第３のウェブアプリケーション７４６をユーザに提示できる。
【０１１８】
[0138]代替的な実施形態では、ウェブページ７２０は、場合により、ウェブコード７２８、７３０、７３２からなる利用可能なコード７４８ならびに規則７３４を含み得る。このような実施形態では、コードサーバ７１２もコード注入も不要であり得る。ウェブコード７２８、７３０、７３２は、それぞれ、第１、第２および第３のウェブアプリケーション７４２、７４４、７４６に関連付けられ得る。上述のように、ユーザデバイス７０２、７０４、７０６は、規則を評価７３４し、各特定のユーザデバイス７０２、７０４、７０６について、利用可能なコード７４８のうちのどのウェブコード７２８、７３０、７３２が望ましいかを判定するために、ウェブページ７２０内に埋め込まれたコードを実行できる。
【０１１９】
[0139]上述のように、規則（例えば、規則７３４、規則７５２または規則７２４）によって評価された因子は、ウェブページ７２０のコンテンツに基づき得る。一例では、第２のタイプの携帯電話７０４は、ウェブサーバ７１０を介してウェブページ７２０にアクセスでき、ウェブサーバ７１０は、動的コード７２２を注入させる、静的タグ７２６を含む。アクセスされる因子は、ウェブページ７２０のコンテンツとすることもでき、ウェブページ７２０のコンテンツを規則（例えば、規則７５２または規則７２４）の評価で使用すると、第２のタイプの携帯電話７０４は、第２のウェブアプリケーション７４４に関連する望ましいウェブコード７３８を実行する。例えば、ウェブページ７２０は、ピンチによるズーム機能を無効化したコンテンツを含むことができ、第２のウェブアプリケーション７４４は、ピンチによるズーム機能を無効化したウェブサイト用に特に設計され得る。同じ例では、第２のタイプの携帯電話７０４は、そうではなく、代替ウェブページ７５４にアクセスでき、代替ウェブページ７５４は、ウェブサーバ７１０または別のウェブサーバ上に配置され得る。代替ウェブページ７５４は、ウェブページ７２０上で使用されるものと同じ静的タグ７２６を含み得る。しかしながら、代替ウェブページ７５４は、ピンチによるズーム機能を無効化したコンテンツを持たない場合もあるし、ピンチによるズーム機能を有効化したコンテンツを含む場合もある。同じ因子に基づいて規則（例えば、規則７５２または規則７２４）を評価した場合、規則は、代わりに、ウェブページ７５４には異なるウェブアプリケーションに関連する異なるウェブコードが望ましいことを判定し得る
。このような場合、第２のタイプの携帯電話７０４は、ウェブアプリケーション７４４ではなく、異なるウェブアプリケーションを提示する。換言すると、ウェブページ７５４およびウェブページ７２０は、単一のコンテンツ（例えば、ピンチによるズーム機能を無効化するタグ）以外は同一とすることができ、各ウェブページ７５４、７２０にアクセスする同じユーザデバイス７０２、７０４、７０６は、異なるウェブコード７３６、７３８、７４０を実行でき、その結果、どのウェブページ７５４、７２０がアクセスされたかによって、ユーザに異なるウェブアプリケーション７４２、７４４、７４６が提示される。
【０１２０】
[0140]図８は、本開示の特定の実施態様による、利用可能なコードを含むウェブページをロードする方法８００を示す流れ図である。ブロック８０２において、ユーザデバイスがウェブページにアクセスする。ユーザデバイスは、ウェブページをロードし始めることができる。ブロック８０４において、ユーザデバイスは、ユーザデバイス固有属性またはウェブページのコンテンツの要素などの因子にアクセスできる。ブロック８０６において、ユーザデバイスは、利用可能なコードから、実行する望ましいウェブコードを選択でき、このことには、ブロック８０８における規則を評価することを含み得る。ブロック８０８における規則を評価することは、ブロック８０４においてアクセスした因子に基づき得る。ブロック８１０において、ユーザデバイスは、望ましいウェブコードを実行する。
【０１２１】
[0141]図９は、本開示の特定の実施態様による、静的タグを含むウェブページをロードする方法９００を示す流れ図である。ブロック９０２において、ユーザデバイスがウェブページにアクセスする。ユーザデバイスは、ウェブページをロードし始めることができる。ブロック９０４において、ユーザデバイスは、ブロック９０６において動的コードを注入させる、静的タグを実行できる。ブロック９０８において、ユーザデバイスは、ユーザデバイス固有属性またはウェブページのコンテンツの要素などの因子にアクセスできる。一部の実施形態では、ブロック９０８において因子にアクセスすることは、ブロック９０６において動的コードを注入することの前に行われ得る。ブロック９１０において、ユーザデバイスは、実行する望ましいウェブコードを選択でき、このことには、ブロック９１２における規則を評価することを含み得る。ブロック９１２における規則を評価することは、ブロック９０８においてアクセスした因子に基づき得る。ブロック９１４において、ユーザデバイスは、望ましいウェブコードを実行する。
【０１２２】
[0142]図１０は、本開示の特定の実施態様による、コード管理をコードサーバで行う、ウェブページをロードする方法１０００を示す流れ図である。ブロック１００２において、ユーザデバイスがウェブページにアクセスする。ユーザデバイスは、ウェブページをロードし始めることができる。ブロック１００４において、ユーザデバイスは、ブロック１００６においてユーザデバイスに因子へアクセスさせ、ブロック１００８において因子をコードサーバに送信させる、静的タグを実行できる。一部の実施形態では、ブロック１００６において因子にアクセスすることは、ブロック１００４において静的タグを実行することの前に行われ得る。ブロック１０１０において、コードサーバは、実行する望ましいウェブコードを選択でき、このことには、ブロック１０１２における規則を評価することを含み得る。ブロック１０１２における規則を評価することは、ブロック１００６においてアクセスされ、ブロック１００８において送信された因子に基づき得る。ブロック１０１４において、コードサーバからの動的コードをロードしたウェブページ内に注入する。動的コードは、望ましいウェブコードのみを含み得る（例えば、望ましくないウェブコードは含まない）。ブロック１０１６において、ユーザデバイスは、注入された動的コードを実行することによって、望ましいウェブコードを実行する。
【０１２３】
[0143]図１１は、本開示の特定の実施態様による、ウェブページ１１０６を表示するスマートフォン１１０２の描写である。ウェブページ１１０６をロードする際、スマートフォン１１０２は、ウェブページ１１０６の一部として存在するウェブアプリケーション１
１０４を符号化するウェブコードを実行している。上述のように、ウェブアプリケーション１１０４は、スマートフォン１１０２がスマートフォンモバイルデバイスであることを示す因子などの特定の因子に基づいて選択され得る。
【０１２４】
[0144]図１２は、本開示の特定の実施態様による、ウェブアプリケーション１１０４を表示する図１１のスマートフォン１１０２の描写である。
【０１２５】
[0145]図１３は、本開示の特定の実施態様による、図１１からのウェブページ１１０６を表示するタブレット１３０２の描写である。ウェブページ１１０６をロードする際、タブレット１３０２は、ウェブページ１１０６の一部として存在するウェブアプリケーション１３０４を符号化するウェブコードを実行している。ウェブページ１１０６は、図１１からの同じウェブページ１１０６であるが、タブレット１３０２によって実行されるウェブコードは、スマートフォン１１０２によって実行されるウェブコードとは異なる。上述のように、ウェブアプリケーション１３０４は、タブレット１３０２がタブレットモバイルデバイスであることを示す因子などの特定の因子に基づいて選択され得る。
【０１２６】
[0146]図１４は、本開示の特定の実施態様による、ウェブアプリケーション１３０４を表示する図１３のタブレット１３０２の描写である。
【０１２７】
[0147]図１５は、本開示の特定の実施態様による、図１１からのウェブページ１１０６を表示する、デスクトップのウェブブラウザ１５０２の描写である。ウェブページ１１０６をロードする際、デスクトップウェブブラウザ１５０２は、ウェブページ１１０６の一部として存在するウェブアプリケーション１５０４を符号化するウェブコードを実行している。ウェブページ１１０６は、図１１からの同じウェブページ１１０６であるが、デスクトップウェブブラウザ１５０２によって実行されるウェブコードは、スマートフォン１１０２によって実行されるウェブコードとは異なる。上述のように、ウェブアプリケーション１５０４は、デスクトップウェブブラウザ１５０２がデスクトップコンピューティングデバイス上で動作するブラウザであることを示す因子などの特定の因子に基づいて選択され得る。
【０１２８】
[0148]図１６は、本開示の特定の実施態様による、インタラクションウィンドウを提示するための処理１６００を示す流れ図である。処理１６００は、例えば、クライアントデバイス１３０、ユーザデバイス７０２、７０４、７０６、または本明細書で説明される他の好適なデバイスなどのネットワークデバイス（例えば、コンピュータ、スマートフォン、タブレットなど）によって、部分的にまたはその全体が実行され得る。
【０１２９】
[0149]ブロック１６０５において、ウェブページがアクセスされ得る。ウェブページにアクセスすることには、リモートサーバ（例えば、図１のリモートサーバ１４０）からウェブページを要求することを含むことができる。ウェブページにアクセスすることには、ウェブページのためのコードを受信することを含むことができる。ウェブページは、ネットワークデバイス上でアプリケーションをロードおよび稼働させるのに実行可能なコードを含むことができ、インタラクションウィンドウを提示するためのコードを含み得る。一部のケースでは、ウェブページは、実行されると、アプリケーションをロードおよび稼働させるためのコードをダウンロードするコードを含み得る。インタラクションウィンドウは、ユーザがアプリケーションと相互作用する際に介する任意のインターフェースとすることができる。例えば、一部の通信アプリケーションについては、インタラクションウィンドウは、チャット履歴要素（例えば、ユーザとエージェントとの間の１つ以上の過去のメッセージの集合）と、チャット入力要素（例えば、メッセージをエージェントに送信するために使用できる、ユーザから入力を受けるためのテキストボックス）とを有する、チャットインターフェースを含み得る、またはチャットインターフェースとすることができ
る。一部のケースでは、インタラクションウィンドウは、（例えば、ウェブサイトおよび／またはアプリケーションのロードの際）最初は提示されないが、特定の入力を受信した後（例えば、ユーザがエンゲージメントボタンを押下した後）にのみ、提示される。
【０１３０】
[0150]ブロック１６１０において、ウェブページの元の表示設定（例えば、ウェブサイトの因子）を判定する。元の表示設定は、ネットワークデバイス上でのウェブページの提示の仕方に関する様々な情報を含み得る。例えば、元の表示設定は、ウェブページの様々な要素のサイズ、形状および場所、ウェブページをズームできるかどうか（例えば、「ピンチしてズーム」インタラクション）、ウェブページで使用されている色、または他の設定可能な表示の好みを含み得る。元の表示設定は、ウェブページ自体または任意のリンクされたコンテンツ（例えば、スタイルシート）における特定のコードの存在または欠如を検出することによって判定され得る。例えば、元の表示設定は、「ピンチしてズーム」インタラクションを行える状態でウェブページを表示するという情報を含むことができ、これは、ウェブページのビューポートタグを読み取ることによって判定できる。
【０１３１】
[0151]ブロック１６１５において、元の表示設定を保存する。元の表示設定は、ネットワークデバイスのメモリに保存できる。ブロック１６２０において、元の表示設定を用いてウェブページを提示できる。例えば、特定のビューポートタグにより「ピンチしてズーム」インタラクションを有効化したウェブサイトでは、ユーザが「ピンチしてズーム」インタラクションを行うことができるように、ウェブサイトをネットワークデバイス上に提示できる。
【０１３２】
[0152]ブロック１６２５において、ネットワークデバイスの表示能力（例えば、ネットワークデバイスの因子）を判定できる。表示能力は、ネットワークデバイスのディスプレイの物理サイズおよび／または解像度を含み得る。表示能力は、ネットワークデバイスに接続された他の表示装置、ネットワークデバイスのディスプレイが色を表示する能力、または他の能力などの、ネットワークデバイスがコンテンツを表示するための任意の好適な能力を含み得る。一例では、タブレットデバイスがある特定の解像度を有し、スマートフォンデバイスがより低い解像度を有し得る。ブロック１６２５で判定したように、タブレットデバイスの表示能力がその特定の解像度を含み得る一方、スマートフォンデバイスの表示能力は、その特定のより低い解像度を含み得る。
【０１３３】
[0153]一部の実施形態では、デバイスの表示能力を判定することには、デバイスにその表示能力を問い合わせることを含むことができる。一部の実施形態では、デバイスの表示能力を判定することは、デバイスの型式またはタイプを判定することと、デバイスの型式またはタイプによって検索可能な表示能力情報を含む内部または遠隔からアクセス可能なデータベースにアクセスすることとを含む。例えば、処理１６００は、処理１６００が稼働しているデバイスが特定の型式のスマートフォンであることを判定できる。次いで、処理１６００は、着目する特定の型式を含むスマートフォンの多くの型式に関する能力情報を含む（例えば、インターネットを介して利用可能な）データベースにアクセスできる。
【０１３４】
[0154]ブロック１６３０において、ネットワークデバイスの表示能力を用いて新しい表示設定を判定する。新しい表示設定は、アプリケーションのインタラクションウィンドウ（例えば、チャットウィンドウ）を提示するために使用される表示設定である。新しい表示設定は、ネットワークデバイスのディスプレイの解像度などの表示能力に基づき得る。新しい表示設定は、「ピンチしてズーム」インタラクションを無効にするため、またはその他の方法でウェブサイトを非ズーム可能の状態にするためのコードを含み得る。例えば、新しい表示設定は、ビューポートタグを設定して、ウェブサイトを非ズーム可能の状態にするためのコードを含み得る。
【０１３５】
[0155]ブロック１６３５において、新しい表示設定を用いてインタラクションウィンドウを提示する。インタラクションウィンドウは、インタラクションウィンドウをＣａｎｖａｓタグなどのＨＴＭＬタグの一部としてロードすることおよび／または表示することなどによって提示され得るが、インタラクションウィンドウは、他の仕方でロードおよび／または表示することもできる。インタラクションウィンドウが提示されると、現在の表示設定は、新しい表示設定によって置き換えまたは変更され得る。例えば、ブロック１６３５においてインタラクションウィンドウが提示されると、新しい表示設定を使用して、ロードされたウェブサイト上でのズームを禁止でき、その結果、インタラクションウィンドウ自体のズームを阻止できる。換言すると、ブロック１６３５において、インタラクションウィンドウが提示されている際、ウェブサイトのビューポートを動的に変更して、ズームを禁止する。
【０１３６】
[0156]新しい表示設定および／または判定した表示能力からの解像度情報を使用して、インタラクションウィンドウの要素の大きさ（例えば、サイズ）設定できる。具体的には、インタラクションウィンドウの要素を、ズームが不要となるようなサイズにし得る。加えて、インタラクションウィンドウにおけるテキストまたは画像のサイズを適切にサイズ調整して、ズームの必要性を排除できる。
【０１３７】
[0157]ブロック１６４０において、インタラクションウィンドウを隠す、または閉じることができる。隠した場合、同じインタラクションウィンドウを再度提示できる。閉じた場合、インタラクションウィンドウがメモリからアンロードされるか、インタラクションウィンドウに提示したデータがメモリから消去される。
【０１３８】
[0158]ブロック１６４５において、ウェブページの現在の表示設定を、ブロック１６１５において保存した元の表示設定に戻す。一部の実施形態では、ブロック１６１５において元の表示設定は保存されておらず、代わりに、現在の表示設定を初期設定の表示設定に戻す。一部の実施形態では、ブロック１６４５は、ブロック１６４０においてインタラクションウィンドウが隠された、または閉じた場合に行われる。
【０１３９】
[0159]処理１６００の結果、いくつかの異なるネットワークデバイス（例えば、タブレット、スマートフォンおよびデスクトップコンピュータ）上にロードされた、インタラクションウィンドウ（例えば、チャットウィンドウ）を有するアプリケーションを有するウェブページは、まず、一部のデバイス上でズーム可能であり得るが、インタラクションウィンドウが開いている間はズームが禁止され得る、通常のウェブページに提示され得る。例えば、同じウェブページにアクセスする場合、デスクトップユーザは、ウェブサイトまたはインタラクションウィンドウを見ている間、ウェブサイトをズームする必要がなく、タブレットユーザは、ウェブサイトを時折ズームする必要があり得るが、インタラクションウィンドウが開いている間は、ユーザはインタラクションウィンドウのズームを禁止され、インタラクションウィンドウは、タブレットのディスプレイに適切なサイズで表示でき、スマートフォンユーザは、ウェブサイトをしばしばズームする必要があり得るが、インタラクションウィンドウが開いている間は、スマートフォンユーザはインタラクションウィンドウのズームを禁止され、インタラクションウィンドウは、スマートフォンのディスプレイに適切なサイズで表示できる。
【０１４０】
[0160]一部の実施形態では、ブロック１６１０、１６１５、１６２０、１６２５、１６３０、１６３５、１６４０および１６４５のうちの１つ以上の任意の組み合わせを行うための命令または行うことを有効化する命令は、アプリケーションのコード内などのウェブページのコード内に含まれ得る。一部の実施形態では、ブロック１６１０、１６１５、１６２０、１６２５、１６３０、１６３５、１６４０および１６４５のうちの１つ以上の任意の組み合わせを行うための命令または行うことを有効化する命令は、アプリケーション
のコードによってリンクされるなど、ウェブページによってリンクされるコード内に含まれ得る。一部の実施形態では、処理１６００のうちの１つ以上のブロックの任意の組み合わせを行うための命令は、ネットワークデバイスに保存したコード内（例えば、ウェブブラウザ内、別個のアプリケーション内またはウェブブラウザまたは別個のアプリケーションへのアドオン内）に含まれ得る。
【０１４１】
[0161]図１７は、本実施形態の特定の実施態様による、第１のズームレベルでウェブページ１７０８にアクセスするスマートフォン１７０２を示す概略図である。スマートフォン１７０２は、ウェブページ１７０８を表示するために使用できるディスプレイ１７０４を含み得る。ウェブページ１７０８は、テキストなどのコンテンツ１７１０を有するものとして示されている。ウェブページ１７０８は、チャットウィンドウを提示するためのアプリケーションを含み得る。ウェブページ１７０８がロードされると、ウェブページは、チャットウィンドウをオンデマンドで開き、端末デバイスと通信を開始するために使用できる、クリック可能なボタン１７０６を提示できる。
【０１４２】
[0162]図１８は、本実施形態の特定の実施態様による、第２のズームレベルでウェブページ１７０８にアクセスする図１７のスマートフォン１７０２を示す概略図である。第２のズームレベルは、ズームインタラクション（例えば、「ピンチしてズーム」インタラクション、ホイールのスクロール、またはズームインまたはズームアウトのための他の好適なインタラクション）を行うことによって達成され得る。第２のズームレベルにおいて、ウェブページ１７０８のコンテンツ１７１０のサイズが拡大し、これにより、ユーザがコンテンツ１７１０をより容易に読んだり解釈したりし得る。ウェブページ１７０８は、ズームインタラクションを特に許可する表示設定を有してもよいし、ウェブページ１７０８の表示設定は、ズームインタラクションを特に禁止しなくてもよく、スマートフォン１７０２にインストールされたウェブブラウザは、初期設定でズームインタラクションを可能としてもよい。
【０１４３】
[0163]図１９は、本実施形態の特定の実施態様による、インタラクションウィンドウ１９０２を提示する、図１７のスマートフォン１７０２を示す概略図である。インタラクションウィンドウ１９０２は、図１９のチャットウィンドウであるが、さもなければ任意の他のタイプのインタラクションウィンドウであり得る。インタラクションウィンドウ１９０２は、チャット履歴要素１９０６と、チャット入力要素１９０８と、送信ボタン１９１０とを含むいくつかの要素を含み得る。インタラクションウィンドウ１９０２はまた、チャットウィンドウを閉じるおよび／または隠し、基盤となるウェブページ１７０８に戻るためのボタン１９０４を含み得る。インタラクションウィンドウ１９０２は、ウェブページ１７０８上で不透明または透明なウィンドウとして表示できる。
【０１４４】
[0164]インタラクションウィンドウ１９０２の要素は、ディスプレイ１７０４の使用可能な空間（例えば、ディスプレイ１７０４のすべてまたはディスプレイ１７０４の一部分を含み得る、ウェブページ１７０８が通常使用する空間）を完全に占有またはほとんど占有するサイズにできる。インタラクションウィンドウ１９０２の要素のサイジングおよび場所は、インタラクションウィンドウレイアウトとして知られていることもある。インタラクションウィンドウレイアウトは、ディスプレイ１７０４の能力（例えば、図１６のブロック１６２５において判定した表示能力）に基づいて判定できる。インタラクションウィンドウレイアウトは、ディスプレイ１７０４のサイズおよび／または解像度に基づいて実装して、ズームすることなしに、インタラクションウィンドウのすべての要素へのアクセスを可能にできる。インタラクションウィンドウレイアウトは、テキストサイズ、フォント選択、およびズームすることなしに、インタラクションウィンドウ１９０２内のコンテンツの可読性を高め得る他の因子を含み得る。
【０１４５】
[0165]インタラクションウィンドウ１９０２が表示されている間、すべてのズームインタラクションを無効化し、チャットウィンドウの要素に関して、ユーザがズームインまたはズームアウトするのを阻止し得る。図１６の処理１６００を使用して、ウェブページの表示設定（例えば、ビューポート設定）を一時的に修正して、インタラクションウィンドウ１９０２が表示されている間のズームインタラクションを許可しないようにすることなどによって、ズームインタラクションを無効化できる。ボタン１９０４に触れることなどによって、インタラクションウィンドウ１９０２を閉じるまたは隠すと、現在の表示設定を元の表示設定または初期設定の表示設定に戻し、ズームインタラクションを再度可能にすることができる。
【０１４６】
[0166]非ズーム可能インタラクションウィンドウをズーム可能ウェブサイトの一部として提示するための、本明細書で説明されるシステム、方法およびコンピュータプログラム製品は、本明細書で説明したようなユーザとエージェントとの間の通信を提供するなどの本明細書に開示される他の実施態様のいずれかと共に使用できる。インタラクションウィンドウは、ネットワークデバイス、端末デバイスまたはクライアントデバイス上で提示できる。一部の実施形態では、接続管理システムまたは端末デバイスによって、処理１６００で判定した表示能力を使用して、端末デバイスとネットワークデバイスとの間の強化された通信を提供できる。
【０１４７】
[0167]図２０は、本開示の特定の実施態様による、ユーザデバイス２００２、２００４、２００６がネイティブアプリケーション２０２０にアクセスし実行できる動的ネイティブアプリケーション環境２０００を示す概略図である。ネイティブアプリケーション２０２０は、すべてのユーザデバイス２００２、２００４、２００６で共通（例えば、デバイス非依存）であり得るが、デバイスのタイプに応じて（例えば、デバイスのオペレーティングシステムに応じて）ネイティブアプリケーション２０２０の異なるバージョンを配備できる。とはいえ、デバイスのタイプに基づいて（例えば、オペレーティングシステムに基づいて）異なるネイティブアプリケーション２０２０は、同じ方法、サブルーチン、処理、または他のコンポーネントの実行を異なるタイプのデバイス上で達成するための差異のみを除いて、実質的に同じ方法、サブルーチン、処理、または他のコンポーネントを含むことができる。
【０１４８】
[0168]ユーザデバイス２００２、２００４、２００６は、第１のタイプの携帯電話２００２と、第２のタイプの携帯電話２００４と、デスクトップコンピュータ２００６とを含み得る。家庭用ゲーム機、ラップトップ、タブレットコンピュータおよびウェアラブル装置（例えば、スマートウォッチ）などの、ネイティブアプリケーションを実行できる他のユーザデバイスも使用できる。ユーザデバイス２００２、２００４、２００６は、ネイティブアプリケーション２０２０をその特定のユーザデバイス２００２、２００４、２００６のメモリから直接実行できる。一部のケースでは、ネイティブアプリケーション２０２０は、クラウド２００８を通してアクセスされ得る。
【０１４９】
[0169]クラウド２００８は、ローカルエリアネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）を含むコンピュータの任意のネットワークであり得る。一部の実施形態では、クラウド２００８は、インターネットである。
【０１５０】
[0170]ネイティブアプリケーション２０２０は、静的タグ２０２６を含み得る。静的タグ２０２６は、実行されると、ユーザデバイス２００２、２００４、２００６に、因子にアクセスさせる、任意のコードのセグメントであり得る。因子は、デバイス固有属性２０１４、２０１６、２０１８またはネイティブアプリケーション２０２０からのコンテンツであり得る。例えば、デバイス固有属性２０１４、２０１６、２０１８は、デバイスの画面サイズ、デバイスが高速インターネット接続を有しているかどうか、デバイスがカメラ
を有しているかどうか、デバイスのＣＰＵスピード、デバイスの型番、または他の好適な因子に関係し得る。ネイティブアプリケーション２０２０からのコンテンツの一部分の例は、ネイティブアプリケーション２０２０のタイトル、ネイティブアプリケーション２０２０を発行する企業に関する識別子、ネイティブアプリケーション２０２０に関連付けられたクライアント識別子、ユーザがアクセスした、ネイティブアプリケーション２０２０の特定の部分（例えば、ユーザがネイティブアプリケーション２０２０の特定のページを開いた、または特定の機能にアクセスした場合）、または他のこのような情報であり得る。
【０１５１】
[0171]一部のケースでは、ネイティブアプリケーション２０２０は、コードセグメント２０２８、２０３０、２０３２からなる利用可能なコード２０４８を含み得る。本明細書で説明したように、動的コードサーバ２０１２から受信した命令に応じて、ネイティブアプリケーション２０２０は、利用可能なコード２０４８のコードセグメント２０２８、２０３０、２０３２のうちの１つ以上を実行するように導かれ得る。しかしながら、動的コードサーバ２０１２からの命令がなければ、ネイティブアプリケーション２０２０は、利用可能なコード２０４８のコードセグメント２０２８、２０３０、２０３２のうちの１つ以上を実行しない場合もある。
【０１５２】
[0172]一部のケースでは、ネイティブアプリケーション２０２０は、規則２０３４を含み得る。一部のケースでは、ネイティブアプリケーション２０２０は、利用可能なコード２０４８のコードセグメント２０２８、２０３０、２０３２のうちの１つ以上を判定して、動的コードサーバ２０１２から命令を受信することなしに実行するために、規則２０３４を因子に適用できる。一部のケースでは、ネイティブアプリケーション２０２０は、規則２０３４を動的コードサーバ２０１２からの命令に適用して、利用可能なコード２０４８のコードセグメント２０２８、２０３０、２０３２のうちの１つ以上を判定して、実行できる。一部のケースでは、ネイティブアプリケーション２０２０は、利用可能なコード２０４８のいずれかの実行を判定するのに関係する規則２０３４を持たない。
【０１５３】
[0173]ネイティブアプリケーション２０２０は、（例えば、静的タグ２０２６を介して）因子をクラウド２００８を介して動的コードサーバ２０１２（例えば、リモートサーバ）に送信できる。因子を受信すると、動的コードサーバ２０１２は、規則２０２４にアクセスし、規則２０２４を因子に適用して、ネイティブアプリケーション２０２０が動作すべき仕方を評価できる。一部のケースでは、動的コードサーバ２０１２は、規則２０２４のアプリケーションに基づいて命令を生成し、命令をユーザデバイス２００２、２００４、２００６に送信し、命令は、受信されると、ネイティブアプリケーション２０２０によって実行され、利用可能なコード２０４８のコードセグメント２０２８、２０３０、２０３２のうちの１つ以上を実行させる。このようにして、動的コードサーバ２０１２は、どのコードのセグメントを実行するかに関する決定をユーザデバイス２００２、２００４、２００６に提供する。
【０１５４】
[0174]一部のケースでは、動的コードサーバ２０１２は、ユーザデバイス２００２、２００４、２００６に、単純にどのコードを実行するかに関する決定ではなく、実際のコードを提供（例えば、コード注入）できる。例えば、規則２０２４を因子に適用した後、動的コードサーバは、コードバンク２０２２にアクセスして、コードバンク２０２２における利用可能なコード２０５０のコードセグメント２０３６、２０３８、２０４０のうちの１つ以上を選択してもよい。次いで、動的コードサーバは、命令のように、コードセグメント２０３６、２０３８、２０４０のうちの１つ以上をユーザデバイス２００２、２００４、２００６に送信でき、これはネイティブアプリケーション２０２０で実行され得る。このような例では、ネイティブアプリケーション２０２０は、利用可能なコード２０４８を含んでもよいし含まなくてもよい。
【０１５５】
[0175]一部のケースでは、動的コードサーバ２０１２からの命令（例えば、実行する決定またはコード）は、ネイティブアプリケーション２０２０に関して保存された（例えば、ユーザデバイス２００２、２００４、２００６のメモリに保存した）データを修正するための命令を含み得る。例えば、アプリケーションの機能が特定のイベント後（例えば、機能の公表後）にのみ利用可能となることを、アプリケーション発行元が望む場合、発行元は、その機能をアプリケーション内にコーディングできるが、アプリケーションが実行される場合はいつでも、動的コードサーバ２０１２からの命令および／またはアプリケーション自体の規則２０３４によって、機能へのアクセスを拒否またはその他の方法で許可しないようにできる（例えば、「アクセスを絶対に許可しない」という規則）。一部のケースでは、発行元は、規則２０３４をアプリケーション自体にコーディングする際に公表の正確な日付を知らない場合もある。本明細書で説明するように、特定のイベントが生じたならば、または特定のイベントが生じる日付（例えば、２０１６年１１月７日）が分かったならば、発行元は、動的コードサーバ２０１２の規則２０２４を更新できる。その結果、次に動的コードサーバ２０１２が命令をユーザデバイス２００２、２００４、２００６に送信する際、命令は、規則２０３４への更新（例えば、「２０１６年１１月７日以降はアクセスを許可する」という規則）を含み得る。よって、ネイティブアプリケーション２０２０が（例えば、インターネット接続がないことに起因して）２０１６年１２月８日に動的コードサーバ２０１２へアクセスできないとしても、ネイティブアプリケーション２０２０における更新された規則２０３４が、更新された規則２０３４を適用して、機能にアクセスできるようにし得る。同様に、動的コードサーバ２０１２を使用して、ネイティブアプリケーション２０２０における利用可能なコード２０４８を更新できる。ネイティブアプリケーション２０２０へのあらゆる更新は、ネイティブアプリケーション自体を更新すること、またはネイティブアプリケーション２０２０に関連する、またはこれにアクセス可能なデータファイル（例えば、デバイスがアクセス可能な他のメモリに保存されたデータファイル）を更新することによって行うことができる。
【０１５６】
[0176]上述のように、利用可能なコード２０５０の異なるコードセグメント２０３６、２０３８、２０４０および利用可能なコード２０４８のコードセグメント２０２８、２０３０、２０３２は、それぞれ、アプリケーションインターフェース２０４２、２０４４、２０４６の異なるバージョンの提示に関係し得る（例えば、図７に関連する単一のウェブアプリケーションの異なるバージョンと同様）。異なるコードセグメントはまた、ネイティブアプリケーション２０２０のそのインターフェース以外の異なる機能に関係し得る。
【０１５７】
[0177]図２１は、本開示の特定の実施態様による、ネイティブアプリケーションのための動的コード管理の方法２１００を示す流れ図である。一部のケースでは、方法２１００は、同様にウェブアプリケーションの動的コード管理と共に使用できる。ブロック２１０２において、動的コードサーバで因子を受信する。因子は、ネイティブアプリケーションを実行しているユーザデバイスによって生成され送信され得る。因子は、デバイス固有属性またはネイティブアプリケーションのコンテンツに関連し得る、またはこれを示し得る。因子を受信することは、動的コードサーバのネットワークインターフェースで因子を受信すること（例えば、クラウドまたはインターネットなどのネットワークを通して因子を受信すること）を含み得る。
【０１５８】
[0178]ブロック２１０４において、動的コードサーバによって規則にアクセスできる。規則は、（例えば、ネットワークを介して）動的コードサーバ上に保存し得る、または動的コードサーバに対してアクセス可能であり得る。ブロック２１０６において、動的コードサーバは、因子に基づいて規則を評価できる。規則を因子に適用することによって、動的コードサーバは、ネイティブアプリケーションによって、すべての利用可能なコードからどのコードセグメント（複数可）を実行すべきかを判定できる。利用可能なコードは、
動的コードサーバにアクセス可能なコードバンクにある利用可能なコード、ネイティブアプリケーションに埋め込まれた、もしくはアクセス可能な利用可能なコード、またはこれらの任意の組み合わせを含み得る。
【０１５９】
[0179]ブロック２１０８において、動的コードサーバは命令を生成できる。命令は、どのコードを実行するかの判定（例えば、実行するコードセグメントがネイティブアプリケーションに埋め込まれているまたはアクセス可能である場合）、実行するコード自体（例えば、コードセグメントが動的コードサーバにアクセス可能なコードバンクに保存されている場合）、またはこれらの任意の組み合わせを含み得る。例えば、ブロック２１０８は、命令を生成する間にコードセグメントを命令内に埋め込むためのオプションのブロック２１１０を含み得る。
【０１６０】
[0180]ブロック２１１２において、動的コードサーバは命令を送信できる。命令をユーザデバイスに送信して、命令を受信した場合、ユーザデバイスで稼働しているネイティブアプリケーションが望ましいコードセグメントを実行するようにし得る。例えば、命令を受信した場合、ネイティブアプリケーションは、ネイティブアプリケーションに保存されたまたはアクセス可能な利用可能なコードからのコードセグメントを実行できる。別の例では、命令を受信した場合、ネイティブアプリケーションは、命令に埋め込まれているコードセグメントを実行できる。
【０１６１】
[0181]ブロック２１１４において、動的コードサーバは、（例えば、端末デバイスから）規則更新情報を受信できる。規則更新情報を使用して、動的コードサーバにアクセス可能な規則を更新できる。規則更新情報が動的コードサーバによって処理された後、ブロック２１０４において規則に動的コードサーバがアクセスしたときはいつでも、アクセスされた規則は、規則の更新されたバージョンとなる。
【０１６２】
[0182]オプションのブロック２１１６において、動的コードサーバは、命令に規則更新情報を埋め込むことができる。更新情報は、規則またはネイティブアプリケーションに埋め込まれたまたは関連付けられた利用可能なコードに対する更新を含み得る。ユーザデバイスによって受信された場合、埋め込まれた更新情報を含む命令は、ユーザデバイスに、更新情報に基づいて、規則またはネイティブアプリケーションに埋め込まれたまたは関連付けられた利用可能なコードに対する更新を行わせる。
【０１６３】
[0183]オプションのブロック２１１８において、動的コードサーバは、因子に基づいてデバイス推定を生成できる。デバイス推定は、デバイスの識別情報（例えば、デバイスタイプ、製造元またはバージョン）またはデバイスの能力（例えば、カメラまたは高速ＣＰＵスピードを有すること）であり得る。推定は、因子に基づくものであり得る。一部のケースでは、推定は、因子とデバイス推定との間の期待される相関関係に基づき得る（例えば、一般的に携帯電話上で動作するオペレーティングシステムは、デバイスが比較的低速のＣＰＵスピードを有すると推定するために使用される因子であり得る）。一部のケースでは、推定は、因子とデバイス推定との間の実際の相関関係またはマッピングに基づき得る（例えば、１４４０ピクセル×１４４０ピクセルの画面サイズは、デバイスがＢｌａｃｋｂｅｒｒｙＰａｓｓｐｏｒｔであると推定するために使用される因子であり得る）。ブロック２１０６における規則を評価することの一部として、デバイス推定を使用して、どのコードセグメントを実行すべきか、ひいては、ブロック２１０８において命令を生成する仕方を判定できる。デバイス推定の追加的な機能および実施態様を以下にさらに詳しく開示する。
【０１６４】
[0184]オプションのブロック２１２０において、動的コードサーバは、追加的な考慮事項を受信できる。追加的な考慮事項は、ブロック２１０２において受信した因子以外の、
送信元からの任意の情報とすることができる。一部のケースでは、ブロック２１２０において受信した追加的な考慮事項を提供して、ブロック２１０４においてアクセスした規則を更新できる。一部のケースでは、ブロック２１２０において受信した追加的な考慮事項をブロック２１０６における規則の評価で使用できる。一例では、動的コードサーバは、規則を評価して、どのデバイスがビデオ会議インターフェース用のコードセグメントを実行すべきかと、どのデバイスがテキストベースのチャットインターフェース用のコードセグメントを実行すべきかとを判定できる。この例では、ブロック２１０２において受信した因子は、ネットワーク速度および画面サイズに関係し得る（例えば、遅すぎるネットワーク速度または小さすぎる画面サイズでは、ビデオ会議は望ましくない場合があるため）。この例では、ブロック２１２０において受信した追加的な考慮事項は、ビデオ会議で利用可能なエージェントの数とすることができる。次いで、動的コードサーバは、この追加的な考慮事項を使用して、どのデバイスでビデオ会議インターフェースコードセグメントを実行すべきかの判定を補助できる（例えば、わずかなエージェントしか利用可能でない場合、高速な接続速度かつ大画面のデバイスのみにビデオ会議を提示するが、多くのエージェントが利用可能である場合、最小限の要件を満たすすべてのデバイスにビデオ会議を提示する）。このように、動的コードサーバによって、追加的考慮事項を使用して、どのコードセグメントを実行すべきか、ひいてはブロック２１０８における命令の生成の仕方を判定できる。追加的考慮事項の使用の追加的機能および実施態様を以下にさらに詳しく開示する。
【０１６５】
[0185]以下の場合の状況は、動的コード管理を使用できる仕方の例を表す。適していれば、ウェブアプリケーションまたはネイティブアプリケーションに以下の場合の状況を使用できる。
【０１６６】
[0186]一部のケースでは、動的コード管理に使用できる因子は、ブラウザのタイプおよびバージョン、オペレーティングシステムのタイプおよびバージョン、画面サイズ、デバイスがモバイルデバイスかどうか、デバイスがカメラを有するかどうか、デバイスが内側カメラを有するかどうか、デバイスがスピーカを有するかどうか、デバイスが加速度計を有するかどうか、デバイスのバッテリ寿命の残量、デバイスが高速ネットワークに接続されているかどうか、デバイスのネットワーク接続が強いかどうか（例えば、高速、低遅延または低ジッタ）、デバイスがセルラーデータで動作するかどうか、デバイスが通話を開始もしくは受信できるかどうか、ＣＰＵのタイプおよびスピード、デバイスのＧＰＵのタイプおよびスピード、デバイスがＧＰＳ機能を有しているかどうか、または任意の他のハードウェア、ソフトウェア、もしくはデバイスの他の機能を含み得る。一部のケースでは、因子は、デバイスが温暖な気候にあることを表す温度データ、デバイスが海抜高度付近にあることを表す高度データ、またはデバイスが屋外にあることを表す周辺光データなどの環境条件または刺激を表すデータを含み得る。
【０１６７】
[0187]一部のケースでは、規則を評価すること（例えば、図８のブロック８０８における規則を評価すること、図９のブロック９１２における規則を評価すること、図１０のブロック１０１２における規則を評価すること、または図２１のブロック２１０６における規則を評価すること）は、推定することを含み得る。例えば、ユーザデバイス上の光センサからの高レベルの周囲光を表す因子に規則を適用することを使用して、ユーザデバイスが屋外にあることを推定できる。別の例として、小さい画面サイズとモバイルデバイスで通常稼働するブラウザバージョンとを示す因子に規則を適用することを使用して、ユーザデバイスのＣＰＵスピードが比較的遅い（例えば、平均的なデスクトップコンピュータのＣＰＵスピードとは対照的に、平均的なモバイルデバイスのＣＰＵスピード）ことを推定できる。規則に基づいて任意の数の推定をなし得る。次いで、推定を使用して、実行するコードのセグメント判定できる。例えば、デバイスのＣＰＵスピードが比較的遅いと推定された場合、必要なコードセグメント（複数可）を選択することによって、アプリケーシ
ョンのＣＰＵにかかる負担の少ないバージョンを実行できる。あるいは、デバイスのＣＰＵスピードが比較的速いと推定された場合、必要なコードセグメント（複数可）を選択することによって、アプリケーションのＣＰＵにかかる負担の大きいバージョンを実行できる。
【０１６８】
[0188]一部のケースでは、推定（例えば、デバイスの能力の特徴の推定）を行うことは、一式の（例えば、データベースの）既知の値に対して因子を比較することを含み得る。例えば、画面サイズである因子に適用された場合、画面サイズとデバイスタイプとの間のマッチを探す規則を構築できる。例えば、デバイスの画面サイズが７５０ピクセル×１３３４ピクセルであることを表す因子を受信すると、サーバは、画面サイズのデータベース内を探す因子に規則を適用して、デバイスがＡｐｐｌｅのｉＰｈｏｎｅ（登録商標）６である、またはその可能性があることを判定できる。加えて、規則はさらに推定を行うことができる。例えば、デバイスがＡｐｐｌｅのｉＰｈｏｎｅ（登録商標）６であることを規則が既に推定している場合、規則はさらに、デバイスが、背面カメラと内側カメラとを有し、複数のタッチを感知でき（例えば、マルチタッチタッチスクリーン）、デュアルコア１．４ＧＨｚ  Ｃｙｃｌｏｎｅ  ＣＰＵを有し、ＰｏｗｅｒＶＲ  ＧＸ６４５０  ＧＰＵを有し、マイクロホンとスピーカとを有し、音声電話を行うことができ、Ｂｌｕｅｔｏｏｔｈ（登録商標）対応であり、加速度計を有し、ＧＰＳ機能などを有することを推定できる。次いで、規則は、これらの推定に基づいて、どのコードセグメント（複数可）を実行するかを判定できる。
【０１６９】
[0189]一部のケースでは、履歴データを収集および使用して、推定を改善できる。例えば、履歴データは、受動的または能動的フィードバックを含み得る。例えば、デバイスがカメラを有するという推定を行い、これによりビデオ会議ボタンをアプリケーションインターフェース上に提示するコードセグメントが実行されたが、デバイスは実際にはカメラを持たない場合がある。ユーザがボタンを決して押下しない場合（例えば、受動的フィードバック）またはユーザがデバイスがカメラを持たないことを特に報告した場合（例えば、能動的フィードバック）、このデータは、履歴データとして保存し、将来の推定の改善に使用され得る。別の例では、デバイスが特定のタイプのデバイスであるとの推定を行ったが、後にデバイス情報を促した際（例えばチャットセッションの間）、デバイスが異なるタイプのデバイスであるとユーザが指摘する場合がある。将来の推定を改善するために、この情報を能動的フィードバックとして保存できる。一部のケースでは、受動的フィードバックの重み付けは、能動的フィードバックよりも小さくてもよい。
【０１７０】
[0190]一部のケースでは、利用可能なコードの異なるコードセグメントは、アプリケーションの異なるバージョンまたはアプリケーションの異なる機能に関係し得る。例えばは、デバイスが内側カメラ、マイクロホンおよびスピーカを有することを判定すると、ビデオ会議機能が有効化され、アプリケーションインターフェースに、ビデオ会議を開始するボタンを含むようにさせることができる。別の例では、デバイスがマルチタッチ能力を有することを判定すると、マルチタッチ入力を利用するアプリケーションのバージョンを提示できる一方、マルチタッチ能力を持たないデバイス上で稼働する同じアプリケーションは、シングルタッチ、マウスまたはキーボード入力のために特に構築されたアプリケーションの異なるバージョンを提示され得る。
【０１７１】
[0191]一部のケースでは、因子は、ネットワーク接続の品質（例えば、速度、遅延またはジッタ）に関係し得る。因子は、速度測定値などの実際の測定値とすることもできるし、推定ソースとすることもできる（例えば、デバイスが無線ネットワークに接続されていることを示す因子を使用して、ネットワークスピードが高速であることを推定できる一方、デバイスがセルラーネットワークに接続されていることを示す因子を使用して、ネットワークスピードが低速であることを推定できる）。ネットワーク接続の品質に基づいて、
実行用に異なるコードセグメントを選択できる。一部のケースでは、アプリケーション（例えば、ウェブアプリケーションまたはネイティブアプリケーション）は、因子が変わるにつれて動的に変更できる。例えば、ユーザが家に向かう際にアプリケーションを使用している場合、ユーザは、ネットワーク接続スピードが劇的に高まり得る彼または彼女の家庭用無線ネットワークの範囲に入る前に、しばらくの間、低速のセルラーデータネットワーク接続で動作し得る。この例では、アプリケーションは、ネットワーク接続の品質に関係する因子に繰り返しまたは定期的にアクセスできる。低速のセルラーデータネットワーク接続で動作している際、ユーザは、より低速のネットワーク速度のために設計されたアプリケーションのバージョン（例えば、テキストだけのチャットインターフェース）を提示され得る。しかしながら、より高速の家庭用無線ネットワークに接続すると、アプリケーションは、（例えば、リモートサーバからコードセグメントまたは命令を受信することによって）動的に更新されて、異なるバージョン（例えば、テキストとエージェント映像とによるチャットインターフェース）を提示し得る。
【０１７２】
[0192]どのコードセグメント（例えば、リモートサーバによってアクセス可能、デバイスによってアクセス可能、またはデバイスのネイティブアプリケーションに埋め込まれるまたはアクセス可能）を実行するかを判定するために、（例えば、クラウドにある）リモートサーバを使用して規則にアクセスし評価する一部のケースでは、ウェブサイトまたはアプリケーションの発行元およびサービスプロバイダは、強化されたカスタマイズ性を利用可能である。リモートサーバによって使用される規則は、要求に応じて、いつでも、任意のスケジュールで更新できる。帰宅中のユーザには、テキストベースのチャットインターフェースがまず提示され、次いで、より速いネットワークへの接続後、テキストおよびビデオチャットインターフェースが提示される上記の例では、リモートサーバがアクセスした規則は、エージェントのビデオをいつ提示するかを判定することに貢献し得る。アプリケーションは、何度か説明したように機能し得るが、クライアントまたはサービスプロバイダが、（例えば、顧客からのフィードバック、成功もしくは失敗したインタラクションの追跡、または予算などによる帯域幅の制約に起因して）ビデオ機能をいずれかの時点で無効化したいと望むことを決定した場合、クライアントまたはサービスプロバイダは、規則を更新できる。よって、次回、ユーザがテキストベースのチャットを使用してチャットを開始し、次いで、後に、彼または彼女のより速いネットワークに接続した場合、リモートサーバが評価した規則が更新されて（例えば、ビデオインターフェースを拒否し、ビデオインターフェースに関連するコードセグメントは実行されないようにして）いるため、アプリケーションは、エージェントのビデオを提示するように動的に更新されない。同じ機能を様々な他の例に適用できる。
【０１７３】
[0193]一部のケースでは、規則は、追加的考慮事項に基づいて、動的に更新（例えば、規則が更新）または評価（例えば、追加的考慮事項がデバイスから受信した因子と共に評価）され得る。例えば、サービスプロバイダにおいて、ビデオ会議に参加し得るエージェントの数が限られているが、音声またはテキスト通信で参加できるエージェントの数がより多い場合、サービスプロバイダは、最良のビデオ会議体験を提供するデバイス（例えば、より高速なＣＰＵを有するデバイス、より高速のネットワーク速度、より大きい画面サイズまたは他の因子）などの限られた数のデバイスのみにビデオ会議能力を提供することを望むこともある。このように、利用可能なビデオ会議エージェントの数は、追加的考慮事項となり得る。チャットアプリケーションをロードする、またはチャットアプリケーションに関連するウェブサイトもしくはネイティブアプリケーションを使用する他のデバイスの数などの他の追加的考慮事項も使用できる。したがって、デバイスがチャットアプリケーション（例えば、ウェブアプリケーションまたはネイティブアプリケーション）をロードしようとする度に、デバイスは、１つ以上の因子をリモートサーバに送信し、リモートサーバは、ビデオ会議インターフェースを提示するか否かを判定するために、因子と追加的考慮事項とに基づいて、規則にアクセスし評価する。例えば、リモートサーバが１０
０の利用可能なビデオ会議エージェントを有する場合、リモートサーバは、ビデオ会議インターフェースを少なくとも最低限の要件（例えば、最低限のＣＰＵスピード、最低限の速度のネットワーク接続および最小限の画面サイズ）を満たすあらゆるデバイスに提示すべきであることを判定できる。しかしながら、リモートサーバが３つの利用可能なビデオ会議エージェントしか持たない場合、リモートサーバは、ビデオ会議インターフェースを拡張した閾値要件（例えば、比較的高速のＣＰＵスピード、高速ネットワーク接続および大型の画面サイズ）を満たすデバイスのみに提示すべきであることを判定できる。追加的考慮事項（例えば、利用可能なビデオ会議エージェントの数）を使用して、規則自体を更新できる、または規則に対する入力として使用できる（例えば、規則は、因子と追加的考慮事項とを評価する）。
【０１７４】
[0194]実施形態が十分に理解されるよう、上記の説明において具体的な詳細を述べた。しかしながら、実施形態はこれらの具体的な詳細がなくても実施できることを理解されたい。例えば、不必要な詳細で実施形態が分かりにくくならないように、回路をブロック図として示す場合もある。他の場合では、実施形態が分かりにくくならないように、不必要な詳細なしで、既知の回路、処理、アルゴリズム、構造および技法を示す場合もある。
【０１７５】
[0195]上述の技法、ブロック、ステップおよび手段の実施は、様々な仕方でなし得る。例えば、これらの技法、ブロック、ステップおよび手段は、ハードウェア、ソフトウェア、またはこれらの組み合わせで実装できる。ハードウェア実装では、処理装置は、１つ以上の特定用途向け集積回路（ＡＳＩＣ）、デジタル信号プロセッサ（ＤＳＰ）、デジタル信号処理装置（ＤＳＰＤ）、プログラマブルロジックデバイス（ＰＬＤ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、上述の機能を行うように設計された他の電子ユニット、および／またはこれらの組み合わせ内に実装できる。
【０１７６】
[0196]また、実施形態の一部分を流れ図、フロー図、データフロー図、構造図またはブロック図で示される処理として説明できることに留意されたい。流れ図は、動作を順次処理として説明し得るが、動作の多くは、並列で行うこともできるし、同時に行うこともできる。加えて、動作の順序を並べ替えることができる。処理は、その動作が完了したときに終了するが、図に含まれていない追加的ステップを有する場合もある。処理は、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。処理が関数に対応する場合、その終了は、関数が呼び出し関数またはｍａｉｎ関数に戻ったことに対応する。
【０１７７】
[0197]さらに、各実施形態は、ハードウェア、ソフトウェア、スクリプト言語、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、および／またはこれらの任意の組み合わせによって実装されてもよい。ソフトウェア、ファームウェア、ミドルウェア、スクリプト言語、および／またはマイクロコード内に実装されるとき、必要なタスクを行うためのプログラムコードまたはコードセグメントが、記憶媒体などの機械可読媒体に保存されてもよい。コードセグメントまたは機械実行可能命令は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、スクリプト、クラス、または命令、データ構造、および／またはプログラムステートメントの任意の組み合わせを表し得る。コードセグメントは、情報、データ、引数、パラメータ、および／またはメモリコンテンツのパスおよび／または受信によって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパス、チケットパッシング、ネットワーク伝送などを含む任意の適切な手段を介して、パス、転送または伝送されてもよい。
【０１７８】
[0198]ファームウェアおよび／またはソフトウェア実装に関して、方法論が、本明細書
に説明される機能を実施するモジュール（例えば、プロシージャ、関数など）と共に実装されてもよい。本明細書に説明される方法論を実装する際、命令を有形具現化する任意の機械可読媒体を使用してもよい。例えば、ソフトウェアコードをメモリに格納してもよい。メモリは、プロセッサ内またはプロセッサ外に実装されてもよい。本明細書で使用する場合、「メモリ」の語は、任意のタイプの長期、短期、揮発性、不揮発性、または他の記憶媒体を指し、任意の特定のタイプのメモリもしくはメモリの数またはメモリが格納されるメディアのタイプに限定されない。
【０１７９】
[0199]さらに、本明細書に開示されるように、「記憶媒体」、「記憶装置」または「メモリ」の語は、読取専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ＲＡＭ、コアメモリ、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および／または情報を記憶するための他の機械可読媒体を含む、データを記憶するための１つ以上のメモリを表し得る。「機械可読媒体」の語は、限定するものではないが、ポータブルまたは固定記憶デバイス、光記憶デバイス、無線チャネル、および／または命令（複数可）および／またはデータを含有または担持する、記憶可能な様々な他の記憶媒体を含む。
【０１８０】
[0200]本開示の原理を具体的な装置および方法との関連で上に説明してきたが、この説明は例としてのみなされたものであって。本開示の範囲を限定するものではないことを明確に理解されたい。
【０１８１】
[0201]以下で使用する場合、一連の例に対するあらゆる参照は、それらの例のそれぞれに対する分離した参照として理解されたい（例えば「実施例１〜４」は、「実施例１、２、３または４」として理解されたい）。
【０１８２】
[0202]実施例１は、  デバイス上にウェブページをロードするステップと、ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性またはウェブページのコンテンツを含む、ステップと、規則を判定するステップと、因子および規則を用いて選択したウェブコードを実行するステップと、を含む、コンピュータ実装方法である。
【０１８３】
[0203]実施例２は、ウェブページをロードする間に動的コードを注入するステップであって、動的コードが望ましいウェブコードを含む、ステップをさらに含む、実施例１に記載の方法である。
【０１８４】
[0204]実施例３は、因子をサーバに送信するステップであって、動的コードが、送信された因子と規則とに基づいて選択された望ましいウェブコードを含む、ステップ、をさらに含む、実施例２に記載の方法である。
【０１８５】
[0205]実施例４は、因子が顧客識別情報を含み、動的コードが、顧客識別情報に基づいて選択された望ましいウェブコードを含む、実施例２または３に記載の方法である。
【０１８６】
[0206]実施例５は、動的コードが規則と複数の利用可能なコードとを含み、望ましいウェブコードが、因子とデバイス上での規則の評価とに基づいて、複数の利用可能なコードから選択される、実施例２〜４のいずれか１つに記載の方法である。
【０１８７】
[0207]実施例６は、因子がユーザエージェント文字列であり、望ましいウェブコードが、ユーザエージェント文字列と規則とに基づいて選択される、実施例１〜５のいずれか１つに記載の方法である。
【０１８８】
[0208]実施例７は、因子がウェブページのコンテンツに基づくものであり、ウェブページのコンテンツが複数のウェブページ要素を含み、望ましいウェブコードが、複数のウェブページ要素のうちの少なくとも１つに基づいて選択される、実施例１〜６のいずれか１つに記載の方法である。
【０１８９】
[0209]実施例８は、望ましいウェブコードがＪａｖａＳｃｒｉｐｔ（登録商標）タグである、実施例１〜７のいずれか１つに記載の方法である。
【０１９０】
[0210]実施例９は、１つ以上のデータプロセッサと、１つ以上のデータプロセッサで実行した場合、１つ以上のデータプロセッサに、デバイス上にウェブページをロードするステップと、ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性またはウェブページのコンテンツを含む、ステップと、規則を判定するステップと、因子および規則を用いて選択したウェブコードを実行するステップと、を含む動作を行わせる命令を含む非一時的コンピュータ可読記憶媒体と、を備えるシステムである。
【０１９１】
[0211]実施例１０は、命令が、１つ以上のデータプロセッサに、ウェブページをロードする間に動的コードを注入するステップであって、動的コードが望ましいウェブコードを含む、ステップを含む、追加的動作をさらに行わせる、実施例９に記載のシステムである。
【０１９２】
[0212]実施例１１は、命令が、１つ以上のデータプロセッサに、因子をサーバに送信するステップをさらに含む、追加的動作をさらに行わせ、動的コードが送信した因子と規則とに基づいて選択された望ましいウェブコードを含む、実施例１０に記載のシステムである。
【０１９３】
[0213]実施例１２は、因子が顧客識別情報を含み、動的コードが、顧客識別情報に基づいて選択された望ましいウェブコードを含む、実施例１０または１１に記載のシステムである。
【０１９４】
[0214]実施例１３は、動的コードが規則と複数の利用可能なコードとを含み、望ましいウェブコードが、因子とデバイス上での規則の評価とに基づいて、複数の利用可能なコードから選択される、実施例１０〜１２のいずれか１つに記載のシステムである。
【０１９５】
[0215]実施例１４は、因子がユーザエージェント文字列であり、望ましいウェブコードが、ユーザエージェント文字列と規則とに基づいて選択される、実施例９〜１３のいずれか１つに記載のシステムである。
【０１９６】
[0216]実施例１５は、因子がウェブページのコンテンツに基づくものであり、ウェブページのコンテンツが複数のウェブページ要素を含み、望ましいウェブコードが、複数のウェブページ要素のうちの少なくとも１つに基づいて選択される、実施例９〜１４のいずれか１つに記載のシステムである。
【０１９７】
[0217]実施例１６は、望ましいウェブコードがＪａｖａＳｃｒｉｐｔ（登録商標）タグである、実施例９〜１５のいずれか１つに記載のシステムである。
【０１９８】
[0218]実施例１７は、データ処理装置に、ユーザデバイス上にウェブページをロードすることと、ウェブページをロードする際に因子にアクセスすることであって、因子が、ユーザデバイス固有属性またはウェブページのコンテンツを含む、ことと、規則を判定することと、因子および規則を用いて選択したウェブコードを実行することと、を行わせるよ
うに構成される命令を含む、非一時的機械可読記憶媒体に有形具現化されたコンピュータプログラム製品である。
【０１９９】
[0219]実施例１８は、命令が、データ処理装置に、ウェブページをロードする間に動的コードを注入することを行わせるようにさらに構成され、動的コードが望ましいウェブコードを含む、実施例１７に記載のコンピュータプログラム製品である。
【０２００】
[0220]実施例１９は、命令が、データ処理装置に、因子をサーバに送信することを行わせるようにさらに構成され、動的コードが、送信した因子と規則とに基づいて選択された望ましいウェブコードを含む、実施例１８に記載のコンピュータプログラム製品である。
【０２０１】
[0221]実施例２０は、因子が顧客識別情報を含み、動的コードが、顧客識別情報に基づいて選択された望ましいウェブコードを含む、実施例１８または１９に記載のコンピュータプログラム製品である。
【０２０２】
[0222]実施例２１は、動的コードが規則と複数の利用可能なコードとを含み、望ましいウェブコードが、因子とユーザデバイス上での規則の評価とに基づいて、複数の利用可能なコードから選択される、実施例１８〜２０のいずれか１つに記載のコンピュータプログラム製品である。
【０２０３】
[0223]実施例２２は、因子がユーザエージェント文字列であり、望ましいウェブコードが、ユーザエージェント文字列と規則とに基づいて選択される、実施例１７〜２１のいずれか１つに記載のコンピュータプログラム製品である。
【０２０４】
[0224]実施例２３は、因子がウェブページのコンテンツに基づくものであり、ウェブページのコンテンツが複数のウェブページ要素を含み、望ましいウェブコードが、複数のウェブページ要素のうちの少なくとも１つに基づいて選択される、実施例１７〜２２のいずれか１つに記載のコンピュータプログラム製品である。
【０２０５】
[0225]実施例２４は、望ましいウェブコードがＪａｖａＳｃｒｉｐｔ（登録商標）タグである、実施例１７〜２３のいずれか１つに記載のコンピュータプログラム製品である。
【０２０６】
[0226]実施例２５は、１つ以上のデータプロセッサと、１つ以上のデータプロセッサで実行した場合、１つ以上のデータプロセッサに、ウェブページにアクセスするステップであって、ウェブページが、アプリケーションのインタラクションウィンドウを提示するためのコードを含む、ステップと、ウェブページの元の表示設定情報を判定するステップであって、元の表示設定情報が、ウェブページのディスプレイ設定を含む、ステップと、元の表示設定を用いてウェブページを提示するステップと、ウェブページを提示するネットワークデバイスの表示能力を判定するステップと、ネットワークデバイスの表示能力を用いて新しい表示設定を判定するステップであって、新しい表示設定がズームインタラクションを禁止する、ステップと、新しい表示設定を用いてアプリケーションのインタラクションウィンドウを提示するステップと、を含む動作を行わせる命令を含む非一時的コンピュータ可読記憶媒体と、を備えるシステムである。
【０２０７】
[0227]実施例２６は、動作が、ウェブページの元の表示設定情報を保存するステップと、インタラクションウィンドウが隠された、または閉じた場合、元の表示設定に戻すステップと、をさらに含む、実施例２５に記載のシステムである。
【０２０８】
[0228]実施例２７は、元の表示設定がビューポート設定を含む、実施例２５または２６に記載のシステムである。
【０２０９】
[0229]実施例２８は、アプリケーションがチャットアプリケーションであり、インタラクションウィンドウが、チャット履歴要素とチャット入力要素とを有するチャットウィンドウである、実施例２５〜２７のいずれか１つに記載のシステムである。
【０２１０】
[0230]実施例２９は、新しい表示設定を判定することが、アプリケーションのインタラクションウィンドウを提示するためのコードを使用することをさらに含む、実施例２５〜２８のいずれか１つに記載のシステムである。
【０２１１】
[0231]実施例３０は、動作が、ネットワークデバイスの表示能力を用いてインタラクションウィンドウレイアウトを判定することをさらに含み、インタラクションウィンドウレイアウトにより、ズームすることなしに、インタラクションウィンドウのすべての要素へアクセスできる、実施例２５〜２９のいずれか１つに記載のシステムである。
【図１】
2020123360.tif 000003
【図２】
2020123360.tif 000004
【図３Ａ】
2020123360.tif 000005
【図３Ｂ】
2020123360.tif 000006
【図３Ｃ】
2020123360.tif 000007
【図４】
2020123360.tif 000008
【図５】
2020123360.tif 000009
【図６】
2020123360.tif 000010
【図７】
2020123360.tif 000011
【図８】
2020123360.tif 000012
【図９】
2020123360.tif 000013
【図１０】
2020123360.tif 000014
【図１１】
2020123360.tif 000015
【図１２】
2020123360.tif 000016
【図１３】
2020123360.tif 000017
【図１４】
2020123360.tif 000018
【図１５】
2020123360.tif 000019
【図１６】
2020123360.tif 000020
【図１７】
2020123360.tif 000021
【図１８】
2020123360.tif 000022
【図１９】
2020123360.tif 000023
【図２０】
2020123360.tif 000024
【図２１】
2020123360.tif 000025
【手続補正書】
【提出日】令和2年4月2日(2020.4.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１つ以上のデータプロセッサと、
前記１つ以上のデータプロセッサで実行した場合、前記１つ以上のデータプロセッサに、
ウェブページにアクセスすることと、前記ウェブページは、アプリケーションのインタラクションウィンドウを提示するためのコードを含み、
前記ウェブページの元の表示設定情報を判定することと、ここにおいて、前記元の表示設定情報は、前記ウェブページのディスプレイ設定を含み、
前記元の表示設定情報を用いて前記ウェブページを提示することと、
前記ウェブページを提示するネットワークデバイスの１つ以上の表示能力を判定することと、
前記ネットワークデバイスの前記１つ以上の表示能力を用いて新しい表示設定を判定することと、ここにおいて、前記新しい表示設定はズームインタラクションを禁止し、
前記新しい表示設定を用いて前記アプリケーションの前記インタラクションウィンドウを提示することと、
を含む動作を行わせる命令を含む非一時的コンピュータ可読記憶媒体と、
を備えるシステム。
【請求項２】
前記動作は、
前記ウェブページの前記元の表示設定情報を保存することと、
前記インタラクションウィンドウが隠された、または閉じた場合、前記元の表示設定情報に戻すことと、
をさらに含む、請求項１に記載のシステム。
【請求項３】
前記元の表示設定情報はビューポート設定を含む、請求項１に記載のシステム。
【請求項４】
前記アプリケーションはチャットアプリケーションであり、前記インタラクションウィンドウは、チャット履歴要素とチャット入力要素とを有するチャットウィンドウである、請求項１に記載のシステム。
【請求項５】
前記新しい表示設定を判定することは、前記アプリケーションの前記インタラクションウィンドウを提示するための前記コードを使用することをさらに含む、請求項１に記載のシステム。
【請求項６】
前記動作は、
前記ネットワークデバイスの前記１つ以上の表示能力を用いてインタラクションウィンドウレイアウトを判定することをさらに含み、前記インタラクションウィンドウレイアウトにより、ズームすることなしに、前記インタラクションウィンドウのすべての要素へアクセスできる、請求項１に記載のシステム。
【請求項７】
「ピンチしてズーム」動作は、前記インタラクションウィンドウについて無効にされ、前記「ピンチしてズーム」動作を無効にすることは、前記インタラクションウィンドウが拡大または縮小されることを阻止する、請求項１に記載のシステム。
【請求項８】
ウェブページにアクセスすることと、前記ウェブページは、アプリケーションのインタラクションウィンドウを提示するためのコードを含み、
前記ウェブページの元の表示設定情報を判定することと、ここにおいて、前記元の表示設定情報は、前記ウェブページのディスプレイ設定を含み、
前記元の表示設定情報を用いて前記ウェブページを提示することと、
前記ウェブページを提示するネットワークデバイスの１つ以上の表示能力を判定することと、
前記ネットワークデバイスの前記１つ以上の表示能力を用いて新しい表示設定を判定することと、ここにおいて、前記新しい表示設定はズームインタラクションを禁止し、
前記新しい表示設定を用いて前記アプリケーションの前記インタラクションウィンドウを提示することと、
を備えるコンピュータ実装方法。
【請求項９】
前記ウェブページの前記元の表示設定情報を保存することと、
前記インタラクションウィンドウが隠された、または閉じた場合、前記元の表示設定情報に戻すことと、
をさらに備える、請求項８に記載のコンピュータ実装方法。
【請求項１０】
前記元の表示設定情報はビューポート設定を含む、請求項８に記載のコンピュータ実装方法。
【請求項１１】
前記アプリケーションはチャットアプリケーションであり、前記インタラクションウィンドウは、チャット履歴要素とチャット入力要素とを有するチャットウィンドウである、請求項８に記載のコンピュータ実装方法。
【請求項１２】
前記新しい表示設定を判定することは、前記アプリケーションの前記インタラクションウィンドウを提示するための前記コードを使用することをさらに含む、請求項８に記載のコンピュータ実装方法。
【請求項１３】
前記ネットワークデバイスの前記１つ以上の表示能力を用いてインタラクションウィンドウレイアウトを判定することをさらに備え、前記インタラクションウィンドウレイアウトにより、ズームすることなしに、前記インタラクションウィンドウのすべての要素へアクセスできる、請求項１２に記載のコンピュータ実装方法。
【請求項１４】
「ピンチしてズーム」動作は、前記インタラクションウィンドウについて無効にされ、前記「ピンチしてズーム」動作を無効にすることは、前記インタラクションウィンドウが拡大または縮小されることを阻止する、請求項８に記載のコンピュータ実装方法。
【請求項１５】
データ処理装置に、
ウェブページにアクセスすることと、前記ウェブページは、アプリケーションのインタラクションウィンドウを提示するためのコードを含み、
前記ウェブページの元の表示設定情報を判定することと、ここにおいて、前記元の表示設定情報は、前記ウェブページのディスプレイ設定を含み、
前記元の表示設定情報を用いて前記ウェブページを提示することと、
前記ウェブページを提示するネットワークデバイスの１つ以上の表示能力を判定することと、
前記ネットワークデバイスの前記１つ以上の表示能力を用いて新しい表示設定を判定することと、ここにおいて、前記新しい表示設定はズームインタラクションを禁止し、
前記新しい表示設定を用いて前記アプリケーションの前記インタラクションウィンドウを提示することと、
を含む動作を行わせるように構成された命令を格納する、コンピュータ可読記憶媒体。
【請求項１６】
前記動作は、
前記ウェブページの前記元の表示設定情報を保存することと、
前記インタラクションウィンドウが隠された、または閉じた場合、前記元の表示設定情報に戻すことと、
をさらに含む、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１７】
前記元の表示設定情報はビューポート設定を含む、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１８】
前記アプリケーションはチャットアプリケーションであり、前記インタラクションウィンドウは、チャット履歴要素とチャット入力要素とを有するチャットウィンドウである、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項１９】
前記新しい表示設定を判定することは、前記アプリケーションの前記インタラクションウィンドウを提示するための前記コードを使用することをさらに含む、請求項１５に記載のコンピュータ可読記憶媒体。
【請求項２０】
前記動作は、
前記ネットワークデバイスの前記１つ以上の表示能力を用いてインタラクションウィンドウレイアウトを判定することをさらに含み、前記インタラクションウィンドウレイアウトにより、ズームすることなしに、前記インタラクションウィンドウのすべての要素へアクセスできる、請求項１９に記載のコンピュータ可読記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０２１１
【補正方法】変更
【補正の内容】
【０２１１】
[0231]実施例３０は、動作が、ネットワークデバイスの表示能力を用いてインタラクションウィンドウレイアウトを判定することをさらに含み、インタラクションウィンドウレイアウトにより、ズームすることなしに、インタラクションウィンドウのすべての要素へアクセスできる、実施例２５〜２９のいずれか１つに記載のシステムである。
以下に、本願の出願当初の特許請求の範囲に記載された発明を付記する。
［Ｃ１］
デバイス上にウェブページをロードするステップと、
前記ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性または前記ウェブページのコンテンツを含む、ステップと、
規則を判定するステップと、
前記因子および前記規則を用いて選択したウェブコードを実行するステップと、
を含む、コンピュータ実装方法。
［Ｃ２］
前記ウェブページをロードする間に動的コードを注入するステップであって、前記動的コードが望ましいウェブコードを含む、ステップをさらに含む、Ｃ１に記載の方法。
［Ｃ３］
前記因子をサーバに送信するステップであって、前記動的コードが、前記送信された因子と前記規則とに基づいて選択された前記望ましいウェブコードを含む、ステップ、をさらに含む、Ｃ２に記載の方法。
［Ｃ４］
前記因子が顧客識別情報を含み、前記動的コードが、前記顧客識別情報に基づいて選択された前記望ましいウェブコードを含む、Ｃ３に記載の方法。
［Ｃ５］
前記動的コードが前記規則と複数の利用可能なコードとを含み、前記望ましいウェブコードが、前記因子と前記デバイス上での前記規則の評価とに基づいて、前記複数の利用可能なコードから選択される、Ｃ２に記載の方法。
［Ｃ６］
前記因子がユーザエージェント文字列であり、前記望ましいウェブコードが、前記ユーザエージェント文字列と前記規則とに基づいて選択される、Ｃ１に記載の方法。
［Ｃ７］
前記因子が前記ウェブページの前記コンテンツに基づくものであり、前記ウェブページの前記コンテンツが複数のウェブページ要素を含み、前記望ましいウェブコードが、前記複数のウェブページ要素のうちの少なくとも１つに基づいて選択される、Ｃ１に記載の方法。
［Ｃ８］
前記望ましいウェブコードがＪａｖａＳｃｒｉｐｔ（登録商標）タグである、Ｃ１に記載の方法。
［Ｃ９］
１つ以上のデータプロセッサと、
前記１つ以上のデータプロセッサで実行した場合、前記１つ以上のデータプロセッサに、
デバイス上にウェブページをロードするステップと、
前記ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性または前記ウェブページのコンテンツを含む、ステップと、
規則を判定するステップと、
前記因子および前記規則を用いて選択したウェブコードを実行するステップと、
を含む動作を行わせる命令を含む非一時的コンピュータ可読記憶媒体と、
を備えるシステム。
［Ｃ１０］
前記命令が、前記１つ以上のデータプロセッサに、前記ウェブページをロードする間に動的コードを注入するステップであって、前記動的コードが望ましいウェブコードを含む、ステップを含む、追加的動作をさらに行わせる、Ｃ９に記載のシステム。
［Ｃ１１］
前記命令が、前記１つ以上のデータプロセッサに、前記因子をサーバに送信するステッ
プをさらに含む、前記追加的動作をさらに行わせ、前記動的コードが、前記送信した因子と前記規則とに基づいて選択された前記望ましいウェブコードを含む、Ｃ１０に記載のシステム。
［Ｃ１２］
前記因子が顧客識別情報を含み、前記動的コードが、前記顧客識別情報に基づいて選択された前記望ましいウェブコードを含む、Ｃ１１に記載のシステム。
［Ｃ１３］
前記動的コードが前記規則と複数の利用可能なコードとを含み、前記望ましいウェブコードが、前記因子と前記デバイス上での前記規則の評価とに基づいて、前記複数の利用可能なコードから選択される、Ｃ１０に記載のシステム。
［Ｃ１４］
前記因子がユーザエージェント文字列であり、前記望ましいウェブコードが、前記ユーザエージェント文字列と前記規則とに基づいて選択される、Ｃ９に記載のシステム。
［Ｃ１５］
前記因子が前記ウェブページの前記コンテンツに基づくものであり、前記ウェブページの前記コンテンツが複数のウェブページ要素を含み、前記望ましいウェブコードが、前記複数のウェブページ要素のうちの少なくとも１つに基づいて選択される、Ｃ９に記載のシステム。
［Ｃ１６］
前記望ましいウェブコードがＪａｖａＳｃｒｉｐｔ（登録商標）タグである、Ｃ９に記載のシステム。
［Ｃ１７］
データ処理装置に、
ユーザデバイス上にウェブページをロードすることと、
前記ウェブページをロードする際に因子にアクセスすることであって、因子が、ユーザデバイス固有属性または前記ウェブページのコンテンツを含む、ことと、
規則を判定することと、
前記因子および前記規則を用いて選択したウェブコードを実行することと、
を行わせるように構成される命令を含む、非一時的機械可読記憶媒体に有形具現化されたコンピュータプログラム製品。
［Ｃ１８］
前記命令が、前記データ処理装置に、前記ウェブページをロードする間に動的コードを注入することを行わせるようにさらに構成され、前記動的コードが望ましいウェブコードを含む、Ｃ１７に記載のコンピュータプログラム製品。
［Ｃ１９］
前記命令が、前記データ処理装置に、前記因子をサーバに送信することを行わせるようにさらに構成され、前記動的コードが、前記送信した因子と前記規則とに基づいて選択された前記望ましいウェブコードを含む、Ｃ１８に記載のコンピュータプログラム製品。
［Ｃ２０］
前記因子が顧客識別情報を含み、前記動的コードが、前記顧客識別情報に基づいて選択された前記望ましいウェブコードを含む、Ｃ１９に記載のコンピュータプログラム製品。
［Ｃ２１］
前記動的コードが前記規則と複数の利用可能なコードとを含み、前記望ましいウェブコードが、前記因子と前記ユーザデバイス上での前記規則の評価とに基づいて、前記複数の利用可能なコードから選択される、Ｃ１８に記載のコンピュータプログラム製品。
［Ｃ２２］
前記因子がユーザエージェント文字列であり、前記望ましいウェブコードが、前記ユーザエージェント文字列と前記規則とに基づいて選択される、Ｃ１７に記載のコンピュータプログラム製品。
［Ｃ２３］
前記因子が前記ウェブページの前記コンテンツに基づくものであり、前記ウェブページの前記コンテンツが複数のウェブページ要素を含み、前記望ましいウェブコードが、前記複数のウェブページ要素のうちの少なくとも１つに基づいて選択される、Ｃ１７に記載のコンピュータプログラム製品。
［Ｃ２４］
前記望ましいウェブコードがＪａｖａＳｃｒｉｐｔ（登録商標）タグである、Ｃ１７に記載のコンピュータプログラム製品。
【外国語明細書】
2020123360000001.pdf