IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ライブパーソン, インコーポレイテッドの特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-10-04
(45)【発行日】2024-10-15
(54)【発明の名称】動的コード管理
(51)【国際特許分類】
   G06F 9/445 20180101AFI20241007BHJP
   H04L 67/02 20220101ALI20241007BHJP
【FI】
G06F9/445
H04L67/02
【請求項の数】 21
【外国語出願】
(21)【出願番号】P 2023085332
(22)【出願日】2023-05-24
(62)【分割の表示】P 2021168007の分割
【原出願日】2015-09-09
(65)【公開番号】P2023126745
(43)【公開日】2023-09-12
【審査請求日】2023-06-22
(31)【優先権主張番号】62/048,022
(32)【優先日】2014-09-09
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】511094772
【氏名又は名称】ライブパーソン, インコーポレイテッド
(74)【代理人】
【識別番号】110003708
【氏名又は名称】弁理士法人鈴榮特許綜合事務所
(72)【発明者】
【氏名】グラント・ローレンス・ミラー
(72)【発明者】
【氏名】マーク・キャンベル
【審査官】太田 龍一
(56)【参考文献】
【文献】米国特許出願公開第2010/0180192(US,A1)
【文献】国際公開第2007/015302(WO,A1)
【文献】特開2006-236323(JP,A)
【文献】特開2010-250830(JP,A)
【文献】特開2012-084165(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/445
H04L 67/02
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
ユーザデバイスで実行されるネイティブアプリケーションに関連付けられたコンテンツの指示を受信することと、
前記コンテンツおよび規則に基づいて利用可能なコードセグメントのセットを識別することと、ここにおいて、前記利用可能なコードセグメントのセットは、前記ネイティブアプリケーションに関連付けられたアプリケーションインターフェースの異なるバージョンに対応し、前記規則は、前記利用可能なコードセグメントのセットから、どのコードセグメントが異なるコンテンツに従って実行可能かを示す、
前記ネイティブアプリケーションを使用して実行される前記利用可能なコードセグメントのセットから1つ以上のコードセグメントを識別することと、ここにおいて、前記1つ以上のコードセグメントは、前記コンテンツおよび前記規則に基づいて識別される、
前記1つ以上のコードセグメントに対応するデータを生成することと、
前記データを送信することと、ここにおいて、前記データが受信されると、前記1つ以上のコードセグメントは、前記アプリケーションインターフェースの特定のバージョンを提供することで前記ネイティブアプリケーションをカスタマイズするように実行される、
を備える、コンピュータ実装方法。
【請求項2】
更新情報を前記データ内に埋め込むことをさらに備え、前記更新情報は、前記利用可能なコードセグメントのセットに対する更新を含み、前記更新情報が受信されると、前記ネイティブアプリケーションは、前記更新を行う、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記コンテンツに基づいてデバイス推定を生成することと、ここにおいて、前記デバイス推定は、前記ユーザデバイスに関連付けられた1つ以上の能力を示す、
前記利用可能なコードセグメントのセットから前記1つ以上のコードセグメントを識別するために前記デバイス推定を前記規則に適用することと、
をさらに備える、請求項1に記載のコンピュータ実装方法。
【請求項4】
前記規則に対応する規則更新情報を受信することと、ここにおいて、前記規則更新情報は、前記規則の更新されたバージョンを規定する、
前記規則の前記更新されたバージョンを実装するために前記規則更新情報を処理することと、ここにおいて、新しいコンテンツの指示が受信されると、コードセグメントは、前記規則の前記更新されたバージョンに基づいて前記利用可能なコードセグメントのセットから識別される、
請求項1に記載のコンピュータ実装方法。
【請求項5】
前記利用可能なコードセグメントのセットは、前記ネイティブアプリケーション内に埋め込まれる、請求項1に記載のコンピュータ実装方法。
【請求項6】
前記指示は、前記ネイティブアプリケーションに含まれる静的タグの実行の結果として受信され、前記静的タグは、前記ネイティブアプリケーションに前記指示を提供させる、請求項1に記載のコンピュータ実装方法。
【請求項7】
前記ネイティブアプリケーションに関連付けられた前記コンテンツは、前記ネイティブアプリケーションに対応するタイトル、前記ネイティブアプリケーションに関連付けられたクライアント識別子、または、前記ユーザデバイスを通してアクセスされる前記ネイティブアプリケーションの一部分を含む、請求項1に記載のコンピュータ実装方法。
【請求項8】
システムであって、
1つまたは複数のプロセッサと、
命令を記憶するメモリと
を備え、前記命令は、前記1つまたは複数のプロセッサによって実行された結果として、
ユーザデバイスで実行されるネイティブアプリケーションに関連付けられたコンテンツの指示を受信することと、
前記コンテンツおよび規則に基づいて利用可能なコードセグメントのセットを識別することと、ここにおいて、前記利用可能なコードセグメントのセットは、前記ネイティブアプリケーションに関連付けられたアプリケーションインターフェースの異なるバージョンに対応し、前記規則は、前記利用可能なコードセグメントのセットから、どのコードセグメントが異なるコンテンツに従って実行可能かを示す、
前記ネイティブアプリケーションを使用して実行される前記利用可能なコードセグメントのセットから1つ以上のコードセグメントを識別することと、ここにおいて、前記1つ以上のコードセグメントは、前記コンテンツおよび前記規則に基づいて識別される、
前記1つ以上のコードセグメントに対応するデータを生成することと、
前記データを送信することと、ここにおいて、前記データが受信されると、前記1つ以上のコードセグメントは、前記アプリケーションインターフェースの特定のバージョンを提供することで前記ネイティブアプリケーションをカスタマイズするように実行される、
を前記システムに行わせる、システム。
【請求項9】
前記命令は、
更新情報を前記データ内に埋め込むことを前記システムにさらに行わせ、前記更新情報は、前記利用可能なコードセグメントのセットに対する更新を含み、前記更新情報が受信されると、前記ネイティブアプリケーションは、前記更新を行う、請求項8に記載のシステム。
【請求項10】
前記命令は、
前記コンテンツに基づいてデバイス推定を生成することと、ここにおいて、前記デバイス推定は、前記ユーザデバイスに関連付けられた1つ以上の能力を示す、
前記利用可能なコードセグメントのセットから前記1つ以上のコードセグメントを識別するために前記デバイス推定を前記規則に適用することと、
を前記システムにさらに行わせる、請求項8に記載のシステム。
【請求項11】
前記命令は、
前記規則に対応する規則更新情報を受信することと、ここにおいて、前記規則更新情報は、前記規則の更新されたバージョンを規定する、
前記規則の前記更新されたバージョンを実装するために前記規則更新情報を処理することと、ここにおいて、新しいコンテンツの指示が受信されると、コードセグメントは、前記規則の前記更新されたバージョンに基づいて前記利用可能なコードセグメントのセットから識別される、
を前記システムにさらに行わせる、請求項8に記載のシステム。
【請求項12】
前記利用可能なコードセグメントのセットは、前記ネイティブアプリケーション内に埋め込まれる、請求項8に記載のシステム。
【請求項13】
前記指示は、前記ネイティブアプリケーションに含まれる静的タグの実行の結果として受信され、前記静的タグは、前記ネイティブアプリケーションに前記指示を提供させる、請求項8に記載のシステム。
【請求項14】
前記ネイティブアプリケーションに関連付けられた前記コンテンツは、前記ネイティブアプリケーションに対応するタイトル、前記ネイティブアプリケーションに関連付けられたクライアント識別子、または、前記ユーザデバイスを通してアクセスされる前記ネイティブアプリケーションの一部分を含む、請求項8に記載のシステム。
【請求項15】
実行可能命令が記憶されている非一時的コンピュータ可読記憶媒体であって、前記実行可能命令は、コンピュータシステムの1つまたは複数のプロセッサによって実行された結果として、
ユーザデバイスで実行されるネイティブアプリケーションに関連付けられたコンテンツの指示を受信することと、
前記コンテンツおよび規則に基づいて利用可能なコードセグメントのセットを識別することと、ここにおいて、前記利用可能なコードセグメントのセットは、前記ネイティブアプリケーションに関連付けられたアプリケーションインターフェースの異なるバージョンに対応し、前記規則は、前記利用可能なコードセグメントのセットから、どのコードセグメントが異なるコンテンツに従って実行可能かを示す、
前記ネイティブアプリケーションを使用して実行される前記利用可能なコードセグメントのセットから1つ以上のコードセグメントを識別することと、ここにおいて、前記1つ以上のコードセグメントは、前記コンテンツおよび前記規則に基づいて識別される、
前記1つ以上のコードセグメントに対応するデータを生成することと、
前記データを送信することと、ここにおいて、前記データが受信されると、前記1つ以上のコードセグメントは、前記アプリケーションインターフェースの特定のバージョンを提供することで前記ネイティブアプリケーションをカスタマイズするように実行される、
を前記コンピュータシステムに行わせる、非一時的コンピュータ可読記憶媒体。
【請求項16】
前記実行可能命令は、更新情報を前記データ内に埋め込むことを前記コンピュータシステムにさらに行わせ、前記更新情報は、前記利用可能なコードセグメントのセットに対する更新を含み、前記更新情報が受信されると、前記ネイティブアプリケーションは、前記更新を行う、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項17】
前記実行可能命令は、
前記コンテンツに基づいてデバイス推定を生成することと、ここにおいて、前記デバイス推定は、前記ユーザデバイスに関連付けられた1つ以上の能力を示す、
前記利用可能なコードセグメントのセットから前記1つ以上のコードセグメントを識別するために前記デバイス推定を前記規則に適用することと、
を前記コンピュータシステムにさらに行わせる、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項18】
前記実行可能命令は、
前記規則に対応する規則更新情報を受信することと、ここにおいて、前記規則更新情報は、前記規則の更新されたバージョンを規定する、
前記規則の前記更新されたバージョンを実装するために前記規則更新情報を処理することと、ここにおいて、新しいコンテンツの指示が受信されると、コードセグメントは、前記規則の前記更新されたバージョンに基づいて前記利用可能なコードセグメントのセットから識別される、
を前記コンピュータシステムにさらに行わせる、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記利用可能なコードセグメントのセットは、前記ネイティブアプリケーション内に埋め込まれる、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
前記指示は、前記ネイティブアプリケーションに含まれる静的タグの実行の結果として受信され、前記静的タグは、前記ネイティブアプリケーションに前記指示を提供させる、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【請求項21】
前記ネイティブアプリケーションに関連付けられた前記コンテンツは、前記ネイティブアプリケーションに対応するタイトル、前記ネイティブアプリケーションに関連付けられたクライアント識別子、または、前記ユーザデバイスを通してアクセスされる前記ネイティブアプリケーションの一部分を含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
[0001]本出願は、2014年9月9日に出願された「DYNAMIC JAVASCRIPT(登録商標) TAG MANAGEMENT」と題する米国特許仮出願第62/048,022号明細書の利益を主張するものであり、上記明細書は、本明細書において参照によりその全体を組み込まれる。
【0002】
[0002]本開示は、一般的に、インターネット対応のアプリケーションに関し、特に、デバイス固有および/または他の因子固有のアプリケーションデプロイメントに関する。
【0003】
[0003]本明細書は以下の添付の図面を参照し、添付の図面では、異なる図面において同様の参照番号を使用している場合、同様または類似の構成要素を表すことを意図している。
【図面の簡単な説明】
【0004】
図1】ネットワークインタラクションシステムの一実施形態のブロック図を示す。
図2】ネットワークインタラクションシステムの別の実施形態のブロック図を示す。
図3A】接続管理システムを含むネットワークインタラクションシステムの他の実施形態のブロック図を示す。
図3B】接続管理システムを含むネットワークインタラクションシステムの他の実施形態のブロック図を示す。
図3C】接続管理システムを含むネットワークインタラクションシステムの他の実施形態のブロック図を示す。
図4】接続コンポーネントの動作のプロトコルスタックマッピングを表したものを示す。
図5】一実施形態によるマルチデバイス通信交換システムを示す。
図6】接続管理システムの一実施形態のブロック図を示す。
図7】ユーザデバイスがウェブページにアクセスできるウェブページアクセス環境を示す概略図である。
図8】本開示の特定の実施態様による、利用可能なコードを含むウェブページをロードする方法を示す流れ図である。
図9】本開示の特定の実施態様による、静的タグを含むウェブページをロードする方法を示す流れ図である。
図10】本開示の特定の実施態様による、コード管理をコードサーバで行う、ウェブページをロードする方法を示す流れ図である。
図11】本開示の特定の実施態様による、ウェブページを表示するスマートフォンの描写である。
図12】本開示の特定の実施態様による、ウェブアプリケーションを表示する図11のスマートフォンの描写である。
図13】本開示の特定の実施態様による、図11からのウェブページを表示するタブレットの描写である。
図14】本開示の特定の実施態様による、ウェブアプリケーションを表示する図13のタブレットの描写である。
図15】本開示の特定の実施態様による、図11からのウェブページを表示する、デスクトップのウェブブラウザの描写である。
図16】本開示の特定の実施態様による、インタラクションウィンドウを提示するための処理を示す流れ図である。
図17】本開示の特定の実施態様による、第1のズームレベルでウェブページにアクセスするスマートフォンを示す概略図である。
図18】本開示の特定の実施態様による、第2のズームレベルでウェブページにアクセスする図17のスマートフォンを示す概略図である。
図19】本開示の特定の実施態様による、インタラクションウィンドウを提示する、図17のスマートフォンを示す概略図である。
図20】本開示の特定の実施態様による、ユーザデバイスがネイティブアプリケーションにアクセスし実行できる動的ネイティブアプリケーション環境を示す概略図である。
図21】本開示の特定の実施態様による、ネイティブアプリケーションのための動的コード管理の方法2100を示す流れ図である。
【発明を実施するための形態】
【0005】
[0025]添付の図面では、同様のコンポーネントおよび/または特徴は、同じ参照符号を有し得る。さらに、同じタイプの様々なコンポーネントを区別するには、ダッシュ記号および同様のコンポーネントを区別する第2の符号によって参照符号を追えばよい。本明細書において、第1の参照符号のみが使用される場合、説明は、第2の参照符号にかかわりなく、同じ第1の参照符号を有する同様のコンポーネントのうちのいずれか1つに適用可能である。
【0006】
[0026]本開示の特定の実施態様および特徴は、ウェブページのJavaScript(登録商標)タグまたはネイティブアプリケーションのコードセグメントの動的管理などの、動的コード管理を行うためのシステムおよび方法に関する。一部の実施形態では、ウェブページまたはネイティブアプリケーションをロードする電子デバイス(例えば、ユーザデバイス)は、ユーザデバイス固有属性、ロードされるウェブページのコンテンツ、またはロードされるネイティブアプリケーションのコンテンツ(例えば、ネイティブアプリケーションに埋め込まれた顧客識別子)などの因子にアクセスする。規則を(例えば、ユーザデバイスまたはサーバがアクセスおよび/または実行することによって)判定できる。因子を規則に適用して、ユーザデバイスが実行するウェブコード(例えば、JavaScript(登録商標)タグ)またはネイティブアプリケーションコードのうちの1つ以上の望ましいセグメントを判定できる。一部のケースでは、因子をリモートサーバに送信し、リモートサーバが、規則を判定し、規則を因子に適用できる。リモートサーバは、命令またはコードを返すことができ、命令またはコードは、デバイスが受信した場合に実行されて、具体的な機能を行う、アプリケーション(例えば、ウェブアプリケーションまたはネイティブアプリケーション)の具体的なバージョンを提示する、または次に実行するウェブコードもしくはネイティブアプリケーションの具体的なコードセグメントを選択することができる。これらの実施態様および特徴を使用して、ユーザデバイスの因子(例えば、利用可能な機能)に基づいて、ウェブサイト上で稼働しているアプリケーションおよびネイティブアプリケーションをカスタマイズできる。(例えば、リモートサーバに格納された)規則は、クライアント(例えば、ウェブサイトまたはネイティブアプリケーションの発行元)またはサービスプロバイダ(例えば、ウェブサイトまたはネイティブアプリケーションに埋め込まれたチャットアプリケーションのプロバイダなどの、ウェブアプリケーションまたはネイティブアプリケーションの拡張のプロバイダ)によって、オンデマンドで更新でき、その結果、基盤となるウェブサイトコードまたはネイティブアプリケーションコードの修正または再発行なしで、カスタマイズできる。
【0007】
[0027]ウェブコードは、ユーザデバイスが実行可能な任意のコードを含み得る。ウェブコードは、ユーザデバイスが実行可能な任意のスクリプトとすることができる。ウェブコードは、ユーザデバイスが実行可能な任意のJavaScript(登録商標)タグとすることができる。ウェブコードは、ウェブサイトに(例えば、静的または動的に)埋め込み可能なウェブアプリケーションの一部分または全体をさらに指すことができる。ウェブコードは、ウェブサイトに(例えば、静的または動的に)埋め込まれ、クライアントコンピュータで実行可能な任意のコードを指すことができる。本明細書で使用する場合、ウェブコードは、ハイパーテキストマークアップ言語(HTML)を指さない。
【0008】
[0028]一部の実施形態では、ウェブアプリケーションのサプライヤなどのウェブコードのサプライヤは、異なる環境および/または状況を対象とした、複数のウェブコードを開発できる。例えば、第1のウェブコードは、第1のスタイルのモバイルデバイス用に設計され、第1のスタイルのモバイルデバイスで使用できる、第1のウェブアプリケーションを提示でき、第2のウェブコードは、第2のスタイルのモバイルデバイス用に設計され、第2のスタイルのモバイルデバイスで使用できる、第2のウェブアプリケーションを提示でき、第3のウェブコードは、デスクトップデバイス用に設計され、デスクトップデバイスで使用できる、第3のウェブアプリケーションを提示できる。各ウェブアプリケーションは、アプリケーションの設計の目的となったデバイスの特定のハードウェアおよびソフトウェア機能を利用できる。これらの実施形態では、どのウェブコードを実行するか、それによって、どのウェブアプリケーションをユーザに提示するかを判定するために、ウェブページをロードする際にユーザデバイス固有属性へアクセスでき、かつ規則を評価する際にユーザデバイス固有属性を使用できる。ユーザデバイス固有属性の例として、ウェブページにアクセスするユーザデバイスに固有の任意の属性を示す情報を挙げることができ、この情報としては、デバイスのタイプ(例えば、電話、タブレット、デスクトップ、ラップトップなど)、デバイスの型式、デバイスが使用したブラウザ、ソフトウェアの対応バージョン(例えば、HTMLおよび/またはJavaScript(登録商標)の対応バージョン)、デバイスの対応画面サイズ、ユーザ固有属性(例えば、利用可能であれば、別のウェブアプリケーションではなく、特定のウェブアプリケーションを提示するという望みなどの、ユーザのデバイスのユーザ設定)、またはユーザデバイスに固有の、他の属性もしくは属性指標を挙げることができる。ユーザデバイスでどのウェブコードを実行するか(例えば、どのウェブアプリケーションをユーザに提示するか)を判定するために、本明細書で説明するように、ユーザデバイス固有属性を使用できる。
【0009】
[0029]一部の実施形態では、ユーザエージェント文字列を解析する、またはユーザエージェント文字列に別の方法でアクセスすることによって、ユーザデバイス固有属性を取得できる。例えば、ユーザエージェント文字列は、ユーザデバイスが使用したブラウザに関する情報を含むことができ、この情報を使用して、ユーザデバイスのタイプまたは他の属性を(例えば、ブラウザおよびバージョンを可能なブラウザおよびバージョンのデータベースと比較することによって)推定できる。
【0010】
[0030]一部の実施形態では、因子は、ウェブページのコンテンツに基づき得る。ウェブページのコンテンツには、企業名、顧客識別情報(例えば、顧客識別番号すなわち「顧客ID」)、単語、画像および他のウェブページ要素などの、ウェブページに含まれる可視および非可視の情報が含まれ得る。ウェブページのコンテンツの例としては、画面要素のサイズ、開発者(例えば、ウェブページ開発者)が有効化または無効化した機能(例えば、ビューポート要素などを通した、ピンチによるズーム機能の無効化)、顧客IDを含む可視または非可視要素、テキスト要素(例えば、タイトルまたはヘッダ)またはウェブページの他のタグもしくは要素を挙げることができる。ウェブページのコンテンツは、ウェブページをロードする際にユーザデバイスによってアクセスされ、本明細書で説明するように、ユーザデバイスでどのウェブコードを実行するか(例えば、どのウェブアプリケーションをユーザに提示するか)を判定するために使用され得る。
【0011】
[0031]例えば、ピンチによるズーム機能が無効である場合、ウェブアプリケーションの特定のバージョンを提示でき、他方、ピンチによるズーム機能が有効である場合、ウェブアプリケーションの異なるバージョンを提示できる。別の例では、具体的な顧客IDがウェブページに提示された場合、ウェブアプリケーションの完全バージョンを提示できる(例えば、本明細書でさらに詳細に説明するように、コードサーバ上のデータベースに対して、顧客IDを比較して、その顧客がウェブアプリケーションの完全バージョンへのアクセスを許可されているかどうか判定できる)が、具体的な顧客IDがウェブページに提示されない場合、ウェブアプリケーションの部分バージョンまたは別のウェブコードを提示できる。このような例では、ウェブアプリケーションサプライヤは、単純に、コードサーバ上の許可を更新する、またはコードサーバ上の動的コードを更新するだけで、ウェブアプリケーションのどのバージョンが利用可能であり、顧客のウェブサイトに注入できるかを動的に変更できる。一部の実施形態では、ウェブアプリケーションの異なるバージョンとしては、安定版リリースとベータ版リリースとを挙げることができる。さらなる例では、ウェブページ上に特定の要素が存在するか、または欠如しているかを含む因子(例えば、ウェブアプリケーションサプライヤのための属性ステートメント)を使用して、完全なウェブアプリケーションをユーザに提示するか否かを判定できる。このような例では、顧客が、顧客のウェブサイト上に必要な属性ステートメントを適切に含む場合のみ、完全なウェブアプリケーションを提供できる。このような例では、顧客が、属性ステートメントを適切に含まずに、ウェブアプリケーションを使用しようとする場合、ウェブアプリケーションは提示されない。他の使用方法も可能である。ウェブアプリケーションの異なるバージョンとしては、異なる視覚的要素(例えば、グラフィクスおよびウィンドウ)、異なる入力オプション(例えば、ボタンおよびフィールド)、ならびに全く異なる機能および他の差異を挙げることができる。
【0012】
[0032]一部の実施形態では、ロードされるウェブページは、実行され得る、すべての可能なウェブコード(「利用可能なコード」)ならびに因子にアクセスし、因子および規則に基づいて、実行する望ましいウェブコードを判定するのに必要な、すべてのウェブコードを含むことができる。本明細書で使用する場合、利用可能なコードの語は、実行され得る、可能なウェブコードを含み、各ウェブコードは、独自のウェブアプリケーションまたはウェブアプリケーションの一部分もしくは要素であり得る。
【0013】
[0033]一部の実施形態では、単一のJavaScript(登録商標)タグは、利用可能なコード(例えば、複数バージョンの単一ウェブアプリケーションまたは複数の別個のアプリケーションなどの複数のウェブアプリケーション)と、有効化コードとを含むコードを含み得る。有効化コードは、ユーザデバイスが、デバイスのタイプ(例えば、モバイルデバイスまたは非モバイルデスクトップデバイス)を示すユーザデバイス固有属性である因子にアクセスできるようにする。有効化コードはまた、因子に基づいて評価されて、どの利用可能なコード(例えば、望ましいウェブコード)を実行すべきかを判定し得る、1つ以上の規則を含み得る。1つ以上の規則を評価することにより、望ましいウェブコードを選択でき、次いで望ましいウェブコードをユーザデバイス上で実行できる。例えば、スマートフォンであるユーザデバイスが、上述のように、単一のJavaScript(登録商標)タグを含む特定のウェブページをロードした場合、ユーザデバイスは、モバイルバージョンのチャットルームウェブアプリケーションを提示する望ましいウェブコードを実行するに至り得る。デスクトップコンピュータが、同じ単一のJavaScript(登録商標)タグを含む同じウェブページをロードした場合、ユーザデバイスは、デスクトップバージョンのチャットルームウェブアプリケーションを提示する、異なる望ましいウェブコードを実行するに至り得る。一部の実施形態では、単一のウェブページの複数のJavaScript(登録商標)タグに利用可能なコードと有効化コードとの両方を埋め込むことができる。
【0014】
[0034]一部の実施形態では、ウェブページは、コードサーバから動的コードをウェブサイトに注入させる静的タグを含み得る。本明細書で使用する場合、「注入」の語は、ウェブページをロードする際、コードサーバからコードをダウンロードすること、またはその他の方法でアクセスすることと、コードの少なくとも一部分を実行することとを含む。一部の実施形態では、動的コードは、利用可能なコードと有効化コードとを含み得る。一部の実施形態では、静的タグは、因子にアクセスするためのコードを含み、かつ1つ以上の規則を含む、有効化コードを含む。一部の実施形態では、ウェブページをロードする際に注入される動的コードは、規則を評価したときに選択されなかったためにユーザデバイスで実行されずに至り得る不要なコードを含む利用可能なコードを含む。
【0015】
[0035]一部の実施形態では、静的タグは、因子にアクセスし、因子をコードサーバに送信するのに十分なコードを含む。このような実施形態では、コードサーバは、因子に基づいて規則を評価し、実行する望ましいコードを判定できる。次いで、コードサーバは、望ましいウェブコードのみを含む動的コードをユーザデバイスに提供できる。換言すると、このような実施形態では、ユーザデバイスで実際に実行されるコードのみが、ウェブページをロードする際に注入される。
【0016】
[0036]一部の実施形態では、規則は、因子に基づくものとすることができ、すべて利用可能なコードのうち、どのウェブコードをユーザデバイスで実行すべきかを示すことができる。例えば、規則を設定して、ユーザデバイスがデスクトップコンピュータであることを示す因子が提示された場合に、ユーザデバイスで実行するために第1のウェブコードが選択され得るようにできる。同じ規則または異なる規則を設定して、ユーザデバイスがタブレットであると提示された因子が示す場合に、ユーザデバイスで実行するために第2のウェブコードが選択され得るようにできる。一部の実施形態では、規則は、複数のサブ規則を含み得る、および/または複数の因子の評価を含み得る。他のタイプの規則も使用できる。
【0017】
[0037]本明細書で説明されるシステムおよび方法を使用することにより、単一の場所(例えば、コードサーバ)に格納したコードを更新することによって、ウェブアプリケーションサプライヤは、ウェブアプリケーションを容易に更新できる。加えて、ウェブアプリケーションサプライヤは、単一の場所(例えば、コードサーバ)から迅速かつ容易に、特定のデバイス用(例えば、携帯電話用)に使用される、または特定の環境で(例えば、ピンチによるズームが無効化されているウェブページで使用するための環境で)使用される、具体的なバージョンのウェブアプリケーションを迅速に更新できる。本明細書で開示されるシステムおよび方法により、ウェブ開発者は、ユーザのウェブブラウザを別のページにリダイレクトする必要なく、またユーザが、単にウェブページをロードする以外のやりとりをウェブページとする必要なく、複数のバージョンのウェブアプリケーションを単一のウェブページに含めることができる。
【0018】
[0038]一部のケースでは、(例えば、ウェブブラウザを介して実行するウェブアプリケーションとは対照的に)ネイティブアプリケーションで動的コード管理を行うことができる。ネイティブアプリケーションで実行される場合、コードのセグメントは、ユーザデバイス固有属性または実行されるアプリケーションのコンテンツなどの因子にアクセスできる。規則を(例えば、リモートサーバからアクセスおよび/または実行することによって)判定できる。因子を規則に適用して、ユーザデバイスが実行する1つ以上の望ましいコードのセグメント(例えば、ネイティブアプリケーションのコードのセグメント)を判定できる。一部のケースでは、サーバが規則を判定し適用するために、因子をリモートサーバに送信できる。リモートサーバは、命令またはコードを送信して、ユーザデバイスで実行中のネイティブアプリケーションに返すことができ、命令またはコードは、実行時、ネイティブアプリケーションに1つ以上の望ましいコードのセグメント(例えば、ネイティブアプリケーションの既存のコード)を実行させる。
【0019】
[0039]本開示の特定の実施態様および特徴はまた、様々な画面サイズを有するデバイスで使用するための、インターネットチャットアプリケーションなどのインターネットアプリケーションを最適化するための方法、システムおよびコンピュータプログラム製品に関する。特に、本開示は、モバイルデバイスなどのデバイスにロードしたウェブサイト上でチャットまたは他の機能を提供でき、インタラクションウィンドウ(例えば、チャットウィンドウ)は、基盤となるウェブサイトの大きさではなく、モバイルデバイスの画面に応じて最適化される。本開示は、インタラクションウィンドウが表示されているときはいつでも、サイトまたはウェブページをズーム不可と識別するために、ビューポートタグを変更することと、次いで、インタラクションウィンドウが表示されていない場合、ビューポートタグをその元の設定または初期設定に戻すことと、を含み得る。
【0020】
[0040]以下の説明は、好ましい実施形態(複数可)の例のみを提供するものであり、本開示の範囲、適用可能性または構成を限定することを意図するものではない。むしろ、以下の、好ましい実施形態(複数可)の例の説明は、当業者に、好ましい実施形態の例の実施を可能にする説明を提供する。添付の特許請求の範囲で説明する趣旨および範囲から逸脱することなく、要素の機能および配置に様々な変更をなし得ることを理解されたい。
【0021】
[0041]本明細書で説明する特定の実施形態および特徴を実装し、かつサポートする、ネットワークインタラクションシステム100の一実施形態のブロック図を図1に示す。特定の実施形態は、ネットワークデバイス105(ユーザ110が操作可能)と、端末デバイス115(エージェント120が操作可能)との間の接続チャネルを確立することに関する。特定の実施形態では、ネットワークインタラクションシステム100は、クライアント125と関連するクライアントデバイス130を含み得る。
【0022】
[0042]特定の実施形態では、ユーザ110は、リモートサーバ140が提供する、ウェブサイトを閲覧する、またはオンラインサービスにアクセスする個人であり得る。クライアント125は、ウェブサイトもしくはオンラインサービスを提供、操作または稼働する事業体、またはそのような事業体に雇用または任命された個人であって、本明細書で説明されるように、クライアント125が利用可能なタスクを行い得る。エージェント120は、ウェブサイトまたはオンラインサービスに関するサポートまたは情報(例えば、オンラインストアで入手可能な製品に関する情報)をユーザ110に提供する任務を負う、サポートエージェントまたは販売員などの個人であり得る。多数のエージェントの中でも、特定のクライアント125のためにサポートまたは情報を提供するのにふさわしいのは、エージェントの一部である場合がある。エージェント120は、クライアント125と提携していてもしていなくてもよい。各エージェントは、1つ以上のクライアント125と連携できる。一部の非限定的な例では、ユーザ110は、パーソナルコンピューティングデバイスからオンラインストアで買い物をする個人であり、クライアント125は、製品をオンラインで販売する企業であり、エージェント120は、企業に雇用された販売員であり得る。様々な実施形態において、ユーザ110、クライアント125およびエージェント120は、他の個人または事業体であり得る。
【0023】
[0043]図1は、単一のネットワークデバイス105、端末デバイス115およびクライアントデバイス130のみを示しているが、インタラクションシステム100は、これらのタイプのデバイスのうちの1つ以上のそれぞれを、複数または多数(例えば、数十、数百または数千)含み得る。同様に、図1は、単一のユーザ110、エージェント120およびクライアント125のみを示しているが、インタラクションシステム100は、これらの事業体のうちの1つ以上のそれぞれを、複数または多数含み得る。よって、所与のネットワークデバイスと通信するために、どの端末デバイスを選択するかを判定する必要があり得る。さらに事態を複雑にしているのは、リモートサーバ140もまた、ネットワークデバイス通信を選択するために、受信および応答するように構成され得ることである。
【0024】
[0044]接続管理システム150は、通信の戦略的ルーティングを促進し得る。通信は、(例えば、タイプ入力または口頭入力などの、事業体からの入力に基づいて規定された)コンテンツ付きのメッセージを含み得る。通信はまた、送信デバイス(例えば、IPアドレス、アカウント識別子、デバイスタイプおよび/またはオペレーティングシステム)、宛先アドレス、クライアントの識別子、ウェブページまたはウェブページ要素の識別子(例えば、通信を生成したときに訪問された、またはその他の方法で通信に関連する、ウェブページまたはウェブページ要素)、もしくはオンライン履歴データ、時間(例えば、時刻および/または日付)、および/または宛先アドレスに関するデータなどの追加的なデータを含み得る。他の情報を通信に含むこともできる。一部の場合では、接続管理システム150は、全通信を別のデバイスにルーティングする。一部の場合では、接続管理システム150は、(例えば、最初の通信に基づいて)通信を修正する、または新しい通信を生成する。新しいまたは修正された通信は、メッセージ(または処理したバージョンのメッセージ)、追加的なデータの少なくとも一部(またはすべて)(例えば、送信デバイス、ウェブページもしくはオンライン履歴および/または時間)、および/または接続管理システム150が識別した他のデータ(例えば、特定のアカウント識別子またはデバイスに関連するアカウントデータ)を含み得る。新しいまたは修正された通信は、他の情報もまた含み得る。
【0025】
[0045]戦略的ルーティング促進の一部は、ネットワークデバイス105と1つ以上の端末デバイス115との間で1つ以上の接続チャネルを確立、更新および使用することを含み得る。例えば、ネットワークデバイス105から通信を受信すると、接続管理システム150は、(ある場合)どのクライアントに通信が対応するかを、まず予測し得る。クライアントを識別すると、接続管理システム150は、ネットワークデバイス105との通信のために、クライアントに関連する端末デバイス115を特定できる。一部の場合では、識別には、複数のエージェント(または専門家もしくは代理人)のそれぞれのプロファイルを評価することを含み、複数のエージェント中の各エージェント(例えばエージェント120)は、端末デバイス(例えば、端末デバイス115)に関連し得る。評価は、ネットワークデバイスのメッセージのコンテンツに関連し得る。端末デバイス115の識別は、例えば、2010年3月17日に出願の米国特許出願第12/725,799号明細書に説明されている技法を含むことができ、その全体が、すべての目的のために参照により本明細書に組み込まれる。
【0026】
[0046]一部の場合では、接続管理システム150は、ネットワークデバイス105とクライアント(またはリモートサーバ140)に関連する端末デバイスとの間になんらかの接続チャネルが確立されているかどうか、また確立されている場合、そのようなチャネルを使用して、この通信を含む一連の通信を交換するかどうかを判定できる。この判定は、少なくとも部分的に、通信に関連するトピック、通信もしくは過去の関係する通信に関連する感情スコア、端末デバイス115の予測される(例えば、相対または絶対)レスポンス遅延および/または通信に関連する通信チャネルのタイプ(例えば、インスタントメッセージ、メッセージ、電子メール、電話)によって決まり得る。確立した通信チャネルを選択することにより、一貫性が促進され、ネットワークデバイス105からの情報を何度も中継する必要性を低減され得る。その一方、新しい通信チャネルが確立されると判定することにより、より専門化したエージェントからの迅速なレスポンスを促進できる。
【0027】
[0047]確立した通信チャネルを選択する(または使用し続ける)かどうかに関する判断および/または新しい端末デバイスの選択には、(例えば、クライアントに関連する)1つ以上の端末デバイスのそれぞれが通信および/または関連ユーザに対応する範囲を判定することが含まれ得る。このような対応は、例えば、エージェントの知識ベースが、通信トピック、所与の時間および/もしくはあるチャネルタイプにおけるエージェントの利用可能性、ユーザとエージェントとの間の言語マッチ、ならびに/または性格分析に対応する範囲に関係し得る。
【0028】
[0048]接続管理システム150は、ルーティング判定(例えば、通信を送信したネットワークデバイスからの通信を以前に受信した端末デバイスに通信をルーティングするかどうかを判定すること、または通信を受信または送信するために端末デバイスを選択すること)に影響を及ぼす通信解析を使用できる。1つの通信解析には、現在または過去の通信または一連の通信の1つ以上のカテゴリまたはタグを判定および評価することを含み得る。例えば、通信には、(例えば)トピック、チャネルタイプ(例えば、電子メール、SMSメッセージ、リアルタイムチャット、電話または非同期メッセージ)、言語、複雑度、感情、および/またはファイルタイプを取り付けるかどうか/どのファイルタイプを取り付けるかのそれぞれについてカテゴリが割り当てられ、端末デバイス選択には、同様、同じまたは相補的な知識ベース、チャネルタイプ利用可能性、言語、スキルレベル、感情および/またはファイルタイプ能力に関連する端末デバイス寄りのバイアスがかけられ得る。
【0029】
[0049]一部のケースでは、通信解析は、本明細書で説明するように、クライアントデバイス130の因子を判定して、クライアントデバイス130の能力を判定することを含み得る(例えば、デバイスが高速インターネット接続に接続されているかどうか、デバイスがテレビ電話を扱うのに必要な中央処理装置(CPU)またはグラフィック処理装置(GPU)速度を有しているかどうか、デバイスがテレビ電話を扱うのにカメラを有しているかどうかなど)。通信解析は、ルーティング判定に影響を及ぼすために、因子に基づいて規則を判定し適用することを含み得る。
【0030】
[0050]ネットワークデバイス105と通信するための端末デバイス115を選択すると、接続管理システム150は、ネットワークデバイス105と端末デバイス115との間に接続チャネルを確立できる。一部の場合では、接続管理システム150は、選択した端末デバイス115にメッセージを送信できる。メッセージは、ネットワークデバイス105と通信するために提案された割り当ての承諾を要求してもよいし、そのような割り当てが行われたことを識別してもよい。メッセージは、ネットワークデバイス105に関する情報(例えば、IPアドレス、デバイスタイプおよび/またはオペレーティングシステム)、関連するユーザ110に関する情報(例えば、話す言語、クライアントとのやりとりの継続時間、スキルレベル、感情および/またはトピックの好み)、受信した通信、ネットワークデバイス105に通信を生成および送信するためのコード(例えば、クリック可能なハイパーリンク)および/またはネットワークデバイス105に通信を生成および送信するための命令を含み得る。
【0031】
[0051]1つの場合では、ネットワークデバイス105と端末デバイス115との間の通信は、接続管理システム150を通してルーティングされ得る。このような構成により、接続管理システム150が、通信交換を監視し、いずれかのデバイスの非応答性または遅延が延びていることなどの(例えば、規則に基づいて規定されたような)問題を検出できる。さらに、このような構成により、選択的または完全な通信の保存を促進でき、これを使用して、例えば、通信交換の品質を評価してもよい、および/または特定の通信後ターゲットのレベルを上げるために、ルーティング規則を更新または生成するための学習を支援してもよい。このような保存はまた、ネットワークデバイスと第1の端末デバイスとの間のメッセージ履歴の生成を促進し、第2の端末デバイスがネットワークデバイスとの既存の一連の通信に加わろうとしている、または新しい一連の通信に参加しようとしていると判定された場合、メッセージ履歴を(例えば)第2の端末デバイスに送信できる。
【0032】
[0052]一部の実施形態では、接続管理システム150は、通信交換をリアルタイムで監視し、ライブ通信に基づいて自動アクション(例えば、規則に基づくアクション)を行うことができる。例えば、通信が特定の製品に関係すると接続管理システム150が判定した場合、接続管理システム150は、製品に関する追加的な情報を含む追加的なメッセージを端末デバイス115に自動的に送信できる(例えば、在庫の製品の品質、製品に関係するサポート文書へのリンク、または製品または同様の製品に関する他の情報)。
【0033】
[0053]1つの場合では、指定された端末デバイス115は、接続管理システム150を通して通信を中継せずとも、ネットワークデバイス105と通信できる。一方または両方のデバイス105、115は、通信の監視および/またはデータの保存を促進するために、特定の通信指標またはコンテンツを接続管理システム150に報告しても(しなくても)よい。接続管理システム150に報告される通信指標またはコンテンツは、本明細書で詳述するように、クライアントデバイス130の因子とすることができる。
【0034】
[0054]既に述べたように、接続管理システム150は、選択された通信をリモートサーバ140にルーティングし得る。リモートサーバ140は、情報を既定の方式で提供するように構成され得る。例えば、リモートサーバ140は、規定の文字列の1以上の節、音声記録および/またはファイルにアクセスして、通信に応答して送信し得る。リモートサーバ140は、例えば、受信した通信の解析(例えば、意味解析またはマッピング解析)に基づいて、特定の文字列の一節、記録またはファイルを選択してもよい。
【0035】
[0055]接続管理システム150で行われるルーティングおよび/または他の判定もしくは処理は、1つ以上のクライアントデバイス130によって少なくとも部分的に規定または提供される、規則および/またはデータに基づいて行われ得る。例えば、クライアントデバイス130は、エージェントの優先順位付け、端末デバイスタイプおよび/またはトピック/スキルマッチングを識別する通信を送信してもよい。別の例として、クライアントデバイス130は、潜在的にルーティング判定に影響する様々な変数に適用するための、1つ以上のウェイトを識別し得る(例えば、言語互換性、予測されるレスポンス時間、デバイスタイプおよび能力ならびに/または端末デバイス負荷分散)。どの端末デバイスおよび/またはエージェントがクライアントと関連されるかは、動的であってよいことが理解されよう。クライアントデバイス130および/または端末デバイス115からの通信は、所与の端末デバイスおよび/またはエージェントがクライアントに関連するものとして追加または除去されることを示す情報を提供してもよい。例えば、クライアントデバイス130は、IPアドレスと、クライアント関連端末デバイス識別するリストにアドレスを有する端末デバイスを追加またはリストから除去するかどうかに関する指示と共に通信を送信できる。
【0036】
[0056]1つの場合では、接続管理システム150は、ネットワークデバイス105と第1の端末デバイス115との間の最初のマッチングおよびルーティングを促進する。例えば、ネットワークデバイス105からの通信で受信したメッセージを、第1の端末デバイスにルーティングできる。別の例として、接続管理システム150は、(例えば、一連の通信を開始する)通信をネットワークデバイス105に送信するための要求または命令を含むまたは示す通信を第1の端末デバイスに送信できる。
【0037】
[0057]接続管理システム150は、ネットワークデバイス105と第1の端末デバイスとの間の対応する一連の通信を監視および/または解析して、特性を判定できる。例えば、接続管理システム150は、1つ以上の通信におけるメッセージコンテンツを解析できる(例えば、解析して、「frustrat*」、「very」、「thank」もしくは「irritat*」、「!」または大文字などの特定の単語、記号または文字のタイプが使われているかどうか、および/またはどのくらい使われているかを判定できる)。別の例として、接続管理システム150は、1つ以上のメッセージおよび/または一連の通信それぞれに関連する1つ以上の統計値を判定できる。統計値の例として、例えば、(例えば、単語または文字単位の)メッセージ長、通信の受信と応答通信の送信との間の遅延、後続のメッセージ送信間の遅延、またはメッセージをタイプする際のタイピングの速さを挙げることができる。さらに別の例として、接続管理システム150は、ネットワークデバイス105または第1の端末デバイスで最初に検出され、次いで、接続管理システム150で識別された、1つ以上の入力を受信および処理できる。このような入力は、例えば、感情、再ルーティング要求または解決段階を識別できる。
【0038】
[0058]一部のケースでは、接続管理システム150は、例えば、感情、再ルーティング要求または解決段階を示すクライアントデバイス130の因子を受信できる。例えば、クライアントデバイス130の激しい振動を示す加速度計データを含む因子は、不満を示すものとすることができる。別の例として、店のレジの近くであることを示すクライアントデバイス130の場所情報を含む因子は、特定の解決段階(例えば、検討中の製品の購入希望)を示すものとすることができる。クライアントデバイス130が受信または実行した場合、クライアントデバイス130上で稼働しているウェブアプリケーションまたはネイティブアプリケーションをカスタマイズできる特定の命令をクライアントデバイス130に送信するように判定するために、因子は、接続管理システム150が受信した場合、規則に適用できる。例えば、接続管理システム150で不満を検出すると、接続管理システム150は、クライアントデバイス130で稼働中のアプリケーションに追加的な解決段階オプションを提示させる、またはフィードバックの機会を提示させる命令を送信できる。別の例では、接続管理システム150において(例えば、検討中の製品を購入したいとの望みを示す)特定の解決段階を検出すると、接続管理システム150は、クライアントデバイス130で稼働中のアプリケーションにクーポンもしくはリベート情報またはソーシャルメディアネットワークで購入したこと共有する機会を提示させる命令を送信できる。
【0039】
[0059]接続管理システム150は、(例えば、統計値を含むメッセージコンテンツを特徴付ける、または入力を特徴付ける)特性を評価して、特定の方式で続くルーティングにバイアスをかけるかどうかを判定できる。例えば、連続チャネル規則は、(ネットワークデバイスとの通信交換に以前参加した)第1の端末デバイス寄りのバイアスをネットワークデバイスメッセージのルーティングにいつかけるかを指定する、特性に関係する条件を含み得る。規則は、条件を満たすことによって、ネットワークデバイスと第1の端末デバイスとの間で連続チャネルが確立されるように構成できる。連続チャネルにより、ネットワークデバイスからの後続のメッセージが第1の端末デバイスに自動的にルーティングされ得る、および/または第1の端末デバイスに優先的にルーティングされ得る。連続チャネルは、複数の一連の通信を通じて持続するように構成され得る。例えば、第1の一連のメッセージは、最初の日にネットワークデバイスと第1の端末デバイスとの間で交換され、チャネルは、次の日に送信されたネットワークデバイスからの別のメッセージのルーティングにバイアスをかけて、同じ第1の端末デバイスにルーティングされるようにすることができる。このようなバイアスの大きさは、例えば、ネットワークデバイスと第1の端末デバイスとの間の前回のインタラクションからの時間(例えば、過去のインタラクションが最近であった場合にバイアスを強める)、ネットワークデバイスと第1の端末デバイスとの間の前回のメッセージ交換における通信のすべての持続時間および/もしくは数、ならびに/またはネットワークデバイスと第1の端末デバイスとの間の前回のメッセージ交換の数(および/または交換したメッセージの累積インタラクション時間または回数)によって決まり得る。
【0040】
[0060]連続チャネルを確立すると、接続管理システム150は、ユーザ110に連続チャネルが確立したことを通知するように、ネットワークデバイス105で提示(例えば、通知)を提示することをさらに促進して、第1の端末デバイスもしくは関連するユーザを識別する、および/または後続のメッセージがルーティングされる、もしくは第1の端末デバイス寄りにバイアスをかけられてルーティングされることを示す(例えば、チャネルの識別子と関連付けられて送信される、特定のクライアントに関連付けられるなど)ことができる。
【0041】
[0061]反対に、接続管理システム150は、特性が、ネットワークデバイス105からの(例えば、クライアントに関する)後続のメッセージが同じ第1の端末デバイスにルーティングされない、および/または再ルーティングされることを示すと判定してもよい。例えば、連続チャネル規則の条件が満たされていないことを判定できる。そのような判定の際、接続管理システム150は、新しい端末デバイスを識別して、ネットワークデバイスとの(例えば、クライアントに関する)通信をルーティングできる。
【0042】
[0062]1つの場合では、連続チャネル規則は、連続チャネルが、2つのデバイスの間の通信の最初のルーティングに続いて、ネットワークデバイスと端末デバイスとの間で確立されるように構成される。よって、連続チャネルは、単一のメッセージ交換内で一貫したメッセージルーティングを促進する役に立ち得る。代替的または同じ場合では、連続チャネル規則は(同様に、または代替的に)、異なる一連のメッセージ(例えば、時間が隔たった一連のメッセージ)間において一貫したメッセージルーティングを促進するように、連続チャネルが確立、維持または使用されるように構成され得る。実施形態に応じて、連続チャネル規則は、所与のネットワークデバイスおよび/またはクライアントに関して提供され得る連続チャネルの数を制限できる。例えば、規則は、所与のネットワークデバイスおよびクライアントに関し、ネットワークデバイスのみを連続チャネルを介して1つ(または3つもしくは別の指定される数)の端末デバイスに接続できることを示し得る。
【0043】
[0063]一部の場合では、接続管理システム150は、(例えば、再ルーティング規則において条件が満たされたことに基づいて)再ルーティングする処理を開始することを判定できる。判定は、(例えば、統計値を含むメッセージコンテンツを特徴付ける、または入力を特徴付ける)特性に基づき得る。例えば、再ルーティング規則は、ユーザの不満または不満足を示す特性を検出すると、問題の解決に向かう許容可能な進展の欠如を示す特性を検出すると、許容できない端末デバイス通信の統計値(例えば、長いレスポンス遅延)を検出すると、またはメッセージが新しいトピックに集中し始めていることを検出すると、再ルーティングを開始するように構成できる。
【0044】
[0064]再ルーティング処理は、異なる端末デバイスを識別して、ネットワークデバイス105との通信交換に参加することを含み得る。このような識別は、例えば、通信に関連するトピック、通信もしくは過去の関係する通信に関連する感情スコア、端末デバイス115の予測される(例えば、相対または絶対)レスポンス遅延、通信に関連する通信チャネルのタイプ(例えば、インスタントメッセージ、メッセージ、電子メール、電話)、言語マッチ、1つ以上の他の端末デバイスのそれぞれのタイプ、1つ以上の他の端末デバイスの能力、および/またはネットワークデバイス通信複雑度とのエージェントのスキルのマッチに基づき得る。異なる端末デバイスの選択は、第1の端末デバイスの選択と比べて、同じ、同様または異なる方式で行われてもよい。例えば、再ルーティング規則の条件が満たされたことを判定することにより、より上級の広範な知識ベースおよび/またはより良い言語能力に関連するデバイス寄りのバイアスを後続の端末デバイス選択にかけてもよい。
【0045】
[0065]再ルーティング処理は、ネットワークデバイス105、第1の端末デバイスまたは異なる端末デバイスなどの1つ以上のデバイスに提案された再ルーティングを識別する通知を送信することを含み得る。通知は、提案された再ルーティングを受諾するオプションおよび/または拒否するオプションを含み得る。通知は、ネットワークデバイス105、第1の端末デバイスおよび/もしくは異なる端末デバイスならびに/または関連者に関する情報を含み得る。
【0046】
[0066]端末デバイス間の急激な移行を抑制するために、接続管理システム150は、オーバーラップ期間を調整できる。この期間の間、第1の端末デバイスおよび異なる端末デバイスのそれぞれは、ネットワークデバイス105から1つ以上の通信(またはその処理されたバージョン)を受信できる。例えば、ネットワークデバイス105からの新しい通信を複製し、次いで、第1の端末デバイスおよび異なる端末デバイスのそれぞれにルーティングできる。
【0047】
[0067]一部の場合では、接続管理システム150は、ネットワークデバイス105からおよび/または第1の端末デバイスからの複数のメッセージを含む動的メッセージ記録を生成できる。記録は、例えば、通信交換におけるすべてのメッセージ、規定の期間(例えば、3分)内でルーティングされるすべてのメッセージ、または1つ以上の規定のタグまたはカテゴリに関連するすべてのメッセージを含み得る。例えば、特定のトピック、(例えば、不満足に対応する)感情または(例えば、質問を含む)コンテンツタイプに関するメッセージを選択できる。接続管理システム150は、異なる端末デバイスに動的メッセージ記録を送信できる。ネットワークデバイス105および/または第1の端末デバイスからの新しいメッセージを異なる端末デバイスへさらに送信して、動的メッセージ記録がそのような新しいメッセージに加えられ得るようにできる。動的メッセージ記録のためのメッセージ選択および/または動的メッセージ記録を提供するかどうかはまた、一時的にクラスタ化された一連のメッセージの間または一連のメッセージの間に再ルーティングを行うかどうかによって決まり得る。
【0048】
[0068]一部の場合では、接続管理システム150は、第1の端末デバイスへのルーティング通信を停止するかどうか、および/または停止するのはいつかを判定できる。例えば、このようなルーティングの終了は、異なる端末デバイスから応答通信を検出すると、メッセージ記録の送信に続き規定の期間が経過した後、通信交換を出る意図を示す、第1の端末デバイスで受信した入力を検出した後、通信交換を扱う意図を示す、異なる端末デバイスで受信した入力を検出した後、異なる端末デバイスに対する提案された再ルーティングの有効化を要求する、ネットワークデバイス105で受信した入力を検出した後などに行われ得る。
【0049】
[0069]再ルーティング転送を開始する規則または理由に応じて、再ルーティングは、(例えば、低いユーザ感情に応じて再ルーティング処理が開始された場合)ネットワークデバイス105と第1の端末デバイスとの間の接続チャネルを解放すること、および/またはネットワークデバイス105と異なる端末デバイスとの間で新しい接続チャネルを確立することを含み得る。
【0050】
[0070](例えば、デバイス間、デバイスと接続管理システム150との間、リモートサーバ140と接続管理システム150との間、またはリモートサーバ140とデバイスとの間の)各通信は、1つ以上のネットワーク170を介して行われ得る。1つ以上のネットワーク170にはオープンまたはクローズドネットワークの任意の組み合わせが含まれ得る。好適なネットワークの例としては、インターネット、パーソナルエリアネットワーク、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)または無線ローカルエリアネットワーク(WLAN)を挙げることができる。他のネットワークもまた好適であり得る。1つ以上のネットワーク170は、イントラネット、エクストラネットもしくはこれらの組み合わせに完全に組み込まれ得る、またはイントラネット、エクストラネットもしくはこれらの組み合わせを含み得る。一部の場合では、1つ以上のネットワーク170におけるネットワークは、Bluetooth(登録商標)またはBluetooth(登録商標) Low Energyチャネルなどの短距離通信チャネルを含む。一実施形態では、2つ以上のシステムおよび/またはデバイスの間の通信は、セキュアソケットレイヤ(SSL)またはトランスポート層セキュリティ(TLS)などのセキュア通信プロトコルによって達成され得る。加えて、データおよび/またはトランザクションの細部は、限定するものではないが、データ暗号化標準(DES)、トリプルDES、リベスト-シャミア-エーデルマン暗号化(RSA)、ブローフィッシュ暗号化、高度暗号化標準(AES)、CAST-128、CAST-256、無相関高速暗号(DFC)、Tiny Encryption Algorithm(TEA)、eXtended
TEA(XTEA)、Corrected Block TEA(XXTEA)、および/またはRC5などの、任意の簡便な既知またはこれから開発される方式に基づいて暗号化してもよい。
【0051】
[0071]ネットワークデバイス105、端末デバイス115および/またはクライアントデバイス130は、例えば、携帯用電子デバイス(例えば、スマートフォン、タブレット、ラップトップコンピュータまたはスマートウェアラブルデバイス)または非携帯用電子デバイス(例えば、1つ以上のデスクトップコンピュータ、スマート機器、サーバおよび/またはプロセッサ)を含み得る。接続管理システム150は、ネットワーク、端末およびクライアントデバイスとは別々に収容できる、または(例えば、デバイス上にアプリケーションをインストールすることにより)1つ以上のそのようなデバイスの一部としてもよい。リモートサーバ140は、各デバイスおよび接続管理システム150とは別々に収容してもよいし、別のデバイスまたはシステムの一部としてもよい。図1の各デバイス、サーバおよびシステムは単一のデバイスとして示されているが、そうではなく複数のデバイスを使用してもよいことを理解されたい。例えば、一式のネットワークデバイスを使用して、単一のユーザからの様々な通信を送信できる、またはリモートサーバ140がサーバスタックを含み得る。
【0052】
[0072]ソフトウェアエージェントまたはアプリケーションを、図示のデバイス、システムまたはサーバ上にインストールおよび/または図示のデバイス、システムまたはサーバ上で実行してもよい。1つの場合では、ソフトウェアエージェントまたはアプリケーションは、様々な図示の要素が相補的に動作できるように構成される。例えば、デバイス上のソフトウェアエージェントが、別個の接続管理システムにデバイス使用量に関するデータを収集および送信するように構成され、別個の接続管理システム上のソフトウェアアプリケーションが、データを受信および処理するように構成され得る。
【0053】
[0073]図2は、ネットワークインタラクションシステム200の別の実施形態のブロック図を示す。一般的に、図2は、ネットワークデバイス205が1つ以上の端末デバイス215と通信できるように構成および配置される、様々なコンポーネントを示している。図示の場合、3つのローカルエリアネットワーク235に含まれる、9つの端末デバイス215を含む。
【0054】
[0074]一部の場合では、ネットワークデバイス205からの通信は、どの端末デバイスが通信を受信するのかを少なくとも部分的にまたは完全に示す宛先データ(例えば、宛先IPアドレス)を含む。ネットワークインタラクションシステム200は、宛先データを処理し、適切なルーティングを促進できる、1つ以上のネットワーク間接続コンポーネント245および/または1つ以上のネットワーク内接続コンポーネント255を含み得る。
【0055】
[0075]各ネットワーク間接続コンポーネント245は、複数のネットワーク235に接続され、(例えば、各カードが異なるネットワークに接続される)複数のネットワークカードをインストールされ得る。例えば、ネットワーク間接続コンポーネント245は、広域ネットワーク270(例えば、インターネット)と1つ以上のローカルエリアネットワーク235とに接続され得る。図示の場合、ネットワークデバイス205から任意の端末デバイスに通信を送信するために、図示のシステムでは、複数のネットワーク間接続コンポーネント245が通信を扱わなければならない。
【0056】
[0076]ネットワーク間接続コンポーネント245が通信(または通信に対応する一式のパケット)を受信した場合、ネットワーク間接続コンポーネント245は、宛先に関連するネットワークに通信を送る経路の少なくとも一部分を判定できる。経路は、例えば、(例えば、ルータに格納した)ルーティングテーブルを使用して判定でき、ルーティングテーブルは、予め定義された、(例えば、別のルータから、または別のデバイスから)到着したメッセージに基づいて生成した、または学習した1つ以上のルーティングを含み得る。
【0057】
[0077]ネットワーク間接続コンポーネント245の例として、ルータ260およびゲートウェイ265が挙げられる。ネットワーク間接続コンポーネント245(例えば、ゲートウェイ265)は、ネットワークシステム間またはプロトコル間で変換するように構成され得る。例えば、ゲートウェイ265は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)デバイスとインターネットワークパケット交換/順次パケット交換(IPX/SPX)デバイスとの間の通信を促進し得る。
【0058】
[0078]ローカルエリアネットワーク235で通信を受信すると、さらなるルーティングを依然として行う必要がある場合がある。スイッチ280またはハブ285などのネットワーク内接続コンポーネント255を介して、このようなネットワーク内ルーティングを行うことができる。各ネットワーク内接続コンポーネント255は、(例えば、無線またはイーサネット(登録商標)ケーブルなどを介して有線で)複数の端末デバイス215に接続され得る。ハブ285は、ハブが接続された各デバイスに対して、すべての受信した通信を繰り返すように構成され得る。次いで、各端末デバイスは、各通信を評価して、端末デバイスが宛先デバイスであるかどうか、または通信を無視するかどうかを判定できる。スイッチ280は、通信を宛先端末デバイスのみに選択的に導くように構成され得る。
【0059】
[0079]一部の場合では、ローカルエリアネットワーク235は、複数のセグメントに分割でき、セグメントのそれぞれは、独立したファイアウォール、セキュリティ規則およびネットワークプロトコルに関連付けされ得る。ネットワーク内接続コンポーネント255は、セグメントのうちの1つ以上またはすべてのそれぞれに設けて、セグメント内ルーティングを促進することができる。ブリッジ290は、セグメント275間で通信をルーティングするように構成され得る。
【0060】
[0080]ネットワーク間または内で通信を適切にルーティングするために、様々なコンポーネントが、通信内の宛先データを解析する。例えば、このようなデータは、どのネットワークに通信をルーティングするか、ネットワーク内のどのデバイスに通信をルーティングするか、またはどの通信を端末デバイスが(無視せずに)処理するかを示すことができる。しかしながら、一部の場合では、ネットワークデバイスからの通信にどの端末デバイスが参加するか(またはどのネットワークが参加するかさえ)すぐに明らかにならない。
【0061】
[0081]例として、一式の端末デバイスが、同様のタイプの応答通信を提供するように構成され得る。これにより、どのネットワークデバイスに通信がルーティングされるかにかかわらず、ネットワークデバイスからの通信におけるクエリが同様の方式で応答され得ることが期待できる。この仮定は上位レベルで真であるが、端末デバイスに関係する様々な細部では、他のルーティングと比べて有利な特定のルーティングが生じ得る。例えば、この一式内の端末デバイスは、(例えば)どの通信チャネルがサポートされるか、ネットワークデバイスに対する地理的および/またはネットワーク的近接性、および/または関連するエージェントの特性(例えば、知識ベース、経験、話す言語、利用可能性、一般的な性格または感情など)に関して、互いに異なり得る。したがって、ルーティングの選択により、ネットワークデバイス通信により正確および/または完全に応答するより高速な応答を促進し得る。複雑なのは、ネットワークデバイスを端末デバイスにマッピングする静的ルーティングが、通信トピック、チャネルタイプ、エージェント利用可能性などの変動を考慮に入れることを失敗し得るということである。
【0062】
[0082]図3A図3Cは、接続管理システムを含むネットワークインタラクションシステム300a~300cの他の実施形態のブロック図を示す。図示のシステム300a~300cのそれぞれは、簡潔にするため、2つのローカルエリアネットワーク235のみを示しているが、各実施形態を拡張して、ローカルエリアネットワークの数を拡大できることを理解できよう。システム300a~300cのそれぞれが接続管理システム350を含み、接続管理システム350は、どの端末デバイスがネットワークデバイス205と通信するかを識別する、接続チャネルを確立および管理(例えば、維持または解放)する、ある交換において通信を再ルーティングかどうか、いつするかを判定するなどを行うことができる。このように、接続管理システム350は、通信、エージェント利用可能性、端末デバイスまたはエージェントの能力などを動的かつリアルタイムで評価して、ルーティング判定に影響を及ぼすように構成され得る。
【0063】
[0083]図3Aでは、接続管理システム350は、ネットワークデバイス205とリモートサーバ340とのそれぞれと連携する(例えば、接続管理システム350aは、ネットワークデバイス205と連携し、接続管理システム350bは、リモートサーバ340と連携する)。例えば、接続管理システム350aおよび/または接続管理システム350bは、それぞれ、ネットワークデバイス205とリモートサーバ340とのそれぞれにアプリケーションとしてインストールまたは格納され得る。アプリケーション(複数可)を実行することにより、例えば、ネットワークデバイス205とリモートサーバ340との間の通信を促進して、ネットワークデバイス205との通信交換に参加するように選択された端末デバイス215を識別できる。本明細書で開示される1つ以上の因子に基づいて、識別を行うことができる(例えば、利用可能性、エージェントまたは端末デバイスの知識ベースに関する通信のトピック/詳細度の間のマッチング、予測した遅延、チャネルタイプ利用可能性など)。
【0064】
[0084]クライアントデバイス330は、ルーティング判定を行う仕方を示すクライアントデータを供給できる。例えば、このようなデータは、特定の特性に重み付けもしくはマッチングする仕方に関する指示、または(例えば、負荷分散または予測した応答遅延に関する)制約もしくはバイアスを含み得る。クライアントデータはまた、いつ通信チャネルを確立(または解放)するか、またはいつ通信を異なるネットワークデバイスに再ルーティングするかに関係する仕様を含み得る。クライアントデータを使用して、通信のルーティング、チャネルの確立、管理または解放、通信の再ルーティング、通信のカテゴリ化などのための規則などの、様々なクライアント固有の規則を規定できる。
【0065】
[0085]リモートサーバ340上で稼働する接続管理システム350bは、どの通信チャネルをサポートするか、ネットワークデバイスに対する地理的および/もしくはネットワーク的な近接性、端末デバイスとの通信遅延および/もしくは安定性、端末デバイスのタイプ、端末デバイスの能力、端末デバイス(またはエージェント)が所与のネットワークデバイス(またはユーザ)と以前通信したかどうか、ならびに/または関連するエージェントの特性(例えば、知識ベース、経験、話す言語、利用可能性、一般的な性格または感情など)などの、端末デバイスに関する(例えば、所与のクライアントに関する)様々な指標を監視できる。したがって、接続管理システム350bは、ルーティングを選択して、指標に基づいて、ネットワークデバイス通信により正確および/または完全に応答するより高速な応答を促進できるようにされ得る。
【0066】
[0086]図3Aに示す例では、ネットワークデバイス205とリモートサーバ340との間の通信交換によって、宛先アドレスの早期識別が促進され得る。次いで、ネットワークデバイス205は、宛先アドレスを使用して、後続の通信を導き得る。例えば、ネットワークデバイス205は、最初の通信を(例えば、1つ以上のネットワーク間接続および広域ネットワークを介して)リモートサーバ340に送信してよく、リモートサーバ340は、1つ以上の対応するクライアントを識別してよい。次いで、リモートサーバ340は、1つ以上の対応するクライアントに関連する一式の端末デバイスを識別し、これらの端末デバイスための指標を収集してよい。端末デバイスを選択して通信交換に含まれるように、指標を(例えば、リモートサーバ340によって)評価でき、端末デバイスに関する情報(例えば、IPアドレス)をネットワークデバイス205に送信できる。一部の実施形態では、リモートサーバ340は、様々な端末デバイスのための指標を連続的または定期的に収集および評価し、評価結果をデータストアに保存してもよい。このような実施形態では、1つ以上の対応するクライアントに関連する一式の端末デバイスを識別すると、リモートサーバ340は、データストアからの保存した評価結果にアクセスし、保存した評価結果に基づいて端末デバイスを選択して、通信交換に含まれるようにし得る。
【0067】
[0087]図3Bでは、接続管理システム350は、中継および/または宛先アドレスとして機能するように構成され得る。よって、例えば、一式のネットワークデバイス205は、通信を送信し、それぞれが接続管理システム350を宛先として識別してよい。接続管理システム350は、各通信を受信でき、同時に、一式の端末デバイスを(例えば、各端末デバイスのための指標を生成するために)監視できる。監視および規則に基づいて、接続管理システム350は、接続管理システム350が各通信を中継し得る端末デバイス215を識別できる。実施形態に応じて、端末デバイス通信は、さらに中継するため、(例えば、接続管理システム350の)一定の宛先に同様に導かれてもよいし、端末デバイスは、対応するネットワークデバイスと直接通信し始めてもよい。これらの実施形態は、効率的なルーティングおよび徹底的な通信の監視を促進できる。
【0068】
[0088]図3Cに示す実施形態は、図3Bと同様のものである。しかしながら、一部の実施形態では、接続管理システム350は、ネットワーク内コンポーネント(例えば、端末デバイス、ネットワーク内接続など)に直接接続される。
【0069】
[0089]図3A図3Cの多くの変形が企図されていることが理解されよう。例えば、接続管理システム350は、接続コンポーネント(例えば、ネットワーク間接続コンポーネント245またはネットワーク内接続コンポーネント255)と連携して、接続管理システム350(またはそれらの一部)に対応するアプリケーションがコンポーネント上にインストールされるようにし得る。アプリケーションは、例えば、独立に、または(例えば、1つ以上の他のコンポーネント、ネットワークデバイスまたはリモートサーバ上で実行する)1つ以上の同様または相補的なアプリケーションと通信することによって行ってよい。
【0070】
[0090]図4は、接続コンポーネントの動作のプロトコルスタックマッピング400を表したものを示す。より具体的には、図4は、様々な接続コンポーネントに対応する、開放型システム間インタラクション(OSI)モデルにおける動作層を明らかにする。
【0071】
[0091]OSIモデルは、複数の論理層402~414を含み得る。層は、順序付けられたスタックで配置されて、層402~412は、それぞれ、上位のレベルのサービス要求に応じ、層404~414は、それぞれ、下位層に対してサービス要求を行うようにする。OSIモデルは、物理層402を含む。物理層402は、物理的(例えば、電気的、光学的または電磁式)通信のパラメータを定義できる。物理層402はまた、接続を確立および解放するためのプロトコルなどの接続管理プロトコルを定義する。物理層402は、フロー制御プロトコルおよび伝送モードをさらに定義できる。
【0072】
[0092]リンク層404は、ノード間通信を管理できる。リンク層404は、誤り(例えば、物理層402における伝送エラー)を検出および訂正し、アクセス許可を管理できる。リンク層404は、メディアアクセス制御(MAC)層と論理リンク制御(LLC)層とを含み得る。
【0073】
[0093]ネットワーク層406は、同じネットワーク内のノード間での(例えば、可変長の)データの転送を(例えばデータグラムとして)調整できる。ネットワーク層406は、論理ネットワークアドレスを物理マシンアドレスに変換できる。
【0074】
[0094]トランスポート層408は、送信および受信の品質を管理できる。トランスポート層408は、伝送制御プロトコル(TCP)などのデータを転送するためのプロトコルを提供できる。トランスポート層408は、伝送用にデータパケットのセグメント化/セグメントの再結合を行うことができ、また層402~406で発生する伝送誤りを検出および考慮できる。セッション層410は、ローカルアプリケーションとリモートアプリケーションとの間の接続を開始、維持および終了できる。セッションは、リモートプロシージャインタラクションの一部として使用してもよい。プレゼンテーション層412は、アプリケーションまたはネットワーク層によって受け入れられることが分かっているデータタイプに基づいて、データを暗号化、復号および書式整形できる。
【0075】
[0095]アプリケーション層414は、通信を制御または管理するソフトウェアアプリケーションと相互作用できる。このようなアプリケーションを介して、アプリケーション層414は、(例えば)宛先、ローカルリソース状態もしくは利用可能性、および/または通信コンテンツもしくはフォーマットを識別できる。様々な層402~414は、利用可能および適用可能であれば、他の機能を行うことができる。
【0076】
[0096]ネットワーク内接続コンポーネント422、424は、物理層402およびリンク層404で動作するものとして示されている。より具体的には、ハブは、物理層で動作して、通信の受信および送信に関連して動作を制御できるようにできる。ハブは、通信に対処する、またはデータをフィルタする能力を欠くため、ハブが持つ上位のレベルで動作する能力は皆無かそれに近い。その一方、スイッチは、リンク層404で動作できるが、これは、スイッチがアドレス(例えば、MACアドレス)に基づいて、通信フレームをフィルタリングできるためである。
【0077】
[0097]その一方、ネットワーク間接続コンポーネント426、428は、より上位のレベル(例えば、層406~414)で動作するものとして示されている。例えば、ルータは、アドレス(例えば、IPアドレス)に基づいて、通信データパケットをフィルタできる。ルータは、アドレスに基づいて、パケットを特定のポートに転送して、パケットを適切なネットワークに導くことができる。ゲートウェイは、ネットワーク層以上で動作し、同様のフィルタリングおよび誘導を行い、(例えば、プロトコルまたはアーキテクチャを越える)データの変換をさらに行うことができる。
【0078】
[0098]接続管理システム450は、様々な実施形態において、様々な層のうちの1つ以上、すべて、またはいずれかと相互作用できる、および/または様々な層のうちの1つ以上、すべて、またはいずれかで動作できる。例えば、接続管理システム450は、ハブと相互作用して、ハブがどの端末デバイスと通信するかを動的に調整するようにできる。別の例として、接続管理システム450は、ブリッジ、スイッチ、ルータまたはゲートウェイと通信して、コンポーネントがどの端末デバイスを宛先(例えば、MAC、論理または物理)アドレスとして選択するかに影響を及ぼすことができる。さらなる例として、接続管理システム450は、トランスポート層408でのデータパケットのセグメント化、セッション層410でのセッション持続時間、ならびに/またはプレゼンテーション層412での暗号化および/もしくは圧縮を監視、制御または誘導できる。一部の実施形態では、接続管理システム450は、特定の層上で動作する機器(例えば、リンク層404上で動作するスイッチ)と通信を交換する(例えば、コマンドを送信する)ことによって、(例えば、ネットワークデバイスと端末デバイスとの間の)既存の通信を特定の方式でルーティングまたは修正することによって、および/または既存の通信に基づいて、特定の情報(例えば、新しい宛先アドレス)を含む新しい通信を生成することによって様々な層と相互作用できる。このように、接続管理システム450は、様々なデバイスとのインタラクションを介して、および/または様々なプロトコルスタック層で動作することに影響を及ぼすことを介して、通信ルーティングおよびチャネル確立(または維持または終了)に影響を及ぼすことができる。
【0079】
[0099]図5は、一実施形態によるマルチデバイス通信交換システム500を示す。システム500は、様々なタイプの通信チャネルを介して様々なタイプの端末デバイスと通信するように構成されるネットワークデバイス505を含む。
【0080】
[0100]図示の場合では、ネットワークデバイス505は、セルラーネットワークを介して(例えば、基地局510を介して)通信を送信できる。通信は、動作中のネットワーク515にルーティングできる。動作中のネットワーク515は、通信を受信し、通信に対してどの端末デバイスが応答するかを識別する、接続管理システム520を含み得る。このような判定は、(例えば、クライアントを示すコンテンツ解析またはユーザ入力に基づいて)この通信が関連するクライアントを識別することと、クライアントに関連する1つ以上の端末デバイスのそれぞれについて1つ以上の指標を判定することとによって決まり得る。例えば、図5では、端末デバイス530a~530cの各クラスタは、異なるクライアントに対応し得る。端末デバイスは、地理的に同じ位置にあってもよいし、分散配置されていてもよい。指標は、保存もしくは学習したデータおよび/または(例えば、利用可能性に基づく)リアルタイム監視に基づいて判定されてよい。
【0081】
[0101]接続管理システム520は、1つ以上のルータ525または他のネットワーク間もしくはネットワーク内接続コンポーネントを介して、様々な端末デバイスと通信できる。接続管理システム520は、1つ以上のデータストアにおいて、通信、端末デバイス動作、クライアント規則、および/またはユーザ関連アクション(例えば、オンラインアクティビティ、アカウントデータ、購入履歴など)からのまたは通信に関するデータを収集、解析および/または保存してよい。このようなデータは、通信のルーティングに影響を及ぼし得る。
【0082】
[0102]特に、様々な他のデバイスは、通信のルーティングおよび/または処理に影響を及ぼすために、さらに使用され得る。例えば、図示の場合では、接続管理システム520はまた、ウェブサーバ540に接続される。このように、接続管理システム520は、製品の技術的詳細、ニュース、現在の製品提供、現在または予測される天気などの着目するデータを回収できる。
【0083】
[0103]ネットワークデバイス505はまた、ウェブサーバ(例えば、ストリーミングウェブサーバ545を含む)に接続され得る。一部の場合では、このようなサーバとの通信には、接続管理システム520と通信交換を開始する最初のオプションが提供される。例えば、ネットワークデバイス505は、特定のウェブページを訪問する際、通信の機会が利用可能であり、そのようなオプションを提示できることを検出できる。
【0084】
[0104]通信システム500の1つ以上の要素はまた、ソーシャルネットワーキングサーバ550に接続され得る。ソーシャルネットワーキングサーバ550は、様々なユーザデバイスから受信したデータを集約できる。よって、例えば、接続管理システム520は、所与のトピックに対する一般的な(またはユーザ固有の)感情を予測できる、または所与のユーザもしくは所与のクラスのユーザを予測できる。
【0085】
[0105]図6は、接続管理システム600の一実施形態のブロック図を示す。メッセージ受信インターフェース605は、メッセージを受信できる。一部の場合では、メッセージは、例えば、ネットワークデバイスまたは端末デバイスなどの(例えば、接続管理システム600とは別々に収容された、または同じハウジング内に収容された)送信元デバイスが送信した通信の一部として受信され得る。一部の場合では、通信は、一連の通信または通信交換の一部であってよく、これには、2つのデバイス(例えば、ネットワークデバイスおよび端末デバイス)の間でルーティングされる一連のメッセージまたはメッセージ交換を含み得る。このメッセージまたは通信交換は、デバイス間のインタラクションの一部であり得る、および/またはデバイス間のインタラクションを定義し得る。通信チャネルまたは動作中のチャネルは、デバイス間のルーティングおよび通信交換を促進するために使用される、1つ以上のプロトコル(例えば、ルーティングプロトコル、タスク割り当てプロトコルおよび/またはアドレス指定プロトコル)を含み得る。
【0086】
[0106]一部の場合では、メッセージは、ローカルまたはリモートのユーザインターフェースで受信した入力に基づいて生成されたメッセージを含み得る。例えば、メッセージは、ボタンもしくはキーの押下または録音された音声信号に基づいて生成されたメッセージを含み得る。1つの場合では、メッセージは、ネットワークデバイスが特定のアプリページもしくはウェブページを提示したこと、または特定の入力コマンド(例えばキーシーケンス)を提供したことを検出すると生成されるメッセージなどの、自動的に生成されたメッセージを含む。メッセージは、通信交換を開始するものなどの、命令または要求を含み得る。
【0087】
[0107]一部の場合では、メッセージは、クライアントの識別子を含み得る、またはこれに関連付けられ得る。例えば、メッセージは、クライアント(またはクライアントに関連付けられたデバイス)を明示的に識別できる、メッセージは、クライアントに関連付けられたウェブページもしくはアプリページを含むことができる、またはこれに関連付けることができる、メッセージは、クライアントに関連付けられた宛先アドレスを含むことができる、またはこれに関連付けることができる、あるいはメッセージは、クライアントに関連付けられた品目(例えば、製品)もしくはサービス(例えば、クライアントが販売用に提供している、クライアントが販売中である、またはクライアントがサービスを提供するサービスである)の識別情報を含むことができる、またはこれに関連付けることができる。例として、ネットワークデバイスは、特定のクライアントのアプリページを提示してよく、これは、通信をエージェントに送信するオプションを提供し得る。メッセージに対応するユーザ入力を受信すると、メッセージおよび特定のクライアントの識別子を含むように通信が生成され得る。
【0088】
[0108]処理エンジン610は、受信した通信および/またはメッセージを処理し得る。処理には、例えば、1つ以上の特定のデータ要素(例えば、メッセージ、クライアント識別子、ネットワークデバイス識別子、アカウント識別子など)の抽出を含み得る。処理は、(例えば、特定のデバイスタイプ、オペレーティングシステム、通信チャネルタイプ、プロトコルおよび/またはネットワークと互換性を持つため)フォーマットまたは通信タイプの変換を含み得る。
【0089】
[0109]メッセージ評価エンジン615は、(例えば抽出または受信した)メッセージを評価し得る。評価は、例えば、メッセージに関する1つ以上のカテゴリまたはタグの識別を含み得る。カテゴリまたはタグタイプの例として、(例えば)トピック、感情、複雑度および緊急性を挙げることができる。メッセージのカテゴリ化とタグ付けとの間の差は、カテゴリは(例えば、既定の一式のカテゴリオプションに従って)制限され得るが、タグはオープンであり得るということである。トピックは、例えば、製品、サービス、技術的課題、使用に関する質問、苦情、返金請求または購買要求を含み得る。カテゴリまたはタグは、例えば、(例えば、キーワード、文の構造、繰り返された単語、句読文字および/または冠詞でない単語を識別することによって)メッセージ、(例えば、1つ以上のカテゴリを選択した)ユーザ入力、および/またはメッセージ関連の統計値(例えば、タイピング速さおよび/または応答遅延)の意味解析に基づいて判定できる。
【0090】
[0110]一部の場合では、メッセージ評価エンジン615は、メッセージに関する指標を判定できる。指標は、例えば、文字、単語、大文字、すべての大文字または特定の文字もしくは句読点(例えば、感嘆符、疑問符および/または終止符)のインスタンスの数を含み得る。指標は、感嘆符(または疑問符)で終わる文の割合、大文字化されている単語の割合などの比率を含み得る。
【0091】
[0111]メッセージ評価エンジン615は、メッセージ、メッセージ指標および/またはメッセージ統計値をメッセージデータストア620に保存できる。各メッセージはまた、他のデータ(例えば、対応する送信元デバイス、宛先デバイス、ネットワークデバイス、端末デバイス、クライアント、1つ以上のカテゴリ、1つ以上の段階および/またはメッセージ関連の統計値を識別するデータなどのメタデータ)に関連付けされて保存され得る。接続管理システム600の様々なコンポーネント(例えば、メッセージ評価エンジン615および/またはインタラクション管理エンジン625)は、メッセージデータストア620に問い合わせて、クエリ応答メッセージ、メッセージ指標および/またはメッセージ統計値を回収できる。
【0092】
[0112]インタラクション管理エンジン625は、どのデバイスに通信をルーティングするかと、受信デバイスと送信デバイスとの通信の仕方とを判定できる。これらの判定のそれぞれは、例えば、特定のネットワークデバイス(または特定のユーザに関連する任意のネットワークデバイス)が一式の端末デバイスにおける端末デバイス(例えば、接続管理システム600に関連する任意の端末デバイスまたは1つ以上の特定のクライアントに関連する任意の端末デバイス)と以前通信したかどうかによって決まり得る。
【0093】
[0113]一部の場合では、ネットワークデバイス(または妥当なユーザまたはアカウントに関連する他のネットワークデバイス)が所与の端末デバイスと(例えば、クライアントに関する事柄に関して)以前通信している場合、通信ルーティングは、一般的に、同じ端末デバイス寄りにバイアスをかけられ得る。ルーティングに影響を及ぼし得る他の因子は、例えば、以前の通信に関する推定もしくは識別されたユーザもしくはエージェント感情、現在の通信のトピック(例えば、加えて、現在の通信のトピックが以前の通信のトピックおよび/または1つ以上の端末デバイスまたはエージェントに関連する知識ベースに関連する範囲)、端末デバイス(または対応するエージェント)が利用可能であるかどうか、および/または端末デバイスの予測した応答遅延を含み得る。このような因子は、絶対的または相対的に、他の端末デバイスに対応する同様の指標とみなされ得る。再ルーティング規則(例えば、クライアント固有または一般的規則)は、エージェントの一貫性に先んずるかどうかを判定するために、このような因子を評価および重み付けする仕方を示し得る。
【0094】
[0114]ネットワークデバイス(または同じユーザまたはアカウントに関連する他のネットワークデバイス)が、所与の端末デバイスと(例えば、クライアントに関係する事柄に関して)これまで通信していない場合、端末デバイス選択は、例えば、様々なエージェントの知識ベースが通信トピックに対応する範囲、所与の時間および/またはチャネルタイプにおける様々なエージェントの利用可能性、(例えば、クライアントに関連する)端末デバイスのタイプおよび/もしくは能力、ユーザとエージェントとの間の言語マッチ、ならびに/または性格分析などの因子に基づいて行われ得る1つの場合では、規則は、これらのような1つ以上の因子に対するサブスコアと、各スコアに割り当てるウェイトとを判定する仕方を識別できる。重み付けしたサブスコアを組み合わせる(例えば、加算する)ことによって、各エージェントのスコアを判定できる。次いで、(例えば、高いまたは最も高いスコアを選択するように)端末デバイスのスコアを比較することによって、端末デバイス選択を行うことができる。
【0095】
[0115]デバイスが通信する仕方を判定することに関して、インタラクション管理エンジン625は、(例えば)端末デバイスが通信に(例えば)電子メール、オンラインチャット、SMSメッセージ、音声電話、ビデオチャットなどを介して応答するかどうかを判定できる。通信タイプは、例えば、(例えば、クライアントまたはユーザによって少なくとも部分的に規定された)通信タイプ優先順位リスト、(例えば、一貫性を促進するために)ネットワークデバイスから以前に受信した通信のタイプ、受信したメッセージの複雑度、ネットワークデバイスの能力、および/または1つ以上の端末デバイスの利用可能性に基づいて選択され得る。明らかに、一部の通信タイプは、(例えば、迅速なメッセージ応答が期待される)リアルタイム通信となる一方、その他は、(例えば、(例えば、数分または数時間の)メッセージ間の遅延が受容される)非同期通信となり得る。
【0096】
[0116]さらに、インタラクション管理エンジン625は、2つのデバイス間の連続チャネルを確立、使用または終了すべきかどうかを判定できる。連続チャネルは、ネットワークデバイスから指定された端末デバイスへの将来の通信のルーティングを促進するように構成され得る。このバイアスは、一連のメッセージにわたっても(例えば、数日、数週または数ヶ月)持続し得る。一部の場合では、(例えば、エージェントを識別する)連続チャネルの表現を、ネットワークデバイス上で提示される提示に含むことができる。このようにして、ユーザは、効率を高めるために通信が一貫してルーティングされることを理解できる。
【0097】
[0117]1つの場合、本明細書で説明される1つ以上の因子と(例えば、1つ以上の因子のそれぞれのウェイトを含む)規則とを使用してスコアを生成して、所与のネットワークデバイスおよび端末デバイスに対応する接続スコアを判定できる。スコアは、所与の通信または一連の通信全体または固有のマッチに関係し得る。よって、例えば、スコアは、所与の端末デバイスがネットワークデバイス通信に応答するのに向いていると予測される程度を反映し得る。一部の場合では、スコア解析を使用して、所与の通信をルーティングするための端末デバイスのそれぞれ、および接続チャネルを確立、使用または終了かどうかを識別できる。スコア解析を使用して、ルーティング決定とチャネル決定との両方に対処する場合、各決定に関連するスコアは、同じ、同様または異なる方式で判定され得る。
【0098】
[0118]よって、例えば、スコアが、ある程度の長期マッチを予測するスコアなのか、特定のメッセージクエリに応答するスコアなのかに応じて、異なる因子を考慮してよいことが理解されよう。例えば、前者の場合、全体的なスケジュールおよびタイムゾーンの考慮が重要であり得るが、後者の場合、即時利用可能性がより高く重み付けされ得る。単一のネットワークデバイス/端末デバイスの組み合わせについてスコアを判定することもできるし、複数のスコアを判定し、複数のスコアのそれぞれが、所与のネットワークデバイスと異なる端末デバイスとの間のマッチを特徴付けるものとすることもできる。
【0099】
[0119]例として、潜在的な通信ルーティングのために、クライアントに関連する一式の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の端末デバイスにルーティングされることを示し得る。特定の端末デバイスへのルーティングが失敗であった場合、メッセージは、その次に最も高いスコアのデバイスへと順次ルーティングされ得る。
【0100】
[0120]スコアを1つ以上の絶対的または相対的な閾値と比較してもよい。例えば、一式の端末デバイスについてのスコアを互いに比較して、高いスコアを識別して、通信をルーティングさせ得る端末デバイスを選択できる。別の例として、スコア(例えば、高いスコア)を1つ以上の絶対的な閾値と比較して、端末デバイスと連続チャネルを確立するかどうかを判定できる。連続チャネルを確立するための全体的な閾値は、所与の一連のメッセージにおける通信を一貫してルーティングための閾値よりも高くてよい(が、必須ではない)。全体的な閾値と、通信を一貫してルーティングするかどうかを判定するための閾値との間のこの差は、チャネルの利用が拡大している連続チャネルの状況では、強いマッチが重要であることによる。一部の実施形態では、連続チャネルを使用するための全体的な閾値は、連続チャネルを確立するための閾値および/または所与の一連のメッセージにおいて通信を一貫してルーティングするための閾値よりも低くてもよい(が、必須ではない)。
【0101】
[0121]インタラクション管理エンジン625は、アカウントエンジン630と様々な状況で相互作用できる。例えば、アカウントエンジン630は、アカウントデータストア635でネットワークデバイスまたは端末デバイスの識別子を調べて、デバイスに対応するアカウントを識別してもよい。さらに、アカウントエンジン630は、以前の通信交換(例えば、時間、関与した他のデバイス(複数可)、チャネルタイプ、解決段階、トピック(複数可)および/または関連クライアント識別子)、接続チャネル(例えば、1つ以上のクライアントのそれぞれについて、なんらかのチャネルが存在するかどうか、各チャネルに関連する端末デバイス、確立時間、使用頻度、最終使用日の日付、なんらかのチャネル制約および/またはサポートされる通信のタイプを示す)、ユーザもしくはエージェントの好みまたは制約(例えば、端末デバイス選択、レスポンス遅延、端末デバイス一貫性、エージェントの専門知識および/または通信タイプの好みもしくは制約に関係する)、ならびに/またはユーザもしくはエージェントの特性(例えば、年齢、話す言語もしくは好む言語(複数可)、地理学的場所、関心など)に関するデータを維持できる。
【0102】
[0122]さらに、インタラクション管理エンジン625は、アカウントエンジン630に様々な接続チャネルアクションを通知して、アカウントデータストア635が更新されて、現在のチャネルデータを反映できるようにし得る。例えば、チャネルを確立すると、インタラクション管理エンジン625は、アカウントエンジン630に確立を通知し、ネットワークデバイス、端末デバイス。アカウントおよびクライアントのうちの1つ以上を識別できる。続いて、アカウントエンジン630は、(一部の場合では)チャネルの存在をユーザに通知して、ユーザがエージェントの一貫性が得られたことに気付くことができるようにし得る。
【0103】
[0123]インタラクション管理エンジン625は、クライアントマッピングエンジン640とさらに相互作用でき、クライアントマッピングエンジン640は、通信を1つ以上のクライアント(および/または関連ブランド)にマッピングできる。一部の場合では、ネットワークデバイス自体から受信した通信は、クライアントに対応する識別子(例えば、クライアント、製品、サービス、ウェブページまたはアプリページの識別子)を含む。識別子は、(例えば、クライアントマッピングエンジン640が検出し得る)メッセージの一部として含まれ得る、またはメッセージを含む通信における他のデータとして含まれ得る。次いで、クライアントマッピングエンジン640は、クライアントデータストア645内の識別子を調べて、クライアントおよび/またはクライアントの識別子に関する追加的なデータを回収し得る。
【0104】
[0124]一部の場合では、メッセージは、いかなるクライアントにも特に対応しない場合もある。例えば、メッセージは、一般クエリを含み得る。クライアントマッピングエンジン640は、例えば、メッセージに対して意味解析を行い、1つ以上のキーワードを識別し、キーワード(複数可)に関連する1つ以上のクライアントを識別し得る。一部の場合では、単一のクライアントが識別される。一部の場合では、複数のクライアントが識別される。次いで、各クライアントの識別がネットワークデバイスを介して提示されて、ユーザが(例えば、関連する端末デバイスを介して)通信するクライアントを選択できるようにする。
【0105】
[0125]クライアントデータストア645は、クライアントに関連する1つ以上の端末デバイス(および/またはエージェント)の識別情報を含み得る。端末ルーティングエンジン650は、ルーティング判定に影響を及ぼすために、1つ以上またはすべてのそのような端末デバイス(および/またはエージェント)のそれぞれに関するデータを回収または収集できる。例えば、端末ルーティングエンジン650は、端末データストア655を維持でき、端末データストア655は、端末デバイスのデバイスタイプ、オペレーティングシステム、通信タイプ能力、インストール済のアプリケーションアクセサリ、地理的場所および/または識別子(例えば、IPアドレス)などの情報を保存できる。情報はまた、経験レベル、地位、スキルレベル、知識ベース(例えば、エージェントが知っているトピックおよび/または様々なトピックに関する知識レベル)、性格指標、労働時間、話す言語(複数可)および/または人口統計学的情報などのエージェント情報を含み得る。一部の情報は、動的に更新できる。例えば、端末デバイスが利用可能かどうかを示す情報は、(例えば)端末デバイスからの通信(例えば、デバイスがスリープ状態であるかどうか、電源がオンであるかオフであるか、アイドル状態かアクティブ状態かを識別する、またはある期間内に入力が受信されたかどうかを識別する)、通信ルーティング(例えば、端末デバイスが通信交換の一部に含まれているか、これに割り当てられているかを示す)、または通信交換が終了もしくは開始したことを示す、ネットワークデバイスもしくは端末デバイスからの通信に基づいて動的に更新され得る。
【0106】
[0126]様々な状況において、1つ以上の通信交換に関与していることは、端末デバイスが別の通信交換への関与に利用できないことを必ずしも示すものではないことが理解されよう。通信タイプ(例えば、メッセージ、電子メール、チャット、電話)、クライアントが特定もしくはユーザが特定した目標応答時間、および/またはシステム負荷(例えば、一般的またはユーザに関する)などの様々な因子が、端末デバイスがどのくらいの数の交換に関与し得るかに影響を及ぼし得る。
【0107】
[0127]インタラクション管理エンジン625が、端末デバイスを通信交換または接続チャネルに含まれるように識別した場合、インタラクション管理エンジン625は、端末ルーティングエンジン650に通知でき、端末ルーティングエンジン650は、宛先(例えば、IP)アドレス、デバイスタイプ、プロトコルなどの、端末デバイスに関する任意の関連データを端末データストア655から回収し得る。次いで、処理エンジン610は、(一部の場合では)メッセージを含む通信を修正、または新しい通信(メッセージを含む)を生成して、特定のフォーマットを有する、特定のプロトコルに準拠するなどにし得る。一部の場合では、新しいまたは修正されたメッセージは、ネットワークデバイスに対応するアカウントデータ、メッセージ記録および/またはクライアントデータなどの追加的なデータを含み得る。
【0108】
[0128]次いで、メッセージ送信インターフェース660は、通信を端末デバイスに送信できる。送信は、例えば、別個のハウジングに収容されたデバイスへの有線または無線送信を含み得る。端末デバイスは、同じまたは異なるネットワーク(例えば、ローカルエリアネットワーク)の端末デバイスを接続管理システム600として含み得る。したがって、通信を端末デバイスに送信することは、通信をネットワーク間またはネットワーク内接続コンポーネントに送信することを含み得る。
【0109】
[0129]図7は、ユーザデバイス702、704、706がウェブページ720にアクセスできる、ウェブページアクセス環境700を示す概略図である。一部の実施形態では、本明細書で開示されるシステムおよび方法は、単一のコンピューティングデバイス(例えば、そのコンピュータ自体に置かれたウェブサイトにアクセスするコンピュータ)に収容されたウェブページアクセス環境700上で使用できる。より一般的には、ウェブページアクセス環境700は、複数のコンピューティングデバイスを含むことができ、以下、そうした意味で記載される。
【0110】
[0130]ユーザデバイス702、704、706は、第1のタイプの携帯電話702と、第2のタイプの携帯電話704と、デスクトップコンピュータ706とを含み得る。家庭用ゲーム機、ラップトップ、タブレットコンピュータおよびウェブページをアクセスおよび/またはロードできる任意の他のデバイスなどの、ウェブページにアクセスできる他のユーザデバイスも使用できる。ユーザデバイス702、704、706は、(例えば、ユニフォームリソースロケータ(URL)またはインターネットプロトコル(IP)アドレスを入力することによって)クラウド708を介してウェブページ720にアクセスできる。クラウド708は、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を含むコンピュータの任意のネットワークであり得る。一部の実施形態では、クラウド708は、インターネットである。
【0111】
[0131]ウェブページ720は、ウェブサーバ710上に保存できる。ウェブページ720は、HTML要素ならびにウェブコード(例えば、JavaScript(登録商標)タグ)を含み得る。一部の実施形態では、ウェブページ720は、静的タグ726を含み得る。静的タグ726は、ウェブページ720をロードする間にユーザデバイス702、704、706によって実行されると、ユーザデバイス702、704、706に、コードサーバ712からの動的コード722をウェブページ720内へと注入させ、動的コード722の少なくとも一部を実行させる、命令を含み得る。コードサーバ712は、クラウド708を介してアクセス可能な別個のコンピュータとすることもできるし、コードサーバ712は、ウェブサーバ710と同じコンピュータとすることもできる。動的コード722は、利用可能なコード750を含むことができ、利用可能なコード750は、いくつかのウェブコード736、738、740を含み得る。第1のウェブコード736は、第1のウェブアプリケーション742を提示するために必要なプログラムを含むことができ、第2のウェブコード738は、第2のウェブアプリケーション744を提示するために必要なプログラムを含むことができ、第3のウェブコード740は、第3のウェブアプリケーション746を提示するために必要なプログラムを含むことができる。他の番号のウェブコード736、738、740も使用できる。各ウェブアプリケーション742、744、746は、第1のモバイルデバイス702用に特に作成されたバージョン、第2のモバイルデバイス704用に特に作成されたバージョン、第3のモバイルデバイス706用に特に作成されたバージョンなど、単一のウェブアプリケーションの異なるバージョンを表すことができる。
【0112】
[0132]一部の実施形態では、静的タグ726は、ユーザデバイス702、704、706が実行すると、ユーザデバイス702、704、706に、因子にアクセスさせる、コードを含み得る。上述のように、因子は、ユーザデバイス固有属性714、716、718またはウェブページ720からのコンテンツに基づき得る。静的タグ726はまた、ユーザデバイス702、704、706が実行すると、ユーザデバイスに、利用可能なコード750から望ましいウェブコード736、738、740を選択させる、1つ以上の規則を含み得る。
【0113】
[0133]一部の実施形態では、動的コード722は、ユーザデバイス702、704、706が実行すると、ユーザデバイス702、704、706に、因子にアクセスさせる、コードを含む。動的コード722はまた、場合により、ユーザデバイス702、704、706が実行すると、ユーザデバイスに、利用可能なコード750から望ましいウェブコード736、738、740を選択させる、1つ以上の規則を含み得る。
【0114】
[0134]一部の実施形態では、静的タグ726は、ユーザデバイス702、704、706が実行すると、ユーザデバイス702、704、706に、因子にアクセスさせ、因子をコードサーバ712に送信させる、コードを含み得る。このような実施形態では、コードサーバ712は、ウェブページにアクセスするユーザデバイスがどの利用可能なコード750を実行すべきか判定するために、因子に基づいて1つ以上の規則724を評価できる。1つ以上の規則724の評価に基づいて、コードサーバ712は、望ましいウェブコードのみを含む動的コード722を送信(例えば、注入)できる。
【0115】
[0135]各実施形態において、ユーザデバイス702、704、706は、望ましいウェブコードのみを実行し、望ましいと評価されない、いかなる他の利用可能なコード750も実行しない。例えば、第1のタイプの携帯電話702がウェブページ720にアクセスしロードすると、第1のタイプの携帯電話702は、第1のタイプの携帯電話702に、第1のタイプの携帯電話702固有のユーザデバイス固有属性714へアクセスさせる、(例えば、静的タグ726内または動的コード722内の)コードを実行できる。本明細書に開示される方法のいずれかにより、第1のタイプの携帯電話702用に特に設計された、第1のウェブアプリケーション742を提示するために、規則(例えば、規則724または規則752)を(例えば、第1のタイプの携帯電話702またはコードサーバ712によって)評価して、ウェブコード738を第1のタイプの携帯電話702で実行することを判定できる。第1のタイプの携帯電話702は、望ましいウェブコード738を実行でき、第1のウェブアプリケーション742をユーザに提示できる。
【0116】
[0136]第2のタイプの携帯電話704が同じウェブページ720にアクセスしロードすると、第2のタイプの携帯電話704は、第2のタイプの携帯電話704に、第2のタイプの携帯電話704固有のユーザデバイス固有属性716へアクセスさせる、(例えば、静的タグ726内または動的コード722内の)コードを実行する。第2のタイプの携帯電話704用に特に設計された、第2のウェブアプリケーション744を提示するために、規則を評価して、ウェブコード740を第2のタイプの携帯電話704で実行することを判定できる。第2のタイプの携帯電話704は、望ましいウェブコード740を実行でき、第2のウェブアプリケーション744をユーザに提示できる。
【0117】
[0137]デスクトップコンピュータ706が同じウェブページ720にアクセスしロードすると、デスクトップコンピュータは、デスクトップコンピュータ706に、デスクトップコンピュータ706固有のユーザデバイス固有属性718へアクセスさせる、(例えば、静的タグ726内または動的コード722内の)コードを実行する。デスクトップコンピュータ706用に特に設計された、第3のウェブアプリケーション746を提示するために、規則を評価して、ウェブコード740をデスクトップコンピュータ706で実行することを判定できる。デスクトップコンピュータ706は、望ましいウェブコード740を実行でき、第3のウェブアプリケーション746をユーザに提示できる。
【0118】
[0138]代替的な実施形態では、ウェブページ720は、場合により、ウェブコード728、730、732からなる利用可能なコード748ならびに規則734を含み得る。このような実施形態では、コードサーバ712もコード注入も不要であり得る。ウェブコード728、730、732は、それぞれ、第1、第2および第3のウェブアプリケーション742、744、746に関連付けられ得る。上述のように、ユーザデバイス702、704、706は、規則を評価734し、各特定のユーザデバイス702、704、706について、利用可能なコード748のうちのどのウェブコード728、730、732が望ましいかを判定するために、ウェブページ720内に埋め込まれたコードを実行できる。
【0119】
[0139]上述のように、規則(例えば、規則734、規則752または規則724)によって評価された因子は、ウェブページ720のコンテンツに基づき得る。一例では、第2のタイプの携帯電話704は、ウェブサーバ710を介してウェブページ720にアクセスでき、ウェブサーバ710は、動的コード722を注入させる、静的タグ726を含む。アクセスされる因子は、ウェブページ720のコンテンツとすることもでき、ウェブページ720のコンテンツを規則(例えば、規則752または規則724)の評価で使用すると、第2のタイプの携帯電話704は、第2のウェブアプリケーション744に関連する望ましいウェブコード738を実行する。例えば、ウェブページ720は、ピンチによるズーム機能を無効化したコンテンツを含むことができ、第2のウェブアプリケーション744は、ピンチによるズーム機能を無効化したウェブサイト用に特に設計され得る。同じ例では、第2のタイプの携帯電話704は、そうではなく、代替ウェブページ754にアクセスでき、代替ウェブページ754は、ウェブサーバ710または別のウェブサーバ上に配置され得る。代替ウェブページ754は、ウェブページ720上で使用されるものと同じ静的タグ726を含み得る。しかしながら、代替ウェブページ754は、ピンチによるズーム機能を無効化したコンテンツを持たない場合もあるし、ピンチによるズーム機能を有効化したコンテンツを含む場合もある。同じ因子に基づいて規則(例えば、規則752または規則724)を評価した場合、規則は、代わりに、ウェブページ754には異なるウェブアプリケーションに関連する異なるウェブコードが望ましいことを判定し得る。このような場合、第2のタイプの携帯電話704は、ウェブアプリケーション744ではなく、異なるウェブアプリケーションを提示する。換言すると、ウェブページ754およびウェブページ720は、単一のコンテンツ(例えば、ピンチによるズーム機能を無効化するタグ)以外は同一とすることができ、各ウェブページ754、720にアクセスする同じユーザデバイス702、704、706は、異なるウェブコード736、738、740を実行でき、その結果、どのウェブページ754、720がアクセスされたかによって、ユーザに異なるウェブアプリケーション742、744、746が提示される。
【0120】
[0140]図8は、本開示の特定の実施態様による、利用可能なコードを含むウェブページをロードする方法800を示す流れ図である。ブロック802において、ユーザデバイスがウェブページにアクセスする。ユーザデバイスは、ウェブページをロードし始めることができる。ブロック804において、ユーザデバイスは、ユーザデバイス固有属性またはウェブページのコンテンツの要素などの因子にアクセスできる。ブロック806において、ユーザデバイスは、利用可能なコードから、実行する望ましいウェブコードを選択でき、このことには、ブロック808における規則を評価することを含み得る。ブロック808における規則を評価することは、ブロック804においてアクセスした因子に基づき得る。ブロック810において、ユーザデバイスは、望ましいウェブコードを実行する。
【0121】
[0141]図9は、本開示の特定の実施態様による、静的タグを含むウェブページをロードする方法900を示す流れ図である。ブロック902において、ユーザデバイスがウェブページにアクセスする。ユーザデバイスは、ウェブページをロードし始めることができる。ブロック904において、ユーザデバイスは、ブロック906において動的コードを注入させる、静的タグを実行できる。ブロック908において、ユーザデバイスは、ユーザデバイス固有属性またはウェブページのコンテンツの要素などの因子にアクセスできる。一部の実施形態では、ブロック908において因子にアクセスすることは、ブロック906において動的コードを注入することの前に行われ得る。ブロック910において、ユーザデバイスは、実行する望ましいウェブコードを選択でき、このことには、ブロック912における規則を評価することを含み得る。ブロック912における規則を評価することは、ブロック908においてアクセスした因子に基づき得る。ブロック914において、ユーザデバイスは、望ましいウェブコードを実行する。
【0122】
[0142]図10は、本開示の特定の実施態様による、コード管理をコードサーバで行う、ウェブページをロードする方法1000を示す流れ図である。ブロック1002において、ユーザデバイスがウェブページにアクセスする。ユーザデバイスは、ウェブページをロードし始めることができる。ブロック1004において、ユーザデバイスは、ブロック1006においてユーザデバイスに因子へアクセスさせ、ブロック1008において因子をコードサーバに送信させる、静的タグを実行できる。一部の実施形態では、ブロック1006において因子にアクセスすることは、ブロック1004において静的タグを実行することの前に行われ得る。ブロック1010において、コードサーバは、実行する望ましいウェブコードを選択でき、このことには、ブロック1012における規則を評価することを含み得る。ブロック1012における規則を評価することは、ブロック1006においてアクセスされ、ブロック1008において送信された因子に基づき得る。ブロック1014において、コードサーバからの動的コードをロードしたウェブページ内に注入する。動的コードは、望ましいウェブコードのみを含み得る(例えば、望ましくないウェブコードは含まない)。ブロック1016において、ユーザデバイスは、注入された動的コードを実行することによって、望ましいウェブコードを実行する。
【0123】
[0143]図11は、本開示の特定の実施態様による、ウェブページ1106を表示するスマートフォン1102の描写である。ウェブページ1106をロードする際、スマートフォン1102は、ウェブページ1106の一部として存在するウェブアプリケーション1104を符号化するウェブコードを実行している。上述のように、ウェブアプリケーション1104は、スマートフォン1102がスマートフォンモバイルデバイスであることを示す因子などの特定の因子に基づいて選択され得る。
【0124】
[0144]図12は、本開示の特定の実施態様による、ウェブアプリケーション1104を表示する図11のスマートフォン1102の描写である。
【0125】
[0145]図13は、本開示の特定の実施態様による、図11からのウェブページ1106を表示するタブレット1302の描写である。ウェブページ1106をロードする際、タブレット1302は、ウェブページ1106の一部として存在するウェブアプリケーション1304を符号化するウェブコードを実行している。ウェブページ1106は、図11からの同じウェブページ1106であるが、タブレット1302によって実行されるウェブコードは、スマートフォン1102によって実行されるウェブコードとは異なる。上述のように、ウェブアプリケーション1304は、タブレット1302がタブレットモバイルデバイスであることを示す因子などの特定の因子に基づいて選択され得る。
【0126】
[0146]図14は、本開示の特定の実施態様による、ウェブアプリケーション1304を表示する図13のタブレット1302の描写である。
【0127】
[0147]図15は、本開示の特定の実施態様による、図11からのウェブページ1106を表示する、デスクトップのウェブブラウザ1502の描写である。ウェブページ1106をロードする際、デスクトップウェブブラウザ1502は、ウェブページ1106の一部として存在するウェブアプリケーション1504を符号化するウェブコードを実行している。ウェブページ1106は、図11からの同じウェブページ1106であるが、デスクトップウェブブラウザ1502によって実行されるウェブコードは、スマートフォン1102によって実行されるウェブコードとは異なる。上述のように、ウェブアプリケーション1504は、デスクトップウェブブラウザ1502がデスクトップコンピューティングデバイス上で動作するブラウザであることを示す因子などの特定の因子に基づいて選択され得る。
【0128】
[0148]図16は、本開示の特定の実施態様による、インタラクションウィンドウを提示するための処理1600を示す流れ図である。処理1600は、例えば、クライアントデバイス130、ユーザデバイス702、704、706、または本明細書で説明される他の好適なデバイスなどのネットワークデバイス(例えば、コンピュータ、スマートフォン、タブレットなど)によって、部分的にまたはその全体が実行され得る。
【0129】
[0149]ブロック1605において、ウェブページがアクセスされ得る。ウェブページにアクセスすることには、リモートサーバ(例えば、図1のリモートサーバ140)からウェブページを要求することを含むことができる。ウェブページにアクセスすることには、ウェブページのためのコードを受信することを含むことができる。ウェブページは、ネットワークデバイス上でアプリケーションをロードおよび稼働させるのに実行可能なコードを含むことができ、インタラクションウィンドウを提示するためのコードを含み得る。一部のケースでは、ウェブページは、実行されると、アプリケーションをロードおよび稼働させるためのコードをダウンロードするコードを含み得る。インタラクションウィンドウは、ユーザがアプリケーションと相互作用する際に介する任意のインターフェースとすることができる。例えば、一部の通信アプリケーションについては、インタラクションウィンドウは、チャット履歴要素(例えば、ユーザとエージェントとの間の1つ以上の過去のメッセージの集合)と、チャット入力要素(例えば、メッセージをエージェントに送信するために使用できる、ユーザから入力を受けるためのテキストボックス)とを有する、チャットインターフェースを含み得る、またはチャットインターフェースとすることができる。一部のケースでは、インタラクションウィンドウは、(例えば、ウェブサイトおよび/またはアプリケーションのロードの際)最初は提示されないが、特定の入力を受信した後(例えば、ユーザがエンゲージメントボタンを押下した後)にのみ、提示される。
【0130】
[0150]ブロック1610において、ウェブページの元の表示設定(例えば、ウェブサイトの因子)を判定する。元の表示設定は、ネットワークデバイス上でのウェブページの提示の仕方に関する様々な情報を含み得る。例えば、元の表示設定は、ウェブページの様々な要素のサイズ、形状および場所、ウェブページをズームできるかどうか(例えば、「ピンチしてズーム」インタラクション)、ウェブページで使用されている色、または他の設定可能な表示の好みを含み得る。元の表示設定は、ウェブページ自体または任意のリンクされたコンテンツ(例えば、スタイルシート)における特定のコードの存在または欠如を検出することによって判定され得る。例えば、元の表示設定は、「ピンチしてズーム」インタラクションを行える状態でウェブページを表示するという情報を含むことができ、これは、ウェブページのビューポートタグを読み取ることによって判定できる。
【0131】
[0151]ブロック1615において、元の表示設定を保存する。元の表示設定は、ネットワークデバイスのメモリに保存できる。ブロック1620において、元の表示設定を用いてウェブページを提示できる。例えば、特定のビューポートタグにより「ピンチしてズーム」インタラクションを有効化したウェブサイトでは、ユーザが「ピンチしてズーム」インタラクションを行うことができるように、ウェブサイトをネットワークデバイス上に提示できる。
【0132】
[0152]ブロック1625において、ネットワークデバイスの表示能力(例えば、ネットワークデバイスの因子)を判定できる。表示能力は、ネットワークデバイスのディスプレイの物理サイズおよび/または解像度を含み得る。表示能力は、ネットワークデバイスに接続された他の表示装置、ネットワークデバイスのディスプレイが色を表示する能力、または他の能力などの、ネットワークデバイスがコンテンツを表示するための任意の好適な能力を含み得る。一例では、タブレットデバイスがある特定の解像度を有し、スマートフォンデバイスがより低い解像度を有し得る。ブロック1625で判定したように、タブレットデバイスの表示能力がその特定の解像度を含み得る一方、スマートフォンデバイスの表示能力は、その特定のより低い解像度を含み得る。
【0133】
[0153]一部の実施形態では、デバイスの表示能力を判定することには、デバイスにその表示能力を問い合わせることを含むことができる。一部の実施形態では、デバイスの表示能力を判定することは、デバイスの型式またはタイプを判定することと、デバイスの型式またはタイプによって検索可能な表示能力情報を含む内部または遠隔からアクセス可能なデータベースにアクセスすることとを含む。例えば、処理1600は、処理1600が稼働しているデバイスが特定の型式のスマートフォンであることを判定できる。次いで、処理1600は、着目する特定の型式を含むスマートフォンの多くの型式に関する能力情報を含む(例えば、インターネットを介して利用可能な)データベースにアクセスできる。
【0134】
[0154]ブロック1630において、ネットワークデバイスの表示能力を用いて新しい表示設定を判定する。新しい表示設定は、アプリケーションのインタラクションウィンドウ(例えば、チャットウィンドウ)を提示するために使用される表示設定である。新しい表示設定は、ネットワークデバイスのディスプレイの解像度などの表示能力に基づき得る。新しい表示設定は、「ピンチしてズーム」インタラクションを無効にするため、またはその他の方法でウェブサイトを非ズーム可能の状態にするためのコードを含み得る。例えば、新しい表示設定は、ビューポートタグを設定して、ウェブサイトを非ズーム可能の状態にするためのコードを含み得る。
【0135】
[0155]ブロック1635において、新しい表示設定を用いてインタラクションウィンドウを提示する。インタラクションウィンドウは、インタラクションウィンドウをCanvasタグなどのHTMLタグの一部としてロードすることおよび/または表示することなどによって提示され得るが、インタラクションウィンドウは、他の仕方でロードおよび/または表示することもできる。インタラクションウィンドウが提示されると、現在の表示設定は、新しい表示設定によって置き換えまたは変更され得る。例えば、ブロック1635においてインタラクションウィンドウが提示されると、新しい表示設定を使用して、ロードされたウェブサイト上でのズームを禁止でき、その結果、インタラクションウィンドウ自体のズームを阻止できる。換言すると、ブロック1635において、インタラクションウィンドウが提示されている際、ウェブサイトのビューポートを動的に変更して、ズームを禁止する。
【0136】
[0156]新しい表示設定および/または判定した表示能力からの解像度情報を使用して、インタラクションウィンドウの要素の大きさ(例えば、サイズ)設定できる。具体的には、インタラクションウィンドウの要素を、ズームが不要となるようなサイズにし得る。加えて、インタラクションウィンドウにおけるテキストまたは画像のサイズを適切にサイズ調整して、ズームの必要性を排除できる。
【0137】
[0157]ブロック1640において、インタラクションウィンドウを隠す、または閉じることができる。隠した場合、同じインタラクションウィンドウを再度提示できる。閉じた場合、インタラクションウィンドウがメモリからアンロードされるか、インタラクションウィンドウに提示したデータがメモリから消去される。
【0138】
[0158]ブロック1645において、ウェブページの現在の表示設定を、ブロック1615において保存した元の表示設定に戻す。一部の実施形態では、ブロック1615において元の表示設定は保存されておらず、代わりに、現在の表示設定を初期設定の表示設定に戻す。一部の実施形態では、ブロック1645は、ブロック1640においてインタラクションウィンドウが隠された、または閉じた場合に行われる。
【0139】
[0159]処理1600の結果、いくつかの異なるネットワークデバイス(例えば、タブレット、スマートフォンおよびデスクトップコンピュータ)上にロードされた、インタラクションウィンドウ(例えば、チャットウィンドウ)を有するアプリケーションを有するウェブページは、まず、一部のデバイス上でズーム可能であり得るが、インタラクションウィンドウが開いている間はズームが禁止され得る、通常のウェブページに提示され得る。例えば、同じウェブページにアクセスする場合、デスクトップユーザは、ウェブサイトまたはインタラクションウィンドウを見ている間、ウェブサイトをズームする必要がなく、タブレットユーザは、ウェブサイトを時折ズームする必要があり得るが、インタラクションウィンドウが開いている間は、ユーザはインタラクションウィンドウのズームを禁止され、インタラクションウィンドウは、タブレットのディスプレイに適切なサイズで表示でき、スマートフォンユーザは、ウェブサイトをしばしばズームする必要があり得るが、インタラクションウィンドウが開いている間は、スマートフォンユーザはインタラクションウィンドウのズームを禁止され、インタラクションウィンドウは、スマートフォンのディスプレイに適切なサイズで表示できる。
【0140】
[0160]一部の実施形態では、ブロック1610、1615、1620、1625、1630、1635、1640および1645のうちの1つ以上の任意の組み合わせを行うための命令または行うことを有効化する命令は、アプリケーションのコード内などのウェブページのコード内に含まれ得る。一部の実施形態では、ブロック1610、1615、1620、1625、1630、1635、1640および1645のうちの1つ以上の任意の組み合わせを行うための命令または行うことを有効化する命令は、アプリケーションのコードによってリンクされるなど、ウェブページによってリンクされるコード内に含まれ得る。一部の実施形態では、処理1600のうちの1つ以上のブロックの任意の組み合わせを行うための命令は、ネットワークデバイスに保存したコード内(例えば、ウェブブラウザ内、別個のアプリケーション内またはウェブブラウザまたは別個のアプリケーションへのアドオン内)に含まれ得る。
【0141】
[0161]図17は、本実施形態の特定の実施態様による、第1のズームレベルでウェブページ1708にアクセスするスマートフォン1702を示す概略図である。スマートフォン1702は、ウェブページ1708を表示するために使用できるディスプレイ1704を含み得る。ウェブページ1708は、テキストなどのコンテンツ1710を有するものとして示されている。ウェブページ1708は、チャットウィンドウを提示するためのアプリケーションを含み得る。ウェブページ1708がロードされると、ウェブページは、チャットウィンドウをオンデマンドで開き、端末デバイスと通信を開始するために使用できる、クリック可能なボタン1706を提示できる。
【0142】
[0162]図18は、本実施形態の特定の実施態様による、第2のズームレベルでウェブページ1708にアクセスする図17のスマートフォン1702を示す概略図である。第2のズームレベルは、ズームインタラクション(例えば、「ピンチしてズーム」インタラクション、ホイールのスクロール、またはズームインまたはズームアウトのための他の好適なインタラクション)を行うことによって達成され得る。第2のズームレベルにおいて、ウェブページ1708のコンテンツ1710のサイズが拡大し、これにより、ユーザがコンテンツ1710をより容易に読んだり解釈したりし得る。ウェブページ1708は、ズームインタラクションを特に許可する表示設定を有してもよいし、ウェブページ1708の表示設定は、ズームインタラクションを特に禁止しなくてもよく、スマートフォン1702にインストールされたウェブブラウザは、初期設定でズームインタラクションを可能としてもよい。
【0143】
[0163]図19は、本実施形態の特定の実施態様による、インタラクションウィンドウ1902を提示する、図17のスマートフォン1702を示す概略図である。インタラクションウィンドウ1902は、図19のチャットウィンドウであるが、さもなければ任意の他のタイプのインタラクションウィンドウであり得る。インタラクションウィンドウ1902は、チャット履歴要素1906と、チャット入力要素1908と、送信ボタン1910とを含むいくつかの要素を含み得る。インタラクションウィンドウ1902はまた、チャットウィンドウを閉じるおよび/または隠し、基盤となるウェブページ1708に戻るためのボタン1904を含み得る。インタラクションウィンドウ1902は、ウェブページ1708上で不透明または透明なウィンドウとして表示できる。
【0144】
[0164]インタラクションウィンドウ1902の要素は、ディスプレイ1704の使用可能な空間(例えば、ディスプレイ1704のすべてまたはディスプレイ1704の一部分を含み得る、ウェブページ1708が通常使用する空間)を完全に占有またはほとんど占有するサイズにできる。インタラクションウィンドウ1902の要素のサイジングおよび場所は、インタラクションウィンドウレイアウトとして知られていることもある。インタラクションウィンドウレイアウトは、ディスプレイ1704の能力(例えば、図16のブロック1625において判定した表示能力)に基づいて判定できる。インタラクションウィンドウレイアウトは、ディスプレイ1704のサイズおよび/または解像度に基づいて実装して、ズームすることなしに、インタラクションウィンドウのすべての要素へのアクセスを可能にできる。インタラクションウィンドウレイアウトは、テキストサイズ、フォント選択、およびズームすることなしに、インタラクションウィンドウ1902内のコンテンツの可読性を高め得る他の因子を含み得る。
【0145】
[0165]インタラクションウィンドウ1902が表示されている間、すべてのズームインタラクションを無効化し、チャットウィンドウの要素に関して、ユーザがズームインまたはズームアウトするのを阻止し得る。図16の処理1600を使用して、ウェブページの表示設定(例えば、ビューポート設定)を一時的に修正して、インタラクションウィンドウ1902が表示されている間のズームインタラクションを許可しないようにすることなどによって、ズームインタラクションを無効化できる。ボタン1904に触れることなどによって、インタラクションウィンドウ1902を閉じるまたは隠すと、現在の表示設定を元の表示設定または初期設定の表示設定に戻し、ズームインタラクションを再度可能にすることができる。
【0146】
[0166]非ズーム可能インタラクションウィンドウをズーム可能ウェブサイトの一部として提示するための、本明細書で説明されるシステム、方法およびコンピュータプログラム製品は、本明細書で説明したようなユーザとエージェントとの間の通信を提供するなどの本明細書に開示される他の実施態様のいずれかと共に使用できる。インタラクションウィンドウは、ネットワークデバイス、端末デバイスまたはクライアントデバイス上で提示できる。一部の実施形態では、接続管理システムまたは端末デバイスによって、処理1600で判定した表示能力を使用して、端末デバイスとネットワークデバイスとの間の強化された通信を提供できる。
【0147】
[0167]図20は、本開示の特定の実施態様による、ユーザデバイス2002、2004、2006がネイティブアプリケーション2020にアクセスし実行できる動的ネイティブアプリケーション環境2000を示す概略図である。ネイティブアプリケーション2020は、すべてのユーザデバイス2002、2004、2006で共通(例えば、デバイス非依存)であり得るが、デバイスのタイプに応じて(例えば、デバイスのオペレーティングシステムに応じて)ネイティブアプリケーション2020の異なるバージョンを配備できる。とはいえ、デバイスのタイプに基づいて(例えば、オペレーティングシステムに基づいて)異なるネイティブアプリケーション2020は、同じ方法、サブルーチン、処理、または他のコンポーネントの実行を異なるタイプのデバイス上で達成するための差異のみを除いて、実質的に同じ方法、サブルーチン、処理、または他のコンポーネントを含むことができる。
【0148】
[0168]ユーザデバイス2002、2004、2006は、第1のタイプの携帯電話2002と、第2のタイプの携帯電話2004と、デスクトップコンピュータ2006とを含み得る。家庭用ゲーム機、ラップトップ、タブレットコンピュータおよびウェアラブル装置(例えば、スマートウォッチ)などの、ネイティブアプリケーションを実行できる他のユーザデバイスも使用できる。ユーザデバイス2002、2004、2006は、ネイティブアプリケーション2020をその特定のユーザデバイス2002、2004、2006のメモリから直接実行できる。一部のケースでは、ネイティブアプリケーション2020は、クラウド2008を通してアクセスされ得る。
【0149】
[0169]クラウド2008は、ローカルエリアネットワーク(LAN)または広域ネットワーク(WAN)を含むコンピュータの任意のネットワークであり得る。一部の実施形態では、クラウド2008は、インターネットである。
【0150】
[0170]ネイティブアプリケーション2020は、静的タグ2026を含み得る。静的タグ2026は、実行されると、ユーザデバイス2002、2004、2006に、因子にアクセスさせる、任意のコードのセグメントであり得る。因子は、デバイス固有属性2014、2016、2018またはネイティブアプリケーション2020からのコンテンツであり得る。例えば、デバイス固有属性2014、2016、2018は、デバイスの画面サイズ、デバイスが高速インターネット接続を有しているかどうか、デバイスがカメラを有しているかどうか、デバイスのCPUスピード、デバイスの型番、または他の好適な因子に関係し得る。ネイティブアプリケーション2020からのコンテンツの一部分の例は、ネイティブアプリケーション2020のタイトル、ネイティブアプリケーション2020を発行する企業に関する識別子、ネイティブアプリケーション2020に関連付けられたクライアント識別子、ユーザがアクセスした、ネイティブアプリケーション2020の特定の部分(例えば、ユーザがネイティブアプリケーション2020の特定のページを開いた、または特定の機能にアクセスした場合)、または他のこのような情報であり得る。
【0151】
[0171]一部のケースでは、ネイティブアプリケーション2020は、コードセグメント2028、2030、2032からなる利用可能なコード2048を含み得る。本明細書で説明したように、動的コードサーバ2012から受信した命令に応じて、ネイティブアプリケーション2020は、利用可能なコード2048のコードセグメント2028、2030、2032のうちの1つ以上を実行するように導かれ得る。しかしながら、動的コードサーバ2012からの命令がなければ、ネイティブアプリケーション2020は、利用可能なコード2048のコードセグメント2028、2030、2032のうちの1つ以上を実行しない場合もある。
【0152】
[0172]一部のケースでは、ネイティブアプリケーション2020は、規則2034を含み得る。一部のケースでは、ネイティブアプリケーション2020は、利用可能なコード2048のコードセグメント2028、2030、2032のうちの1つ以上を判定して、動的コードサーバ2012から命令を受信することなしに実行するために、規則2034を因子に適用できる。一部のケースでは、ネイティブアプリケーション2020は、規則2034を動的コードサーバ2012からの命令に適用して、利用可能なコード2048のコードセグメント2028、2030、2032のうちの1つ以上を判定して、実行できる。一部のケースでは、ネイティブアプリケーション2020は、利用可能なコード2048のいずれかの実行を判定するのに関係する規則2034を持たない。
【0153】
[0173]ネイティブアプリケーション2020は、(例えば、静的タグ2026を介して)因子をクラウド2008を介して動的コードサーバ2012(例えば、リモートサーバ)に送信できる。因子を受信すると、動的コードサーバ2012は、規則2024にアクセスし、規則2024を因子に適用して、ネイティブアプリケーション2020が動作すべき仕方を評価できる。一部のケースでは、動的コードサーバ2012は、規則2024のアプリケーションに基づいて命令を生成し、命令をユーザデバイス2002、2004、2006に送信し、命令は、受信されると、ネイティブアプリケーション2020によって実行され、利用可能なコード2048のコードセグメント2028、2030、2032のうちの1つ以上を実行させる。このようにして、動的コードサーバ2012は、どのコードのセグメントを実行するかに関する決定をユーザデバイス2002、2004、2006に提供する。
【0154】
[0174]一部のケースでは、動的コードサーバ2012は、ユーザデバイス2002、2004、2006に、単純にどのコードを実行するかに関する決定ではなく、実際のコードを提供(例えば、コード注入)できる。例えば、規則2024を因子に適用した後、動的コードサーバは、コードバンク2022にアクセスして、コードバンク2022における利用可能なコード2050のコードセグメント2036、2038、2040のうちの1つ以上を選択してもよい。次いで、動的コードサーバは、命令のように、コードセグメント2036、2038、2040のうちの1つ以上をユーザデバイス2002、2004、2006に送信でき、これはネイティブアプリケーション2020で実行され得る。このような例では、ネイティブアプリケーション2020は、利用可能なコード2048を含んでもよいし含まなくてもよい。
【0155】
[0175]一部のケースでは、動的コードサーバ2012からの命令(例えば、実行する決定またはコード)は、ネイティブアプリケーション2020に関して保存された(例えば、ユーザデバイス2002、2004、2006のメモリに保存した)データを修正するための命令を含み得る。例えば、アプリケーションの機能が特定のイベント後(例えば、機能の公表後)にのみ利用可能となることを、アプリケーション発行元が望む場合、発行元は、その機能をアプリケーション内にコーディングできるが、アプリケーションが実行される場合はいつでも、動的コードサーバ2012からの命令および/またはアプリケーション自体の規則2034によって、機能へのアクセスを拒否またはその他の方法で許可しないようにできる(例えば、「アクセスを絶対に許可しない」という規則)。一部のケースでは、発行元は、規則2034をアプリケーション自体にコーディングする際に公表の正確な日付を知らない場合もある。本明細書で説明するように、特定のイベントが生じたならば、または特定のイベントが生じる日付(例えば、2016年11月7日)が分かったならば、発行元は、動的コードサーバ2012の規則2024を更新できる。その結果、次に動的コードサーバ2012が命令をユーザデバイス2002、2004、2006に送信する際、命令は、規則2034への更新(例えば、「2016年11月7日以降はアクセスを許可する」という規則)を含み得る。よって、ネイティブアプリケーション2020が(例えば、インターネット接続がないことに起因して)2016年12月8日に動的コードサーバ2012へアクセスできないとしても、ネイティブアプリケーション2020における更新された規則2034が、更新された規則2034を適用して、機能にアクセスできるようにし得る。同様に、動的コードサーバ2012を使用して、ネイティブアプリケーション2020における利用可能なコード2048を更新できる。ネイティブアプリケーション2020へのあらゆる更新は、ネイティブアプリケーション自体を更新すること、またはネイティブアプリケーション2020に関連する、またはこれにアクセス可能なデータファイル(例えば、デバイスがアクセス可能な他のメモリに保存されたデータファイル)を更新することによって行うことができる。
【0156】
[0176]上述のように、利用可能なコード2050の異なるコードセグメント2036、2038、2040および利用可能なコード2048のコードセグメント2028、2030、2032は、それぞれ、アプリケーションインターフェース2042、2044、2046の異なるバージョンの提示に関係し得る(例えば、図7に関連する単一のウェブアプリケーションの異なるバージョンと同様)。異なるコードセグメントはまた、ネイティブアプリケーション2020のそのインターフェース以外の異なる機能に関係し得る。
【0157】
[0177]図21は、本開示の特定の実施態様による、ネイティブアプリケーションのための動的コード管理の方法2100を示す流れ図である。一部のケースでは、方法2100は、同様にウェブアプリケーションの動的コード管理と共に使用できる。ブロック2102において、動的コードサーバで因子を受信する。因子は、ネイティブアプリケーションを実行しているユーザデバイスによって生成され送信され得る。因子は、デバイス固有属性またはネイティブアプリケーションのコンテンツに関連し得る、またはこれを示し得る。因子を受信することは、動的コードサーバのネットワークインターフェースで因子を受信すること(例えば、クラウドまたはインターネットなどのネットワークを通して因子を受信すること)を含み得る。
【0158】
[0178]ブロック2104において、動的コードサーバによって規則にアクセスできる。規則は、(例えば、ネットワークを介して)動的コードサーバ上に保存し得る、または動的コードサーバに対してアクセス可能であり得る。ブロック2106において、動的コードサーバは、因子に基づいて規則を評価できる。規則を因子に適用することによって、動的コードサーバは、ネイティブアプリケーションによって、すべての利用可能なコードからどのコードセグメント(複数可)を実行すべきかを判定できる。利用可能なコードは、動的コードサーバにアクセス可能なコードバンクにある利用可能なコード、ネイティブアプリケーションに埋め込まれた、もしくはアクセス可能な利用可能なコード、またはこれらの任意の組み合わせを含み得る。
【0159】
[0179]ブロック2108において、動的コードサーバは命令を生成できる。命令は、どのコードを実行するかの判定(例えば、実行するコードセグメントがネイティブアプリケーションに埋め込まれているまたはアクセス可能である場合)、実行するコード自体(例えば、コードセグメントが動的コードサーバにアクセス可能なコードバンクに保存されている場合)、またはこれらの任意の組み合わせを含み得る。例えば、ブロック2108は、命令を生成する間にコードセグメントを命令内に埋め込むためのオプションのブロック2110を含み得る。
【0160】
[0180]ブロック2112において、動的コードサーバは命令を送信できる。命令をユーザデバイスに送信して、命令を受信した場合、ユーザデバイスで稼働しているネイティブアプリケーションが望ましいコードセグメントを実行するようにし得る。例えば、命令を受信した場合、ネイティブアプリケーションは、ネイティブアプリケーションに保存されたまたはアクセス可能な利用可能なコードからのコードセグメントを実行できる。別の例では、命令を受信した場合、ネイティブアプリケーションは、命令に埋め込まれているコードセグメントを実行できる。
【0161】
[0181]ブロック2114において、動的コードサーバは、(例えば、端末デバイスから)規則更新情報を受信できる。規則更新情報を使用して、動的コードサーバにアクセス可能な規則を更新できる。規則更新情報が動的コードサーバによって処理された後、ブロック2104において規則に動的コードサーバがアクセスしたときはいつでも、アクセスされた規則は、規則の更新されたバージョンとなる。
【0162】
[0182]オプションのブロック2116において、動的コードサーバは、命令に規則更新情報を埋め込むことができる。更新情報は、規則またはネイティブアプリケーションに埋め込まれたまたは関連付けられた利用可能なコードに対する更新を含み得る。ユーザデバイスによって受信された場合、埋め込まれた更新情報を含む命令は、ユーザデバイスに、更新情報に基づいて、規則またはネイティブアプリケーションに埋め込まれたまたは関連付けられた利用可能なコードに対する更新を行わせる。
【0163】
[0183]オプションのブロック2118において、動的コードサーバは、因子に基づいてデバイス推定を生成できる。デバイス推定は、デバイスの識別情報(例えば、デバイスタイプ、製造元またはバージョン)またはデバイスの能力(例えば、カメラまたは高速CPUスピードを有すること)であり得る。推定は、因子に基づくものであり得る。一部のケースでは、推定は、因子とデバイス推定との間の期待される相関関係に基づき得る(例えば、一般的に携帯電話上で動作するオペレーティングシステムは、デバイスが比較的低速のCPUスピードを有すると推定するために使用される因子であり得る)。一部のケースでは、推定は、因子とデバイス推定との間の実際の相関関係またはマッピングに基づき得る(例えば、1440ピクセル×1440ピクセルの画面サイズは、デバイスがBlackberryPassportであると推定するために使用される因子であり得る)。ブロック2106における規則を評価することの一部として、デバイス推定を使用して、どのコードセグメントを実行すべきか、ひいては、ブロック2108において命令を生成する仕方を判定できる。デバイス推定の追加的な機能および実施態様を以下にさらに詳しく開示する。
【0164】
[0184]オプションのブロック2120において、動的コードサーバは、追加的な考慮事項を受信できる。追加的な考慮事項は、ブロック2102において受信した因子以外の、送信元からの任意の情報とすることができる。一部のケースでは、ブロック2120において受信した追加的な考慮事項を提供して、ブロック2104においてアクセスした規則を更新できる。一部のケースでは、ブロック2120において受信した追加的な考慮事項をブロック2106における規則の評価で使用できる。一例では、動的コードサーバは、規則を評価して、どのデバイスがビデオ会議インターフェース用のコードセグメントを実行すべきかと、どのデバイスがテキストベースのチャットインターフェース用のコードセグメントを実行すべきかとを判定できる。この例では、ブロック2102において受信した因子は、ネットワーク速度および画面サイズに関係し得る(例えば、遅すぎるネットワーク速度または小さすぎる画面サイズでは、ビデオ会議は望ましくない場合があるため)。この例では、ブロック2120において受信した追加的な考慮事項は、ビデオ会議で利用可能なエージェントの数とすることができる。次いで、動的コードサーバは、この追加的な考慮事項を使用して、どのデバイスでビデオ会議インターフェースコードセグメントを実行すべきかの判定を補助できる(例えば、わずかなエージェントしか利用可能でない場合、高速な接続速度かつ大画面のデバイスのみにビデオ会議を提示するが、多くのエージェントが利用可能である場合、最小限の要件を満たすすべてのデバイスにビデオ会議を提示する)。このように、動的コードサーバによって、追加的考慮事項を使用して、どのコードセグメントを実行すべきか、ひいてはブロック2108における命令の生成の仕方を判定できる。追加的考慮事項の使用の追加的機能および実施態様を以下にさらに詳しく開示する。
【0165】
[0185]以下の場合の状況は、動的コード管理を使用できる仕方の例を表す。適していれば、ウェブアプリケーションまたはネイティブアプリケーションに以下の場合の状況を使用できる。
【0166】
[0186]一部のケースでは、動的コード管理に使用できる因子は、ブラウザのタイプおよびバージョン、オペレーティングシステムのタイプおよびバージョン、画面サイズ、デバイスがモバイルデバイスかどうか、デバイスがカメラを有するかどうか、デバイスが内側カメラを有するかどうか、デバイスがスピーカを有するかどうか、デバイスが加速度計を有するかどうか、デバイスのバッテリ寿命の残量、デバイスが高速ネットワークに接続されているかどうか、デバイスのネットワーク接続が強いかどうか(例えば、高速、低遅延または低ジッタ)、デバイスがセルラーデータで動作するかどうか、デバイスが通話を開始もしくは受信できるかどうか、CPUのタイプおよびスピード、デバイスのGPUのタイプおよびスピード、デバイスがGPS機能を有しているかどうか、または任意の他のハードウェア、ソフトウェア、もしくはデバイスの他の機能を含み得る。一部のケースでは、因子は、デバイスが温暖な気候にあることを表す温度データ、デバイスが海抜高度付近にあることを表す高度データ、またはデバイスが屋外にあることを表す周辺光データなどの環境条件または刺激を表すデータを含み得る。
【0167】
[0187]一部のケースでは、規則を評価すること(例えば、図8のブロック808における規則を評価すること、図9のブロック912における規則を評価すること、図10のブロック1012における規則を評価すること、または図21のブロック2106における規則を評価すること)は、推定することを含み得る。例えば、ユーザデバイス上の光センサからの高レベルの周囲光を表す因子に規則を適用することを使用して、ユーザデバイスが屋外にあることを推定できる。別の例として、小さい画面サイズとモバイルデバイスで通常稼働するブラウザバージョンとを示す因子に規則を適用することを使用して、ユーザデバイスのCPUスピードが比較的遅い(例えば、平均的なデスクトップコンピュータのCPUスピードとは対照的に、平均的なモバイルデバイスのCPUスピード)ことを推定できる。規則に基づいて任意の数の推定をなし得る。次いで、推定を使用して、実行するコードのセグメント判定できる。例えば、デバイスのCPUスピードが比較的遅いと推定された場合、必要なコードセグメント(複数可)を選択することによって、アプリケーションのCPUにかかる負担の少ないバージョンを実行できる。あるいは、デバイスのCPUスピードが比較的速いと推定された場合、必要なコードセグメント(複数可)を選択することによって、アプリケーションのCPUにかかる負担の大きいバージョンを実行できる。
【0168】
[0188]一部のケースでは、推定(例えば、デバイスの能力の特徴の推定)を行うことは、一式の(例えば、データベースの)既知の値に対して因子を比較することを含み得る。例えば、画面サイズである因子に適用された場合、画面サイズとデバイスタイプとの間のマッチを探す規則を構築できる。例えば、デバイスの画面サイズが750ピクセル×1334ピクセルであることを表す因子を受信すると、サーバは、画面サイズのデータベース内を探す因子に規則を適用して、デバイスがAppleのiPhone(登録商標)6である、またはその可能性があることを判定できる。加えて、規則はさらに推定を行うことができる。例えば、デバイスがAppleのiPhone(登録商標)6であることを規則が既に推定している場合、規則はさらに、デバイスが、背面カメラと内側カメラとを有し、複数のタッチを感知でき(例えば、マルチタッチタッチスクリーン)、デュアルコア1.4GHz Cyclone CPUを有し、PowerVR GX6450 GPUを有し、マイクロホンとスピーカとを有し、音声電話を行うことができ、Bluetooth(登録商標)対応であり、加速度計を有し、GPS機能などを有することを推定できる。次いで、規則は、これらの推定に基づいて、どのコードセグメント(複数可)を実行するかを判定できる。
【0169】
[0189]一部のケースでは、履歴データを収集および使用して、推定を改善できる。例えば、履歴データは、受動的または能動的フィードバックを含み得る。例えば、デバイスがカメラを有するという推定を行い、これによりビデオ会議ボタンをアプリケーションインターフェース上に提示するコードセグメントが実行されたが、デバイスは実際にはカメラを持たない場合がある。ユーザがボタンを決して押下しない場合(例えば、受動的フィードバック)またはユーザがデバイスがカメラを持たないことを特に報告した場合(例えば、能動的フィードバック)、このデータは、履歴データとして保存し、将来の推定の改善に使用され得る。別の例では、デバイスが特定のタイプのデバイスであるとの推定を行ったが、後にデバイス情報を促した際(例えばチャットセッションの間)、デバイスが異なるタイプのデバイスであるとユーザが指摘する場合がある。将来の推定を改善するために、この情報を能動的フィードバックとして保存できる。一部のケースでは、受動的フィードバックの重み付けは、能動的フィードバックよりも小さくてもよい。
【0170】
[0190]一部のケースでは、利用可能なコードの異なるコードセグメントは、アプリケーションの異なるバージョンまたはアプリケーションの異なる機能に関係し得る。例えばは、デバイスが内側カメラ、マイクロホンおよびスピーカを有することを判定すると、ビデオ会議機能が有効化され、アプリケーションインターフェースに、ビデオ会議を開始するボタンを含むようにさせることができる。別の例では、デバイスがマルチタッチ能力を有することを判定すると、マルチタッチ入力を利用するアプリケーションのバージョンを提示できる一方、マルチタッチ能力を持たないデバイス上で稼働する同じアプリケーションは、シングルタッチ、マウスまたはキーボード入力のために特に構築されたアプリケーションの異なるバージョンを提示され得る。
【0171】
[0191]一部のケースでは、因子は、ネットワーク接続の品質(例えば、速度、遅延またはジッタ)に関係し得る。因子は、速度測定値などの実際の測定値とすることもできるし、推定ソースとすることもできる(例えば、デバイスが無線ネットワークに接続されていることを示す因子を使用して、ネットワークスピードが高速であることを推定できる一方、デバイスがセルラーネットワークに接続されていることを示す因子を使用して、ネットワークスピードが低速であることを推定できる)。ネットワーク接続の品質に基づいて、実行用に異なるコードセグメントを選択できる。一部のケースでは、アプリケーション(例えば、ウェブアプリケーションまたはネイティブアプリケーション)は、因子が変わるにつれて動的に変更できる。例えば、ユーザが家に向かう際にアプリケーションを使用している場合、ユーザは、ネットワーク接続スピードが劇的に高まり得る彼または彼女の家庭用無線ネットワークの範囲に入る前に、しばらくの間、低速のセルラーデータネットワーク接続で動作し得る。この例では、アプリケーションは、ネットワーク接続の品質に関係する因子に繰り返しまたは定期的にアクセスできる。低速のセルラーデータネットワーク接続で動作している際、ユーザは、より低速のネットワーク速度のために設計されたアプリケーションのバージョン(例えば、テキストだけのチャットインターフェース)を提示され得る。しかしながら、より高速の家庭用無線ネットワークに接続すると、アプリケーションは、(例えば、リモートサーバからコードセグメントまたは命令を受信することによって)動的に更新されて、異なるバージョン(例えば、テキストとエージェント映像とによるチャットインターフェース)を提示し得る。
【0172】
[0192]どのコードセグメント(例えば、リモートサーバによってアクセス可能、デバイスによってアクセス可能、またはデバイスのネイティブアプリケーションに埋め込まれるまたはアクセス可能)を実行するかを判定するために、(例えば、クラウドにある)リモートサーバを使用して規則にアクセスし評価する一部のケースでは、ウェブサイトまたはアプリケーションの発行元およびサービスプロバイダは、強化されたカスタマイズ性を利用可能である。リモートサーバによって使用される規則は、要求に応じて、いつでも、任意のスケジュールで更新できる。帰宅中のユーザには、テキストベースのチャットインターフェースがまず提示され、次いで、より速いネットワークへの接続後、テキストおよびビデオチャットインターフェースが提示される上記の例では、リモートサーバがアクセスした規則は、エージェントのビデオをいつ提示するかを判定することに貢献し得る。アプリケーションは、何度か説明したように機能し得るが、クライアントまたはサービスプロバイダが、(例えば、顧客からのフィードバック、成功もしくは失敗したインタラクションの追跡、または予算などによる帯域幅の制約に起因して)ビデオ機能をいずれかの時点で無効化したいと望むことを決定した場合、クライアントまたはサービスプロバイダは、規則を更新できる。よって、次回、ユーザがテキストベースのチャットを使用してチャットを開始し、次いで、後に、彼または彼女のより速いネットワークに接続した場合、リモートサーバが評価した規則が更新されて(例えば、ビデオインターフェースを拒否し、ビデオインターフェースに関連するコードセグメントは実行されないようにして)いるため、アプリケーションは、エージェントのビデオを提示するように動的に更新されない。同じ機能を様々な他の例に適用できる。
【0173】
[0193]一部のケースでは、規則は、追加的考慮事項に基づいて、動的に更新(例えば、規則が更新)または評価(例えば、追加的考慮事項がデバイスから受信した因子と共に評価)され得る。例えば、サービスプロバイダにおいて、ビデオ会議に参加し得るエージェントの数が限られているが、音声またはテキスト通信で参加できるエージェントの数がより多い場合、サービスプロバイダは、最良のビデオ会議体験を提供するデバイス(例えば、より高速なCPUを有するデバイス、より高速のネットワーク速度、より大きい画面サイズまたは他の因子)などの限られた数のデバイスのみにビデオ会議能力を提供することを望むこともある。このように、利用可能なビデオ会議エージェントの数は、追加的考慮事項となり得る。チャットアプリケーションをロードする、またはチャットアプリケーションに関連するウェブサイトもしくはネイティブアプリケーションを使用する他のデバイスの数などの他の追加的考慮事項も使用できる。したがって、デバイスがチャットアプリケーション(例えば、ウェブアプリケーションまたはネイティブアプリケーション)をロードしようとする度に、デバイスは、1つ以上の因子をリモートサーバに送信し、リモートサーバは、ビデオ会議インターフェースを提示するか否かを判定するために、因子と追加的考慮事項とに基づいて、規則にアクセスし評価する。例えば、リモートサーバが100の利用可能なビデオ会議エージェントを有する場合、リモートサーバは、ビデオ会議インターフェースを少なくとも最低限の要件(例えば、最低限のCPUスピード、最低限の速度のネットワーク接続および最小限の画面サイズ)を満たすあらゆるデバイスに提示すべきであることを判定できる。しかしながら、リモートサーバが3つの利用可能なビデオ会議エージェントしか持たない場合、リモートサーバは、ビデオ会議インターフェースを拡張した閾値要件(例えば、比較的高速のCPUスピード、高速ネットワーク接続および大型の画面サイズ)を満たすデバイスのみに提示すべきであることを判定できる。追加的考慮事項(例えば、利用可能なビデオ会議エージェントの数)を使用して、規則自体を更新できる、または規則に対する入力として使用できる(例えば、規則は、因子と追加的考慮事項とを評価する)。
【0174】
[0194]実施形態が十分に理解されるよう、上記の説明において具体的な詳細を述べた。しかしながら、実施形態はこれらの具体的な詳細がなくても実施できることを理解されたい。例えば、不必要な詳細で実施形態が分かりにくくならないように、回路をブロック図として示す場合もある。他の場合では、実施形態が分かりにくくならないように、不必要な詳細なしで、既知の回路、処理、アルゴリズム、構造および技法を示す場合もある。
【0175】
[0195]上述の技法、ブロック、ステップおよび手段の実施は、様々な仕方でなし得る。例えば、これらの技法、ブロック、ステップおよび手段は、ハードウェア、ソフトウェア、またはこれらの組み合わせで実装できる。ハードウェア実装では、処理装置は、1つ以上の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)、デジタル信号処理装置(DSPD)、プログラマブルロジックデバイス(PLD)、フィールドプログラマブルゲートアレイ(FPGA)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、上述の機能を行うように設計された他の電子ユニット、および/またはこれらの組み合わせ内に実装できる。
【0176】
[0196]また、実施形態の一部分を流れ図、フロー図、データフロー図、構造図またはブロック図で示される処理として説明できることに留意されたい。流れ図は、動作を順次処理として説明し得るが、動作の多くは、並列で行うこともできるし、同時に行うこともできる。加えて、動作の順序を並べ替えることができる。処理は、その動作が完了したときに終了するが、図に含まれていない追加的ステップを有する場合もある。処理は、方法、関数、プロシージャ、サブルーチン、サブプログラムなどに対応し得る。処理が関数に対応する場合、その終了は、関数が呼び出し関数またはmain関数に戻ったことに対応する。
【0177】
[0197]さらに、各実施形態は、ハードウェア、ソフトウェア、スクリプト言語、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、および/またはこれらの任意の組み合わせによって実装されてもよい。ソフトウェア、ファームウェア、ミドルウェア、スクリプト言語、および/またはマイクロコード内に実装されるとき、必要なタスクを行うためのプログラムコードまたはコードセグメントが、記憶媒体などの機械可読媒体に保存されてもよい。コードセグメントまたは機械実行可能命令は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、スクリプト、クラス、または命令、データ構造、および/またはプログラムステートメントの任意の組み合わせを表し得る。コードセグメントは、情報、データ、引数、パラメータ、および/またはメモリコンテンツのパスおよび/または受信によって、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパス、チケットパッシング、ネットワーク伝送などを含む任意の適切な手段を介して、パス、転送または伝送されてもよい。
【0178】
[0198]ファームウェアおよび/またはソフトウェア実装に関して、方法論が、本明細書に説明される機能を実施するモジュール(例えば、プロシージャ、関数など)と共に実装されてもよい。本明細書に説明される方法論を実装する際、命令を有形具現化する任意の機械可読媒体を使用してもよい。例えば、ソフトウェアコードをメモリに格納してもよい。メモリは、プロセッサ内またはプロセッサ外に実装されてもよい。本明細書で使用する場合、「メモリ」の語は、任意のタイプの長期、短期、揮発性、不揮発性、または他の記憶媒体を指し、任意の特定のタイプのメモリもしくはメモリの数またはメモリが格納されるメディアのタイプに限定されない。
【0179】
[0199]さらに、本明細書に開示されるように、「記憶媒体」、「記憶装置」または「メモリ」の語は、読取専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気RAM、コアメモリ、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1つ以上のメモリを表し得る。「機械可読媒体」の語は、限定するものではないが、ポータブルまたは固定記憶デバイス、光記憶デバイス、無線チャネル、および/または命令(複数可)および/またはデータを含有または担持する、記憶可能な様々な他の記憶媒体を含む。
【0180】
[0200]本開示の原理を具体的な装置および方法との関連で上に説明してきたが、この説明は例としてのみなされたものであって。本開示の範囲を限定するものではないことを明確に理解されたい。
【0181】
[0201]以下で使用する場合、一連の例に対するあらゆる参照は、それらの例のそれぞれに対する分離した参照として理解されたい(例えば「実施例1~4」は、「実施例1、2、3または4」として理解されたい)。
【0182】
[0202]実施例1は、 デバイス上にウェブページをロードするステップと、ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性またはウェブページのコンテンツを含む、ステップと、規則を判定するステップと、因子および規則を用いて選択したウェブコードを実行するステップと、を含む、コンピュータ実装方法である。
【0183】
[0203]実施例2は、ウェブページをロードする間に動的コードを注入するステップであって、動的コードが望ましいウェブコードを含む、ステップをさらに含む、実施例1に記載の方法である。
【0184】
[0204]実施例3は、因子をサーバに送信するステップであって、動的コードが、送信された因子と規則とに基づいて選択された望ましいウェブコードを含む、ステップ、をさらに含む、実施例2に記載の方法である。
【0185】
[0205]実施例4は、因子が顧客識別情報を含み、動的コードが、顧客識別情報に基づいて選択された望ましいウェブコードを含む、実施例2または3に記載の方法である。
【0186】
[0206]実施例5は、動的コードが規則と複数の利用可能なコードとを含み、望ましいウェブコードが、因子とデバイス上での規則の評価とに基づいて、複数の利用可能なコードから選択される、実施例2~4のいずれか1つに記載の方法である。
【0187】
[0207]実施例6は、因子がユーザエージェント文字列であり、望ましいウェブコードが、ユーザエージェント文字列と規則とに基づいて選択される、実施例1~5のいずれか1つに記載の方法である。
【0188】
[0208]実施例7は、因子がウェブページのコンテンツに基づくものであり、ウェブページのコンテンツが複数のウェブページ要素を含み、望ましいウェブコードが、複数のウェブページ要素のうちの少なくとも1つに基づいて選択される、実施例1~6のいずれか1つに記載の方法である。
【0189】
[0209]実施例8は、望ましいウェブコードがJavaScript(登録商標)タグである、実施例1~7のいずれか1つに記載の方法である。
【0190】
[0210]実施例9は、1つ以上のデータプロセッサと、1つ以上のデータプロセッサで実行した場合、1つ以上のデータプロセッサに、デバイス上にウェブページをロードするステップと、ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性またはウェブページのコンテンツを含む、ステップと、規則を判定するステップと、因子および規則を用いて選択したウェブコードを実行するステップと、を含む動作を行わせる命令を含む非一時的コンピュータ可読記憶媒体と、を備えるシステムである。
【0191】
[0211]実施例10は、命令が、1つ以上のデータプロセッサに、ウェブページをロードする間に動的コードを注入するステップであって、動的コードが望ましいウェブコードを含む、ステップを含む、追加的動作をさらに行わせる、実施例9に記載のシステムである。
【0192】
[0212]実施例11は、命令が、1つ以上のデータプロセッサに、因子をサーバに送信するステップをさらに含む、追加的動作をさらに行わせ、動的コードが送信した因子と規則とに基づいて選択された望ましいウェブコードを含む、実施例10に記載のシステムである。
【0193】
[0213]実施例12は、因子が顧客識別情報を含み、動的コードが、顧客識別情報に基づいて選択された望ましいウェブコードを含む、実施例10または11に記載のシステムである。
【0194】
[0214]実施例13は、動的コードが規則と複数の利用可能なコードとを含み、望ましいウェブコードが、因子とデバイス上での規則の評価とに基づいて、複数の利用可能なコードから選択される、実施例10~12のいずれか1つに記載のシステムである。
【0195】
[0215]実施例14は、因子がユーザエージェント文字列であり、望ましいウェブコードが、ユーザエージェント文字列と規則とに基づいて選択される、実施例9~13のいずれか1つに記載のシステムである。
【0196】
[0216]実施例15は、因子がウェブページのコンテンツに基づくものであり、ウェブページのコンテンツが複数のウェブページ要素を含み、望ましいウェブコードが、複数のウェブページ要素のうちの少なくとも1つに基づいて選択される、実施例9~14のいずれか1つに記載のシステムである。
【0197】
[0217]実施例16は、望ましいウェブコードがJavaScript(登録商標)タグである、実施例9~15のいずれか1つに記載のシステムである。
【0198】
[0218]実施例17は、データ処理装置に、ユーザデバイス上にウェブページをロードすることと、ウェブページをロードする際に因子にアクセスすることであって、因子が、ユーザデバイス固有属性またはウェブページのコンテンツを含む、ことと、規則を判定することと、因子および規則を用いて選択したウェブコードを実行することと、を行わせるように構成される命令を含む、非一時的機械可読記憶媒体に有形具現化されたコンピュータプログラム製品である。
【0199】
[0219]実施例18は、命令が、データ処理装置に、ウェブページをロードする間に動的コードを注入することを行わせるようにさらに構成され、動的コードが望ましいウェブコードを含む、実施例17に記載のコンピュータプログラム製品である。
【0200】
[0220]実施例19は、命令が、データ処理装置に、因子をサーバに送信することを行わせるようにさらに構成され、動的コードが、送信した因子と規則とに基づいて選択された望ましいウェブコードを含む、実施例18に記載のコンピュータプログラム製品である。
【0201】
[0221]実施例20は、因子が顧客識別情報を含み、動的コードが、顧客識別情報に基づいて選択された望ましいウェブコードを含む、実施例18または19に記載のコンピュータプログラム製品である。
【0202】
[0222]実施例21は、動的コードが規則と複数の利用可能なコードとを含み、望ましいウェブコードが、因子とユーザデバイス上での規則の評価とに基づいて、複数の利用可能なコードから選択される、実施例18~20のいずれか1つに記載のコンピュータプログラム製品である。
【0203】
[0223]実施例22は、因子がユーザエージェント文字列であり、望ましいウェブコードが、ユーザエージェント文字列と規則とに基づいて選択される、実施例17~21のいずれか1つに記載のコンピュータプログラム製品である。
【0204】
[0224]実施例23は、因子がウェブページのコンテンツに基づくものであり、ウェブページのコンテンツが複数のウェブページ要素を含み、望ましいウェブコードが、複数のウェブページ要素のうちの少なくとも1つに基づいて選択される、実施例17~22のいずれか1つに記載のコンピュータプログラム製品である。
【0205】
[0225]実施例24は、望ましいウェブコードがJavaScript(登録商標)タグである、実施例17~23のいずれか1つに記載のコンピュータプログラム製品である。
【0206】
[0226]実施例25は、1つ以上のデータプロセッサと、1つ以上のデータプロセッサで実行した場合、1つ以上のデータプロセッサに、ウェブページにアクセスするステップであって、ウェブページが、アプリケーションのインタラクションウィンドウを提示するためのコードを含む、ステップと、ウェブページの元の表示設定情報を判定するステップであって、元の表示設定情報が、ウェブページのディスプレイ設定を含む、ステップと、元の表示設定を用いてウェブページを提示するステップと、ウェブページを提示するネットワークデバイスの表示能力を判定するステップと、ネットワークデバイスの表示能力を用いて新しい表示設定を判定するステップであって、新しい表示設定がズームインタラクションを禁止する、ステップと、新しい表示設定を用いてアプリケーションのインタラクションウィンドウを提示するステップと、を含む動作を行わせる命令を含む非一時的コンピュータ可読記憶媒体と、を備えるシステムである。
【0207】
[0227]実施例26は、動作が、ウェブページの元の表示設定情報を保存するステップと、インタラクションウィンドウが隠された、または閉じた場合、元の表示設定に戻すステップと、をさらに含む、実施例25に記載のシステムである。
【0208】
[0228]実施例27は、元の表示設定がビューポート設定を含む、実施例25または26に記載のシステムである。
【0209】
[0229]実施例28は、アプリケーションがチャットアプリケーションであり、インタラクションウィンドウが、チャット履歴要素とチャット入力要素とを有するチャットウィンドウである、実施例25~27のいずれか1つに記載のシステムである。
【0210】
[0230]実施例29は、新しい表示設定を判定することが、アプリケーションのインタラクションウィンドウを提示するためのコードを使用することをさらに含む、実施例25~28のいずれか1つに記載のシステムである。
【0211】
[0231]実施例30は、動作が、ネットワークデバイスの表示能力を用いてインタラクションウィンドウレイアウトを判定することをさらに含み、インタラクションウィンドウレイアウトにより、ズームすることなしに、インタラクションウィンドウのすべての要素へアクセスできる、実施例25~29のいずれか1つに記載のシステムである。
以下に、出願当初の特許請求の範囲に記載の事項を、そのまま、付記しておく。
[C1]
デバイス上にウェブページをロードするステップと、
前記ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性または前記ウェブページのコンテンツを含む、ステップと、
規則を判定するステップと、
前記因子および前記規則を用いて選択したウェブコードを実行するステップと、
を含む、コンピュータ実装方法。
[C2]
前記ウェブページをロードする間に動的コードを注入するステップであって、前記動的コードが望ましいウェブコードを含む、ステップをさらに含む、C1に記載の方法。
[C3]
前記因子をサーバに送信するステップであって、前記動的コードが、前記送信された因子と前記規則とに基づいて選択された前記望ましいウェブコードを含む、ステップ、をさらに含む、C2に記載の方法。
[C4]
前記因子が顧客識別情報を含み、前記動的コードが、前記顧客識別情報に基づいて選択された前記望ましいウェブコードを含む、C3に記載の方法。
[C5]
前記動的コードが前記規則と複数の利用可能なコードとを含み、前記望ましいウェブコードが、前記因子と前記デバイス上での前記規則の評価とに基づいて、前記複数の利用可能なコードから選択される、C2に記載の方法。
[C6]
前記因子がユーザエージェント文字列であり、前記望ましいウェブコードが、前記ユーザエージェント文字列と前記規則とに基づいて選択される、C1に記載の方法。
[C7]
前記因子が前記ウェブページの前記コンテンツに基づくものであり、前記ウェブページの前記コンテンツが複数のウェブページ要素を含み、前記望ましいウェブコードが、前記複数のウェブページ要素のうちの少なくとも1つに基づいて選択される、C1に記載の方法。
[C8]
前記望ましいウェブコードがJavaScript(登録商標)タグである、C1に記載の方法。
[C9]
1つ以上のデータプロセッサと、
前記1つ以上のデータプロセッサで実行した場合、前記1つ以上のデータプロセッサに、
デバイス上にウェブページをロードするステップと、
前記ウェブページをロードする際に因子にアクセスするステップであって、因子が、デバイス固有属性または前記ウェブページのコンテンツを含む、ステップと、
規則を判定するステップと、
前記因子および前記規則を用いて選択したウェブコードを実行するステップと、
を含む動作を行わせる命令を含む非一時的コンピュータ可読記憶媒体と、
を備えるシステム。
[C10]
前記命令が、前記1つ以上のデータプロセッサに、前記ウェブページをロードする間に動的コードを注入するステップであって、前記動的コードが望ましいウェブコードを含む、ステップを含む、追加的動作をさらに行わせる、C9に記載のシステム。
[C11]
前記命令が、前記1つ以上のデータプロセッサに、前記因子をサーバに送信するステップをさらに含む、前記追加的動作をさらに行わせ、前記動的コードが、前記送信した因子と前記規則とに基づいて選択された前記望ましいウェブコードを含む、C10に記載のシステム。
[C12]
前記因子が顧客識別情報を含み、前記動的コードが、前記顧客識別情報に基づいて選択された前記望ましいウェブコードを含む、C11に記載のシステム。
[C13]
前記動的コードが前記規則と複数の利用可能なコードとを含み、前記望ましいウェブコードが、前記因子と前記デバイス上での前記規則の評価とに基づいて、前記複数の利用可能なコードから選択される、C10に記載のシステム。
[C14]
前記因子がユーザエージェント文字列であり、前記望ましいウェブコードが、前記ユーザエージェント文字列と前記規則とに基づいて選択される、C9に記載のシステム。
[C15]
前記因子が前記ウェブページの前記コンテンツに基づくものであり、前記ウェブページの前記コンテンツが複数のウェブページ要素を含み、前記望ましいウェブコードが、前記複数のウェブページ要素のうちの少なくとも1つに基づいて選択される、C9に記載のシステム。
[C16]
前記望ましいウェブコードがJavaScript(登録商標)タグである、C9に記載のシステム。
[C17]
データ処理装置に、
ユーザデバイス上にウェブページをロードすることと、
前記ウェブページをロードする際に因子にアクセスすることであって、因子が、ユーザデバイス固有属性または前記ウェブページのコンテンツを含む、ことと、
規則を判定することと、
前記因子および前記規則を用いて選択したウェブコードを実行することと、
を行わせるように構成される命令を含む、非一時的機械可読記憶媒体に有形具現化されたコンピュータプログラム製品。
[C18]
前記命令が、前記データ処理装置に、前記ウェブページをロードする間に動的コードを注入することを行わせるようにさらに構成され、前記動的コードが望ましいウェブコードを含む、C17に記載のコンピュータプログラム製品。
[C19]
前記命令が、前記データ処理装置に、前記因子をサーバに送信することを行わせるようにさらに構成され、前記動的コードが、前記送信した因子と前記規則とに基づいて選択された前記望ましいウェブコードを含む、C18に記載のコンピュータプログラム製品。
[C20]
前記因子が顧客識別情報を含み、前記動的コードが、前記顧客識別情報に基づいて選択された前記望ましいウェブコードを含む、C19に記載のコンピュータプログラム製品。
[C21]
前記動的コードが前記規則と複数の利用可能なコードとを含み、前記望ましいウェブコードが、前記因子と前記ユーザデバイス上での前記規則の評価とに基づいて、前記複数の利用可能なコードから選択される、C18に記載のコンピュータプログラム製品。
[C22]
前記因子がユーザエージェント文字列であり、前記望ましいウェブコードが、前記ユーザエージェント文字列と前記規則とに基づいて選択される、C17に記載のコンピュータプログラム製品。
[C23]
前記因子が前記ウェブページの前記コンテンツに基づくものであり、前記ウェブページの前記コンテンツが複数のウェブページ要素を含み、前記望ましいウェブコードが、前記複数のウェブページ要素のうちの少なくとも1つに基づいて選択される、C17に記載のコンピュータプログラム製品。
[C24]
前記望ましいウェブコードがJavaScript(登録商標)タグである、C17に記載のコンピュータプログラム製品。
図1
図2
図3A
図3B
図3C
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21