[0001]本出願は、(1)2017年5月5日に出願された、米国仮特許出願第62/502,535号、(2)2017年5月5日に出願された米国仮特許出願第62/502,572号に基づき優先権を主張し、その全内容が、あらゆる目的のために参照により本明細書に組み込まれる。
[0029]添付の図面において、類似のコンポーネントおよび/または特徴は、同じ参照符号により示されてもよい。さらに、同じタイプの様々なコンポーネントは、ダッシュおよび類似のコンポーネントを区別する第2の符号による参照符号に従うことによって区別することができる。本明細書では、第1の参照符号のみを使用する場合、第2の参照符号とは無関係に、同じ第1の参照符号を有する類似のコンポーネントのうちのいずれか1つに、説明を適用することができる。
[0030]以下の説明は、実施形態の好ましい例のみを提供し、本開示の範囲、適用可能性、または構成を限定することを意図しない。むしろ、実施形態の好ましい例の以下の説明は、実施形態の好ましい例を実施するための可能な説明を当業者に提供する。添付の特許請求の範囲に記載の趣旨および範囲から逸脱することなく、要素の機能および配置に様々な変更を加えることができることを理解されたい。
[0031]図1は、ここで説明される特定の実施形態および特徴を実施およびサポートするネットワークインタラクションシステム100の実施形態のブロック図を示す。特定の実施形態は、(ユーザ110によって操作され得る)ネットワークデバイス105と(エージェント120によって操作され得る)端末機器115との間の接続チャネルを確立することに関する。特定の実施形態では、ネットワークインタラクションシステム100は、クライアント125に関連付けられたクライアントデバイス130を含むことができる。
[0032]特定の実施形態では、ユーザ110は、ウェブサイトを閲覧している個人、またはリモートサーバ140によって提供されるオンラインサービスにアクセスしている個人であってもよい。クライアント125は、ウェブサイトまたはオンラインサービスを提供、操作、もしくは実行するエンティティ、または、ここで説明するように、クライアント125に利用可能なタスクを実行するために、そのようなエンティティによって使用される、または割り当てられた個人であってもよい。エージェント120は、ウェブサイトまたはオンラインサービスに関するサポートまたは情報をユーザ110に提供することを課されるサポートエージェントなどの個人であってもよい。多数のエージェントのうち、エージェントのサブセットは、特定のクライアント125にサポートまたは情報を提供するのに適していることがある。エージェント120は、クライアント125と提携していても、提携していなくてもよい。各エージェントは、1または複数のクライアント125に関連付けることができる。いくつかの非限定的な例では、ユーザ110は、パーソナルコンピューティングデバイスからオンラインストアでショッピングする個人であってよく、クライアント125は、製品をオンラインで販売する会社であってよく、エージェント120は、会社に使用される代表者であってよい。様々な実施形態において、ユーザ110、クライアント125、およびエージェント120は、他の個人またはエンティティであってもよい。
[0033]図1は、単一のネットワークデバイス105、端末機器115、およびクライアントデバイス130のみを示すが、インタラクションシステム100は、これらのタイプのデバイスのうちの1または複数の各々を複数または多数(例えば、数十、数百、または数千)含むことができる。同様に、図1は、単一のユーザ110、エージェント120、およびクライアント125のみを示しているが、インタラクションシステム100は、そのようなエンティティの1または複数の各々を複数または多数を含むことができる。したがって、所与のネットワークデバイスと通信するためにどの端末機器が選択されるべきかを決定する必要があり得る。さらに問題を複雑にすると、リモートサーバ140はまた、ネットワークデバイス通信を選択するために受信および応答するように構成され得る。
[0034]接続管理システム150は、通信の戦略的ルーティングを容易にすることができる。通信は、(例えば、タイプ入力または音声入力などのエンティティからの入力に基づいて定義される)コンテンツを有するメッセージを含むことができる。通信は、送信デバイスに関するデータ(例えば、IPアドレス、アカウント識別子、デバイスタイプ、および/またはオペレーティングシステム)、宛先アドレス、クライアントの識別子、ウェブページまたはウェブページ要素の識別子(例えば、通信が生成されたか、通信に関連付けられたときにアクセスされた(visited)ウェブページまたはウェブページ要素)、もしくはオンライン履歴データ、時間(例えば、時刻および/または日付)、および/または宛先アドレスなどの追加のデータを含むこともできる。他の情報を通信に含めることができる。いくつかの例では、接続管理システム150は、通信全体を別のデバイスにルーティングする。いくつかの例では、接続管理システム150は、通信を修正するか、または(例えば、最初の通信に基づいて)新しい通信を生成する。新しいまたは修正された通信は、メッセージ(またはその処理後のバージョン)、(例えば、送信デバイス、ウェブページ、またはオンライン履歴および/または時間に関する)追加のデータの少なくとも一部(またはすべて)、および/または接続管理システム150によって識別された他のデータ(例えば、特定のアカウント識別子またはデバイスに関連付けられたアカウントデータ)を含むことができる。新しいまたは変更された通信は、他の情報も含むことができる。
[0035]戦略的ルーティング容易化の一部は、ネットワークデバイス105と1または複数の端末機器115との間の1または複数の接続チャネルを確立、更新、使用することを含むことができる。例えば、ネットワークデバイス105から通信を受信すると、接続管理システム150は、まず、(もしあれば)どのクライアントに通信が対応するかを推定することができる。クライアントを識別すると、接続管理システム150は、ネットワークデバイス105との通信のためにクライアントに関連付けられた端末機器115を識別することができる。いくつかの例では、識別は、複数のエージェント(またはエキスパートまたは代表者(delegates))の各々のプロファイルを評価することを含んでもよく、複数のエージェントのうちの各エージェント(例えば、エージェント120)は、端末機器(例えば、端末機器115)に関連付けられる。評価は、ネットワークデバイスメッセージにおけるコンテンツに関連することができる。端末機器115の識別は、例えば、あらゆる目的のためにその全体が参照により本明細書に組み込まれる、2010年3月17日に出願された米国特許出願第12/725,799号に記載された技術を含み得る。
[0036]いくつかの例では、接続管理システム150は、ネットワークデバイス105とクライアント(またはリモートサーバ140)に関連付けられた端末機器との間に何らかの接続チャネルが確立されているか否かを決定することができ、確立されている場合には、その通信を含む一連の通信を交換するためにそのチャネルを使用するか否かを決定することができる。
[0037]ネットワークデバイス105と通信する端末機器115を選択すると、接続管理システム150は、ネットワークデバイス105と端末機器115との間に接続チャネルを確立することができる。いくつかの例では、接続管理システム150は、選択された端末機器115にメッセージを送信することができる。メッセージは、ネットワークデバイス105と通信するために、提案された割り当ての受諾を要求してもよく、またはそのような割り当てが生成されたことを識別してもよい。メッセージは、ネットワークデバイス105に関する情報(例えば、IPアドレス、デバイスタイプ、および/またはオペレーティングシステム)、関連付けられたユーザ110に関する情報(例えば、発話言語、クライアントとインタラクトした期間、スキルレベル、センチメント、および/またはトピック嗜好)、受信された通信、ネットワークデバイス105への通信を生成および送信するためのコード(例えば、クリック可能なハイパーリンク)、および/またはネットワークデバイス105への通信を生成および送信するための命令を含むことができる。
[0038]一例では、ネットワークデバイス105と端末機器115との間の通信は、接続管理システム150を介してルーティングすることができる。そのような構成は、接続管理システム150が通信交換をモニタし、いずれかのデバイスの非応答性または延長されたレイテンシ(latency)などの(例えば、ルールに基づいて定義されるような)問題を検出することを可能にし得る。さらに、そのような構成は、通信の選択的または完全な記憶を容易にすることができ、これは、後に、例えば、通信交換の品質を評価するために、および/または、特定の通信後ターゲット(post−communication targets)を促進するようにルーティングルールを更新または生成するための学習をサポートするために使用され得る。
[0039]いくつかの実施形態では、接続管理システム150は、リアルタイムで通信交換をモニタし、ライブ通信に基づいて自動化されたアクション(例えば、ルールベースアクション(rule−based actions))を実行することができる。例えば、接続管理システム150が、通信が特定のアイテム(例えば、製品)に関連すると決定すると、接続管理システム150は、アイテムに関する追加の情報(例えば、利用可能なアイテムの量、アイテムに関連する文書をサポートするためのリンク、またはアイテムもしくは類似のアイテムに関する他の情報)を含む追加のメッセージを端末機器115に自動的に送信することができる。
[0040]一例では、指定された端末機器115は、接続管理システム150を介して通信をリレー(relaying)することなく、ネットワークデバイス105と通信することができる。デバイス105、115の一方または両方は、通信モニタおよび/またはデータ記憶を容易にするために、特定の通信メトリックまたはコンテンツを接続管理システム150に報告してもよい(または報告しなくてもよい)。
[0041]上述のように、接続管理システム150は、選択通信(select communications)をリモートサーバ140にルーティングすることができる。リモートサーバ140は、所定の方法で情報を提供するように構成することができる。例えば、リモートサーバ140は、通信に応答して送信するために、定義された1または複数のテキストパッセージ、音声記録(voice recording)および/またはファイルにアクセスしてもよい。リモートサーバ140は、例えば、受信した通信の分析(例えば、意味分析またはマッピング分析)に基づいて、特定のテキストパッセージ、記録またはファイルを選択してもよい。
[0042]接続管理システム150で実行されるルーティングおよび/または他の決定または処理は、1または複数のクライアントデバイス130によって少なくとも部分的に定義される、または提供されるルールおよび/またはデータに基づいて実行することができる。例えば、クライアントデバイス130は、エージェントの優先順位付け、端末機器タイプ、および/またはトピック/スキルマッチングを識別する通信を送信してもよい。別の例として、クライアントデバイス130は、ルーティング決定に影響を与える可能性のある様々な変数(例えば、言語互換性、予測された応答時間、デバイスタイプおよび機能、および/または端末機器負荷バランス)に適用するための1または複数の重みを識別してもよい。どの端末機器および/またはエージェントがクライアントに関連付けられるかは、動的であり得る。クライアントデバイス130および/または端末機器115からの通信は、所与の端末機器および/またはエージェントがクライアントに関連付けられたものとして追加または削除されるべきであることを示す情報を提供してもよい。例えば、クライアントデバイス130は、通信と、IPアドレス、そのアドレスを有する端末機器がクライアント関連端末機器を識別するリストに追加されるべきか、削除されるべきかに関する表示(indication)とを送信することができる。
[0043]各通信(例えば、デバイス間、デバイスと接続管理システム150間、リモートサーバ140と接続管理システム150間、またはリモートサーバ140とデバイス間)は、1または複数のネットワーク170を介して実行することができる。オープンまたはクローズドネットワークの任意の組合せが、1または複数のネットワーク170に含まれ得る。適切なネットワークの例は、インターネット、パーソナルエリアネットワーク、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、またはワイヤレスローカルエリアネットワーク(WLAN)を含む。他のネットワークも同様に適している。1または複数のネットワーク170は、イントラネット、エクストラネット、またはそれらの組合せ内に完全に組み込むことができ、またはそれらを含むことができる。いくつかの例では、1または複数のネットワーク170におけるネットワークは、Bluetooth(登録商標)またはBluetooth(登録商標) Low Energyチャネルなどの短距離通信チャネルを含む。一実施形態では、2以上のシステムおよび/またはデバイス間の通信は、セキュアソケットレイヤ(SSL)またはトランスポートレイヤセキュリティ(TLS)などのセキュア通信プロトコルによって達成することができる。加えて、データおよび/またはトランザクションの詳細は、データ暗号化標準(DES)、トリプルDES、Rivest−Shamir−Adleman暗号(RSA)、Blowfish暗号、Advanced Encryption Standard(AES)、CAST−128、CAST−256、無相関化高速暗号(DFC:Decorrelated Fast Cipher)、Tiny Encryption Algorithm(TEA)、拡張TEA(XTEA:eXtended TEA)、Corrected Block TEA(XXTEA)、および/またはRC5などの、非限定的な、任意の便利な、既知の、または開発される方法に基づいて暗号化されてもよい。
[0044]ネットワークデバイス105、端末機器115、および/またはクライアントデバイス130は、例えば、ポータブル電子デバイス(例えば、スマートフォン、タブレット、ラップトップコンピュータ、またはスマートウェアラブルデバイス)、または非ポータブル電子デバイス(例えば、1または複数のデスクトップコンピュータ、スマート家電、サーバ、および/またはプロセッサ)を含むことができる。接続管理システム150は、ネットワーク、端末、およびクライアントデバイスとは別個に収容することができ、または(例えば、デバイス上のアプリケーションのインストールを介して)1または複数のこのようなデバイスの一部であってもよい。リモートサーバ140は、各デバイスおよび接続管理システム150とは別個に収容されてもよく、および/または、別のデバイスまたはシステムの一部であってもよい。図1における各デバイス、サーバ、およびシステムは、単一のデバイスとして示されているが、複数のデバイスが代わりに使用されてもよい。例えば、単一のユーザから様々な通信を送信するために1組のネットワークデバイスを使用することができ、またはリモートサーバ140は、サーバスタックを含んでもよい。
[0045]ソフトウェアエージェントまたはアプリケーションは、図示されたデバイス、システム、またはサーバ上にインストールされてもよく、および/または実行可能であってもよい。一例では、ソフトウェアエージェントまたはアプリケーションは、様々な図示された要素が相補的な形で動作できるように構成される。例えば、デバイス上のソフトウェアエージェントは、デバイス使用に関するデータを収集し、別個の接続管理システムに送信するように構成することができ、別個の接続管理システム上のソフトウェアアプリケーションは、データを受信し、処理するように構成することができる。
[0046]図2は、ネットワークインタラクションシステム200の別の実施形態のブロック図を示す。一般に、図2は、ネットワークデバイス205が1または複数の端末機器215と通信することを可能にするように構成および配置された様々なコンポーネントを示す。図示された例は、3つのローカルエリアネットワーク235に含まれる9つの端末機器215を含む。
[0047]いくつかの例では、ネットワークデバイス205からの通信は、どの端末機器が通信を受信すべきかを少なくとも部分的にまたは完全に示す宛先データ(例えば、宛先IPアドレス)を含む。ネットワークインタラクションシステム200は、宛先データを処理し、適切なルーティングを容易にすることができる1または複数のインターネットワーク接続コンポーネント240および/または1または複数のイントラネットワーク接続コンポーネント255を含むことができる。
[0048]各インターネットワーク接続コンポーネント245は、複数のネットワーク235に接続することができ、複数のネットワークカードをインストールすることができる(例えば、各カードは異なるネットワークに接続される)。例えば、インターネットワーク接続コンポーネント245は、広域ネットワーク270(例えば、インターネット)および1または複数のローカルエリアネットワーク235に接続することができる。図示された例では、通信がネットワークデバイス205から端末機器のいずれかに送信されるために、図示のシステムでは、通信は、複数のインターネットワーク接続コンポーネント245によって処理されなければならない。
[0049]インターネットワーク接続コンポーネント245が通信(または通信に対応するパケットのセット)を受信すると、インターネットワーク接続コンポーネント245は、通信を宛先に関連付けられたネットワークにパス(pass)するルートの少なくとも一部を決定することができる。ルートは、例えば、(例えば、ルータに記憶された)事前に定義され、(例えば、別のルータからまたは別のデバイスからの)着信メッセージ(incoming message)に基づいて生成され、または学習された1または複数のルートを含むことができるルーティングテーブルを使用して決定することができる。
[0050]インターネット接続コンポーネント245の例は、ルータ260およびゲートウェイ265を含む。インターネットワーク接続コンポーネント245(例えば、ゲートウェイ265)は、ネットワークシステムまたはプロトコル間で変換するように構成され得る。例えば、ゲートウェイ265は、伝送制御プロトコル/インターネットプロトコル(TCP/IP)とインターネットワークパケット交換/シーケンスパケット交換(IPX/SPX)デバイスとの間の通信を容易にすることができる。
[0051]ローカルエリアネットワーク235で通信を受信すると、さらなるルーティングの実行が依然として必要となり得る。このようなイントラネットワークルーティングは、スイッチ280またはハブ285などのイントラネットワーク接続コンポーネント255を介して実行することができる。各イントラネットワーク接続コンポーネント255は、複数の端末機器215に(例えば、無線または例えばイーサネット(登録商標)ケーブルを介して、有線で)接続することができる。ハブ285は、接続される各デバイスに対して、全ての受信された通信を繰り返すように構成され得る。次いで、各端末機器は、端末機器が宛先デバイスであるかどうか、または通信が無視されるかべきかどうかを決定するために、各通信を評価することができる。スイッチ280は、通信を宛先端末機器のみに選択的に向けるように構成することができる。
[0052]いくつかの例では、ローカルエリアネットワーク235を複数のセグメントに分割することができ、各セグメントは、独立したファイアウォール、セキュリティルール、およびネットワークプロトコルに関連付けることができる。イントラセグメント(intra−segment)ルーティングを容易にするために、1つ、複数、またはすべてのセグメントの各々に、イントラネットワーク接続コンポーネント255を設けることができる。ブリッジ280は、セグメント275にわたって通信をルーティングするように構成することができる。
[0053]ネットワークを介して、またはネットワーク内で通信を適切にルーティングするために、様々なコンポーネントが、通信内の宛先データを分析する。例えば、そのようなデータは、通信がどのネットワークにルーティングされるべきか、通信がネットワーク内のどのデバイスにルーティングされるべきか、または端末機器がどの通信を処理すべきか(または無視すべきか)を示すことができる。しかし、いくつかの例では、どの端末機器(またはどのネットワーク)がネットワークデバイスからの通信に参加すべきかはすぐには分からない。
[0054]例示のために、端末機器のセットは、同様のタイプの応答通信を提供するように構成され得る。したがって、ネットワークデバイスからの通信におけるクエリは、どのネットワークデバイスに通信がルーティングされるかにかかわらず、同様の方法で応答され得ることが期待できる。この仮定は高いレベルでは真であるが、端末機器に関する様々な詳細は、他のものと比較して有利な特定のルーティングを生じさせ得る。例えば、セット内の端末機器は、(例えば)どの通信チャネルがサポートされているか、ネットワークデバイスに対する地理的および/またはネットワークの近接性、および/または関連付けられたエージェントの特徴(例えば、知識ベース、経験、発話言語、利用可能性、一般的な性格またはセンチメントなど)に関して互いに異なることがある。したがって、選択ルーティングは、より正確におよび/または完全にネットワークデバイス通信に応答する、より高速な応答を容易にすることができる。複雑さは、ネットワークデバイスを端末機器にマッピングする静的ルーティングが、通信トピック、チャネルタイプ、エージェント利用可能性などの変動を考慮できないことである。
[0055]図3A−3Cは、接続管理システムを含むネットワークインタラクションシステム300a−300cの他の実施形態のブロック図を示す。図示されたシステム300a−300cの各々は、簡単のために、2つのローカルエリアネットワーク235のみを示しているが、実施形態は、ローカルエリアネットワークの数を増やして拡張することができる。システム300a−300cの各々は、どの端末機器がネットワークデバイス205と通信すべきかを識別すること、接続チャネルを確立および管理(例えば、維持(maintain)または閉鎖(close))すること、交換において通信を再ルーティングすべきかどうか、およびいつ再ルーティングすべきかを決定すること等ができる接続管理システム350を含む。したがって、接続管理システム350は、ルーティング決定に影響を及ぼすために、通信、エージェントの利用可能性、端末機器またはエージェントの機能などを動的に、リアルタイムで評価するように構成され得る。
[0056]図3Aでは、接続管理システム350は、ネットワークデバイス205およびリモートサーバ340の各々に関連付けられる(例えば、接続管理システム350aは、ネットワークデバイス205に関連付けられ、接続管理システム350bは、リモートサーバ340に関連付けられる)。例えば、接続管理システム350aおよび/または接続管理システム350bは、それぞれが、ネットワークデバイス205およびリモートサーバ340の各々にアプリケーションとしてインストールまたは記憶することができる。アプリケーションの実行は、例えば、ネットワークデバイス205との通信交換に参加するために選択された端末機器215を識別するために、ネットワークデバイス205とリモートサーバ340との間の通信を容易にすることができる。識別は、ここで開示される1または複数の要因(例えば、利用可能性、通信のトピック/詳細レベルとエージェントまたは端末機器の知識ベースとの間のマッチング、予測レイテンシ、チャネルタイプの利用可能性など)に基づいて行うことができる。
[0057]クライアントデバイス330は、ルーティング決定がどのように行われるべきかを示すクライアントデータを提供することができる。例えば、そのようなデータは、特定の特徴をどのように重み付けまたはマッチさせる(matched)かに関する指示、または制約またはバイアス(例えば、負荷平衡または予測された応答レイテンシに関係する)を含むことができる。クライアントデータはまた、いつ通信チャネルが確立(または閉鎖)されるか、またはいつ通信が異なるネットワークデバイスに再ルーティングされるかに関する仕様を含むことができる。クライアントデータは、通信ルーティングなどのためのルールのような様々なクライアント特有の(client−specific)ルールを定義するために使用することができる。
[0058]リモートサーバ340上で実行される接続管理システム350bは、どの通信チャネルがサポートされているか、ネットワークデバイスに対する地理的および/またはネットワークの近接性、端末機器との通信レイテンシおよび/または安定性、端末機器のタイプ、端末機器の機能、端末機器(またはエージェント)が所与のネットワークデバイス(またはユーザ)と以前に通信したかどうか、および/または関連付けられたエージェントの特徴(例えば、知識ベース、経験、発話言語、利用可能性、一般的な性格またはセンチメントなど)などの端末機器に関連する(例えば、所与のクライアントに関連する)様々なメトリックをモニタすることができる。したがって、接続管理システム350bは、メトリック(metrics)に基づいて、ネットワーク・デバイス通信に対してより正確におよび/または完全に応答する、より高速な応答を容易にするルーティングを選択することができる。
[0059]図3Aに示す例では、ネットワークデバイス205とリモートサーバ340間の通信交換は、宛先アドレスの早期識別を容易にすることができる。次いで、ネットワークデバイス205は、後続の通信を指示するために宛先アドレスを使用することできる。例えば、ネットワークデバイス205は、(例えば、1または複数のインターネットワーク接続および広域ネットワークを介して)初期通信をリモートサーバ340に送信することができ、リモートサーバ340は、1または複数の対応するクライアントを識別することができる。次いで、リモートサーバ340は、1または複数の対応するクライアントに関連付けられた端末機器のセットを識別し、それらの端末機器のメトリックを収集することができる。メトリックは、通信交換に関与する端末機器を選択するために(例えば、リモートサーバ340によって)評価されてもよく、端末機器に関する情報(例えば、IPアドレス)は、ネットワークデバイス205に送信されてもよい。いくつかの実施形態では、リモートサーバ340は、様々な端末機器のメトリックを連続的または定期的に収集および評価し、評価結果をデータストアに記憶してもよい。そのような実施形態では、1または複数の対応するクライアントに関連付けられた端末機器のセットを識別すると、リモートサーバ340は、データストアから記憶された評価結果にアクセスし、記憶された評価結果に基づいて通信交換に関与する端末機器を選択することができる。
[0060]図3Bでは、接続管理システム350は、リレーおよび/または宛先アドレスとして機能するように構成することができる。したがって、例えば、ネットワークデバイス205のセットは、各々が接続管理システム350を宛先として識別する通信を送信してもよい。接続管理システム350は、各通信を受信することができ、(例えば、各端末機器のメトリックを生成するために)端末機器のセットを同時にモニタすることができる。モニタおよびルールに基づいて、接続管理システム350は、各通信をリレーすることができる端末機器215を識別することができる。実施形態に応じて、端末機器の通信は、同様に、さらなるリレーのために(例えば、接続管理システム350の)一定の宛先に向けられてもよく、または端末機器は、対応するネットワークデバイスと直接通信を開始してもよい。これらの実施形態は、効率的なルーティングおよび完全な通信モニタを容易にすることができる。
[0061]図3Cに示す実施形態は、図3Bの実施形態と同様である。しかし、いくつかの実施形態では、接続管理システム350は、イントラネットワークコンポーネント(例えば、端末機器、イントラネットワーク接続、その他)に直接接続される。
[0062]図3A−3Cの多くのバリエーションが考えられる。例えば、接続管理システム350は、接続コンポーネント(例えば、インターネットワーク接続コンポーネント245またはイントラネットワーク接続コンポーネント255)に関連付けられてもよく、その結果、接続管理システム350(またはその一部)に対応するアプリケーションがコンポーネントにインストールされる。アプリケーションは、例えば、独立して、1または複数の同様のまたは相補的なアプリケーションと通信することによって(例えば、1または複数の他のコンポーネント、ネットワークデバイス、またはリモートサーバ上で実行することによって)実行することができる。
[0063]図4は、接続コンポーネントの動作のプロトコルスタックマッピング400の表示である。より詳細には、図4は、様々な接続コンポーネントに対応するOSI(Open Systems Interaction)モデルにおける動作の層を示す。
[0064]OSIモデルは、複数の論理層402−414を含むことができる。これらの層は、層402−412が各々より高いレベルを提供し、層404−414が各々より低い層を提供するように、順序付けられたスタックに配置される。OSIモデルは、物理層402を含む。物理層402は、パラメータ物理的通信(例えば、電気的、光学的、または電磁気的)を定義することができる。物理層402はまた、接続を確立および閉鎖するプロトコルなどの接続管理プロトコルを定義する。物理層402は、フロー制御プロトコルおよび送信モードをさらに定義することができる。
[0065]リンク層404は、ノード間通信を管理することができる。リンク層404は、エラー(例えば、物理層402における送信エラー)を検出し、訂正し、アクセス許可を管理することができる。リンク層404は、媒体アクセス制御(MAC)層および論理リンク制御(LLC)層を含むことができる。
[0066]ネットワーク層406は、(例えば、可変長の)データの同じネットワーク内のノードにわたる(例えば、データグラムとして)転送を調整することができる。ネットワーク層406は、論理ネットワークアドレスを物理マシンアドレスに変換することができる。
[0067]トランスポート層408は、送信品質および受信品質を管理することができる。トランスポート層408は、TCP(Transmission Control Protocol)などのデータを転送するためのプロトコルを提供することができる。トランスポート層408は、送信のためにデータパケットのセグメント化(segmentation)/非セグメント化(desegmentation)を実行することができ、層402−406で発生する送信エラーを検出し、考慮することができる。セッション層410は、ローカルアプリケーションとリモートアプリケーション間の接続を開始し、維持し、終了することができる。セッションは、リモートプロシージャ・インタラクションの一部として使用され得る。プレゼンテーション層412は、アプリケーションまたはネットワーク層によって受け入れられることが知られているデータタイプに基づいて、データを暗号化し、復号化し、フォーマットすることができる。
[0068]アプリケーション層414は、通信を制御または管理するソフトウェアアプリケーションとインタラクトすることができる。そのようなアプリケーションを介して、アプリケーション層414は、(例えば)宛先、ローカルリソース状態または利用可能性および/または通信コンテンツまたはフォーマットを識別することができる。様々な層402−414は、利用可能であり適用可能な他の機能を実行することができる。
[0069]イントラネットワーク接続コンポーネント422、424は、物理層402およびリンク層404で動作するように示されている。より具体的には、ハブは、通信の受信および送信に関して動作を制御することができるように、物理層で動作することができる。ハブは、通信に対応する(address)機能またはデータをフィルタする機能を欠いているので、より高いレベルで動作する機能をほとんどまたは全く有していない。一方、スイッチは、アドレス(例えば、MACアドレス)に基づいて通信フレームをフィルタリングすることができるので、リンク層404で動作することができる。
[0070]一方、インターネットワーク接続コンポーネント426、428は、より高いレベル(例えば、レイヤ406−414)で動作するように示されている。例えば、ルータは、アドレス(例えば、IPアドレス)に基づいて通信データパケットをフィルタリングすることができる。ルータは、パケットを適切なネットワークに向けるために、アドレスに基づいて特定のポートにパケットを転送することができる。ゲートウェイは、ネットワーク層およびその上で動作し、同様のフィルタリングおよび方向付け、ならびにデータのさらなる変換(例えば、プロトコルまたはアーキテクチャにわたって)を実行することができる。
[0071]接続管理システム450は、様々な実施形態では、様々な層のうちの1つ、複数、すべて、または任意の層とインタラクトし、および/またはその上で動作することができる。例えば、接続管理システム450は、ハブがどの端末機器と通信するかを動的に調整するためにハブとインタラクトできる。別の例として、接続管理システム450は、コンポーネントがどの端末機器を宛先(例えば、MAC、論理または物理)アドレスとして選択するかに影響を及ぼすように、ブリッジ、スイッチ、ルータまたはゲートウェイと通信することができる。さらなる例として、接続管理システム450は、トランスポート層408上のデータパケットのセグメント化、セッション層410上のセッション持続時間、および/またはプレゼンテーション層412上の暗号化および/または圧縮をモニタ、制御、または指示することができる。いくつかの実施形態では、接続管理システム450は、特定の層上で動作する機器(例えば、リンク層404上で動作するスイッチ)と通信を交換する(例えば、コマンドを送る)ことによって、既存の通信を(例えば、ネットワークデバイスと端末機器との間で)特定の方法でルーティングまたは修正することによって、および/または既存の通信に基づいて特定の情報(例えば、新しい宛先アドレス)を含む新しい通信を生成することによって、様々な層とインタラクトすることができる。したがって、接続管理システム450は、様々なデバイスとのインタラクションを介して、および/または様々なプロトコルスタック層での動作に影響を与えることを介して、通信ルーティングおよびチャネル確立(または維持または終了)に影響を与えることができる。
[0072]図5は、一実施形態によるマルチデバイス通信交換システム500を表す。システム500は、様々なタイプの通信チャネルを介して様々なタイプの端末機器と通信するように構成されたネットワークデバイス505を含む。
[0073]図示された例では、ネットワークデバイス505は、セルラネットワークを介して(例えば、基地局510を介して)通信を送信することができる。通信は、動作ネットワーク515にルーティングされ得る。動作ネットワーク515は、通信を受信し、どの端末機器が通信に応答すべきかを識別する接続管理システム520を含むことができる。そのような決定は、(例えば、コンテンツ分析またはクライアントを示すユーザ入力に基づいて)通信が関係するクライアントを識別することと、クライアントに関連付けられた1または複数の端末機器の各々について1または複数のメトリックを決定することとに依存し得る。例えば、図5では、端末機器530a−530cの各クラスタは、異なるクライアントに対応することができる。端末機器は、地理的に同じ場所に配置されてもよいし、分散されてもよい。メトリックは、記憶された又は学習されたデータ及び/又はリアルタイムモニタに基づいて(例えば、利用可能性に基づいて)決定されてもよい。
[0074]接続管理システム520は、1または複数のルータ525または他のインターネットワークもしくはイントラネットワーク接続コンポーネントを介して様々な端末機器と通信することができる。接続管理システム520は、1または複数のデータストアにおいて、通信、端末機器動作、クライアントルール、および/またはユーザ関連アクション(例えば、オンラインアクティビティ)から、またはそれらに関係するデータを収集、分析、および/または記憶することができる。そのようなデータは、通信ルーティングに影響を及ぼすことがある。
[0075]特に、通信ルーティングおよび/または処理に影響を与えるために、様々な他のデバイスをさらに使用することができる。例えば、図示された例では、接続管理システム520は、ウェブサーバ540にも接続される。したがって、接続管理システム520は、技術項目の詳細などの関心のあるデータを検索する(retrieve)ことができる。
[0076]ネットワークデバイス505は、ウェブサーバ(例えば、ウェブサーバ545を含む)にも接続され得る。いくつかの例では、そのようなサーバとの通信は、接続管理システム520との通信交換を開始するための初期オプションを提供した。例えば、ネットワークデバイス505は、特定のウェブページにアクセスしている間に、通信機会が利用可能であり、そのようなオプションが提示できることを検出し得る。
[0077]通信システム500の1または複数の要素をソーシャルネットワーキングサーバ550に接続することもできる。ソーシャルネットワーキングサーバ550は、様々なユーザデバイスから受信したデータを集約することができる。したがって、例えば、接続管理システム520は、所与のユーザまたはユーザのクラスの一般的な(またはユーザ特有の)挙動を推定することができる。
[0078]図6は、接続管理システム600の実施形態のブロック図である。メッセージ受信機インタフェース605は、メッセージを受信することができる。いくつかの例では、メッセージは、例えば、ネットワークデバイスまたは端末機器などのソースデバイス(例えば、接続管理システム600とは別に、または同じハウジング内に収容される)によって送信される通信の一部として受信され得る。いくつかの例では、通信は、2つのデバイス(例えば、ネットワークデバイスおよび端末機器)の間でルーティングされる一連のメッセージまたはメッセージ交換を含むことができる、一連の通信または通信交換の一部とすることができる。このメッセージまたは通信交換は、デバイス間のインタラクションの一部であっても、および/または定義するものであってもよい。通信チャネルまたは動作チャネルは、デバイス間のルーティングおよび通信交換を容易にするために使用される1または複数のプロトコル(例えば、ルーティングプロトコル、タスク割り当てプロトコル、および/またはアドレス指定プロトコル)を含むことができる。
[0079]いくつかの例では、メッセージは、ローカルまたはリモートユーザインタフェースで受信された入力に基づいて生成されたメッセージを含むことができる。例えば、メッセージは、ボタンまたはキー押下または記録された音声信号に基づいて生成されたメッセージを含むことができる。一例では、メッセージは、ネットワークデバイスが特定のアプリページ(app page)またはウェブページを提示しているか、または特定の入力コマンド(例えば、キーシーケンス)を提供したことを検出したときに生成されるメッセージのような自動的に生成されるメッセージを含む。メッセージは、通信交換を開始するような命令または要求を含むことができる。
[0080]いくつかの例では、メッセージは、クライアントの識別子を含むか、またはクライアントの識別子に関連付けることができる。例えば、メッセージは、クライアント(またはクライアントに関連付けられたデバイス)を明示的に識別することができ、メッセージは、クライアントに関連付けられたウェブページもしくはアプリページを含むか、それに関連付けることができ、メッセージは、クライアントに関連付けられた宛先アドレスを含むか、それに関連付けることができ、または、メッセージは、クライアントに関連付けられたアイテム(例えば、製品)もしくはサービスの識別を含むか、それに関連付けることができる。例えば、ネットワークデバイスは、エージェントに通信を送信するオプションを提供することができる、特定のクライアントのアプリページを提示することができる。メッセージに対応するユーザ入力を受信すると、メッセージおよび特定のクライアントの識別子を含むように通信を生成することができる。
[0081]処理エンジン610は、受信した通信および/またはメッセージを処理することができる。処理は、例えば、1または複数の特定のデータ要素(例えば、メッセージ、クライアント識別子、ネットワークデバイス識別子、アカウント識別子など)を抽出することを含んでもよい。処理は、(例えば、特定のデバイスタイプ、オペレーティングシステム、通信チャネルタイプ、プロトコル、および/またはネットワークと互換性があるように)フォーマットまたは通信タイプを変換することを含むことができる。
[0082]メッセージ評価エンジン615は、(例えば、抽出されたまたは受信された)メッセージを評価してもよい。評価は、例えば、メッセージの1または複数のカテゴリまたはタグを識別することを含むことができる。カテゴリまたはタグタイプの例は、(例えば)トピック、センチメント、複雑度、および緊急度を含むことができる。メッセージのカテゴリ化とタグ付けとの違いは、カテゴリは、(例えば、予め定義されたカテゴリオプションのセットに従って)制限することができるが、タグはオープンである。トピックは、例えば、技術的問題、使用上の質問、または要求を含むことができる。カテゴリまたはタグは、例えば、メッセージの(例えば、キーワード、文構造、繰り返し語、句読点文字、および/または非冠詞単語を識別することによる)意味解析、(例えば、選択された1または複数のカテゴリを有する)ユーザ入力、および/またはメッセージ関連統計(例えば、タイピング速度および/または応答レイテンシ)に基づいて決定することができる。
[0083]いくつかの例では、メッセージ評価エンジン615は、メッセージのメトリックを決定することができる。メトリックは、例えば、文字、単語、大文字、すべての大文字の単語、または特定の文字または句読点(例えば、感嘆符、疑問符および/またはピリオド)のインスタンスの数を含むことができる。メトリックは、感嘆符(または疑問符)で終わる文の割合、すべて大文字の単語の割合などの比率を含むことができる。
[0084]メッセージ評価エンジン615は、メッセージ、メッセージメトリック、および/またはメッセージ統計をメッセージデータストア620に記憶することができる。各メッセージは、対応するソースデバイス、宛先デバイス、ネットワークデバイス、端末機器、クライアント、1または複数のカテゴリ、1または複数のステージ、および/またはメッセージ関連統計を識別するデータなど、他のデータ(例えば、メタデータ)に関連して記憶することもできる。接続管理システム600の様々なコンポーネント(例えば、メッセージ評価エンジン615および/またはインタラクション管理エンジン625)は、クエリ応答メッセージ、メッセージメトリック、および/またはメッセージ統計を検索するためにメッセージデータストア620にクエリを実行することができる。
[0085]インタラクション管理エンジン625は、通信がどのデバイスにルーティングされるべきか、および受信および送信デバイスがどのように通信すべきかを決定することができる。これらの決定の各々は、例えば、特定のネットワークデバイス(または特定のユーザに関連付けられた任意のネットワークデバイス)が、端末機器のセット内の端末機器(例えば、接続管理システム600に関連付けられた任意の端末機器、または1または複数の特定のクライアントに関連付けられた任意の端末機器)と以前に通信したかどうかに依存しうる。
[0086]いくつかの例では、ネットワークデバイス(または、同じユーザまたはプロファイルに関連付けられた他のネットワークデバイス)が、所与の端末機器と以前に通信したことがある場合、通信ルーティングは、一般に、同じ端末機器に向かってバイアス(biased)され得る。ルーティングに影響を与え得る他の要因は、例えば、端末機器(または対応するエージェント)が利用可能であるかどうか、および/または端末機器の予測された応答レイテンシを含み得る。そのような要因は、他の端末機器に対応する類似のメトリックに対して絶対的に、または相対的に考慮され得る。再ルーティングルール(例えば、クライアント特有のまたは一般的なルール)は、エージェントの一貫性を優先する(forego)かどうかを決定するために、そのような要因がどのように評価され、重み付けされるべきかを示すことができる。
[0087]ネットワークデバイス(または、同じユーザまたはアカウントに関連付けられた他のネットワークデバイス)が、所与の端末機器と以前に通信していない場合、端末機器の選択は、例えば、様々なエージェントの知識ベースが通信トピックに対応する程度、所与の時間におけるおよび/またはチャネルタイプに対する様々なエージェントの利用可能性、および/または(例えば、クライアントに関連付けられた)端末機器のタイプ、および/または機能などの要因に基づいて実行され得る。一例では、ルールは、そのような1または複数の要因に対するサブパラメータおよび各パラメータに割り当てる重みをどのように決定するかを識別することができる。重み付けされたサブパラメータを組み合わせる(例えば、合計する)ことによって、各エージェントのパラメータを決定することができる。端末機器の選択は、端末機器のパラメータを比較することによって行うことができる。
[0088]デバイスがどのように通信するかを決定することに関して、インタラクション管理エンジン625は、(例えば)端末機器が(例えば)SMSメッセージ、音声呼び出し、ビデオ通信などを介して通信に応答するかどうかを決定することができる。通信タイプは、例えば、(例えば、クライアントまたはユーザによって少なくとも部分的に定義される)通信タイプ優先度リスト、(例えば、一貫性を促進するために)ネットワークデバイスから以前に受信された通信のタイプ、受信されたメッセージの複雑さ、ネットワークデバイスの機能、および/または1または複数の端末機器の利用可能性に基づいて選択され得る。明らかに、いくつかの通信タイプは、(例えば、高速メッセージ応答が期待される)リアルタイム通信をもたらし、一方、他のものは、(例えば、メッセージ間の(例えば、数分または数時間の)遅延が許容可能である)非同期通信をもたらすことができる。
[0089]さらに、インタラクション管理エンジン625は、2つのデバイス間の連続チャネルが確立、使用、または終了されるべきかを決定することができる。連続チャネルは、ネットワークデバイスから特定の端末機器への将来の通信のルーティングを容易にするように構成することができる。このバイアスは、メッセージシリーズ(message series)にわたっても持続することができる。いくつかの例では、連続チャネルの表現(例えば、エージェントの識別)を、ネットワークデバイス上に提示されるプレゼンテーションに含めることができる。このようにして、ユーザは、効率を高めるために通信が一貫してルーティングされるべきであることを理解することができる。
[0090]一例では、パラメータは、所与のネットワークデバイスおよび端末機器に対応する接続パラメータを決定するために、ここで説明される1または複数の要因と、(例えば、1または複数の要因の各々の重みを含む)ルールとを使用して生成され得る。パラメータは、全体的な一致(match)、または所与の通信または通信シリーズに特有のものに関係し得る。したがって、例えば、パラメータは、所与の端末機器がネットワークデバイス通信に応答するのに適していると予測される程度を反映することができる。いくつかの例では、所与の通信をルーティングする端末機器の各々を識別し、接続チャネルを確立、使用、または終了するかを識別するためにパラメータ分析を使用することができる。ルーティング決定およびチャネル決定の両方に対処するためにパラメータ分析が使用される場合、各決定に関連付けられたパラメータは、同一、類似の、または異なる方法で決定され得る。
[0091]したがって、例えば、パラメータが、長期間一致の強度を予測するためのものであるか、特定のメッセージクエリに応答するためのものであるかに依存して、異なる要因が考慮され得る。例えば、前者の場合には、全体のスケジュール及び時間帯の考慮が重要であり、一方、後者の場合には、即時の利用可能性がより高く重み付けされる。パラメータは、単一のネットワークデバイス/端末機器の組合せに対して決定されてもよく、または複数のパラメータが決定されてもよく、各々は、所与のネットワークデバイスと異なる端末機器との間の一致を特徴付ける。
[0092]例示のために、クライアントに関連付けられた3つの端末機器のセットが、潜在的な通信ルーティングについて評価され得る。パラメータは、特定の通信のための一致に関連する各々のために生成され得る。2つの第1の端末機器の各々は、通信を送信したネットワークデバイスと以前通信したことがあってもよい。ネットワークデバイスからの入力は、第1のデバイスとの通信とのインタラクションに関連付けられた肯定的なフィードバックを示したものであってもよい。したがって、第1のデバイス、第2のデバイス、および第3のデバイスについての(例えば、ルールに従って計算された)過去インタラクションサブパラメータ(past−interact sub−parameter)は、各々、10、5、および0であり得る。(負のフィードバック入力は、負のサブパラメータをもたらし得る。)第3の端末機器のみが利用可能であると決定されてもよい。第2の端末機器は15分以内に応答可能であるが、第1の端末機器は翌日まで応答可能でないことが予測され得る。したがって、第1、第2、および第3のデバイスのための高速応答サブパラメータは、1、3、および10であり得る。最後に、(端末機器に関連付けられた)エージェントが通信におけるトピックについてどの程度精通しているかを推定することができる。第3の端末機器に関連付けられたエージェントは、他の2つのデバイスに関連付けられたエージェントよりも精通しており、サブパラメータは3、4、9となる。この例では、ルールは、重み付けパラメータまたは正規化パラメータを含まず(ただし、他の例では、ルールは含んでもよい)、パラメータは14、11、19となる。したがって、このルールは、メッセージが、一番高いパラメータを有するデバイス、すなわち第3の端末機器にルーティングされるべきであることを示し得る。特定の端末機器へのルーティングが失敗した場合、メッセージは、次に高いパラメータを有するデバイスにルーティングされることができる。
[0093]パラメータを、1または複数の絶対的または相対的閾値と比較することができる。例えば、通信をルーティングすることができる端末機器を選択するための高いパラメータを識別するために、端末機器のセットのパラメータを互いに比較することができる。別の例として、端末機器と連続チャネルを確立するかどうかを決定するために、パラメータ(例えば、高いパラメータ)を1または複数の絶対的閾値と比較することができる。連続的なチャネルを確立するための全体の閾値(overall threshold)は、所定の一連のメッセージにおいて通信を一貫してルーティングするための閾値よりも高くてもよい(が、高い必要はない)。全体の閾値と、通信を一貫してルーティングするかどうかを決定するための閾値との間の差は、チャネルの拡張された有用性を考慮すると、連続チャネルコンテキストにおいて、強い一致が重要であることが理由となり得る。いくつかの実施形態では、連続チャネルを使用するための全体の閾値は、連続チャネルを確立するための、および/または所与の一連のメッセージにおいて通信を一貫してルーティングするための閾値よりも低くてもよい(が、低い必要はない)。
[0094]インタラクション管理エンジン625は、様々なコンテキストでアカウントエンジン630とインタラクトすることができる。例えば、アカウントエンジン630は、アカウントデータストア635内のネットワークデバイスまたは端末機器の識別子を参照して、そのデバイスまたは機器に対応するアカウントを識別することができる。さらに、アカウントエンジン630は、以前の通信交換(例えば、時間、関与する他のデバイス、チャネルタイプ、解決段階、トピック、および/または関連付けられたクライアント識別子)、接続チャネル(例えば、1または複数のクライアントの各々に対して、任意のチャネルが存在するかどうか、各チャネルに関連付けられた端末機器、確立時間、使用頻度、最終使用日、任意のチャネル制約および/またはサポートされる通信のタイプを示す)、ユーザまたはエージェントの嗜好または制約(例えば、端末機器選択、応答レイテンシ、端末機器一貫性、エージェント専門知識、および/または通信タイプの嗜好又は制約に関する)、および/またはユーザまたはエージェントの特徴(例えば、発話言語、嗜好言語、地理的位置、興味など)に関するデータを維持することができる。
[0095]さらに、インタラクション管理エンジン625は、アカウントデータストア635が現在のチャネルデータを反映するように更新され得るように、様々な接続チャネルアクションについてアカウントエンジン630に警告することができる。例えば、チャネルを確立すると、インタラクション管理エンジン625は、アカウントエンジン630にその確立を通知し、ネットワークデバイス、端末機器、アカウント、およびクライアントのうちの1または複数を識別することができる。アカウントエンジン635は、(いくつかの例では)その後、利用されているエージェントの一貫性をユーザが知ることができるように、チャネルの存在をユーザに通知することができる。
[0096]インタラクション管理エンジン625は、1または複数のクライアント(および/または関連付けられたブランド)に通信をマッピングすることができる、クライアントマッピングエンジン640とさらにインタラクトすることができる。いくつかの例では、ネットワークデバイス自体から受信された通信は、クライアントに対応する識別子(例えば、クライアント、ウェブページ、またはアプリページの識別子)を含む。識別子は、(例えば、クライアントマッピングエンジン640が検出し得る)メッセージの一部として含まれてもよく、またはメッセージ包含(message−inclusive)通信における他のデータとして含まれてもよい。次いで、クライアントマッピングエンジン640は、クライアントに関する追加のデータおよび/またはクライアントの識別子を取り出すために、クライアントデータストア645内の識別子を参照することができる。
[0097]いくつかの例では、メッセージは、どのクライアントにも特に対応しないことがある。例えば、メッセージは、一般的なクエリを含んでもよい。クライアントマッピングエンジン640は、例えば、メッセージに対して意味解析を実行し、1または複数のキーワードを識別し、キーワードに関連付けられた1または複数のクライアントを識別してもよい。いくつかの例では、単一のクライアントが識別される。いくつかの例では、複数のクライアントが識別される。次に、各クライアントの識別を、ユーザが通信するクライアントを(例えば、関連付けられた端末機器を介して)選択することができるように、ネットワークデバイスを介して提示してもよい。
[0098]クライアントデータストア645は、クライアントに関連付けられた1または複数の端末機器(および/またはエージェント)の識別を含むことができる。端末ルーティングエンジン650は、ルーティング決定に影響を及ぼすように、1つ、複数、またはすべてのそのような端末機器(および/またはエージェント)の各々に関係するデータを検索または収集することができる。例えば、端末ルーティングエンジン650は、端末機器のデバイスタイプ、オペレーティングシステム、通信タイプ機能、インストールされたアプリケーションアクセサリ、地理的位置および/または識別子(例えば、IPアドレス)などの情報を記憶することができる、端末データストア655を維持することができる。いくつかの情報は、動的に更新することができる。例えば、端末機器が利用可能であるかどうかを示す情報は、(例えば)端末機器からの通信(例えば、デバイスがスリープ状態であるか、オフ/オンされているか、非アクティブ/アクティブであるかを識別すること、または期間(time period)内に入力が受信されたかどうかを識別すること)、通信ルーティング(例えば、端末機器が通信交換に関与しているか、または通信交換の一部として割り当てられているかを示すこと)、または通信交換が終了したかまたは開始したことを示すネットワークデバイスまたは端末機器からの通信に基づいて、動的に更新され得る。
[0099]様々な状況において、1または複数の通信交換に従事している(engaged)ことは、端末機器が別の通信交換に従事するために利用可能でないことを必ずしも示さない。通信タイプ(例えば、メッセージ)、クライアント識別された、またはユーザ識別されたターゲット応答時間、および/または(例えば、一般的に、またはユーザに関する)システム負荷などの様々な要因が、端末機器がどれくらいの交換に関与し得るかに影響を及ぼし得る。
[00100]インタラクション管理エンジン625は、通信交換または接続チャネルに関与する端末機器を識別した場合、端末ルーティングエンジン650に通知することができ、それは宛先(例えば、IP)アドレス、デバイスタイプ、プロトコルなど、端末機器に関する任意の関連データを端末データストア655から検索することができる。次いで、処理エンジン610は、(いくつかの例では)特定のフォーマットを有するように、特定のプロトコルに準拠するようになど、メッセージ包含通信を修正するか、または新しい通信(メッセージを含む)を生成することができる。いくつかの例では、新しいまたは修正されたメッセージは、ネットワークデバイスに対応するアカウントデータ、メッセージ記録(chronicle)、および/またはクライアントデータなどの追加のデータを含むことができる。
[00101]次いで、メッセージ送信機インタフェース660は、通信を端末機器に送信することができる。送信は、例えば、別個のハウジング内に収容された装置への有線または無線送信を含んでもよい。端末機器は、接続管理システム600と同じ又は異なるネットワーク(例えば、ローカルエリアネットワーク)内の端末機器を含むことができる。したがって、端末機器に通信を送信することは、インターネットワークまたはイントラネットワーク接続コンポーネントに通信を送信することを含むことができる。
[00102]ネットワークデバイス(例えば、ユーザによって操作される)との通信セッション中に、ボットと端末機器(例えば、ライブエージェントによって操作される)とを動的に切り替えるためのシステムおよび方法が提供される。いくつかの実装形態では、ボットは、ネットワークデバイスと自律的に通信するように構成することができる。さらに、ボットは、特定の機能のために構成され得る。機能の例は、データベースレコードを更新すること、ユーザに更新を提供すること、ユーザに関する追加のデータをエージェントに提供すること、ユーザのインテントを決定すること、およびインテントに基づいてユーザを宛先システムにルーティングすること、ユーザと通信するエージェントに対する応答を予測または提案すること、1または複数の追加のボットまたはエージェントを含むように通信セッションをエスカレートすること、および他の適切な機能を含むことができる。いくつかの実装形態では、ボットが、通信セッション中に(例えば、チャット対応(chat−enabled)インタフェースを使用して)(例えば、ユーザによって操作されている)ネットワークデバイスと通信している間に、通信サーバは、端末機器とボットを切り替えることを自動的かつ動的に決定することができる。例えば、ボットは、特定のタスク(例えば、ユーザに関連付けられたデータベースレコードを更新すること)についてユーザと通信することができ、一方で、端末機器は、より困難なタスク(例えば、技術的問題を解決するために通信チャネルを使用して通信すること)についてユーザと通信することができる。
[00103]いくつかの実装形態では、通信セッション中にボットと端末機器との間で切り替えるかどうかを決定することは、通信セッション中のメッセージの1または複数の特徴の分析に基づくことができる。さらに、メッセージ、会話、エンティティ、エージェントなどのセンチメントを表す動的センチメントパラメータを生成することができる。例えば、動的センチメントパラメータが、ユーザがボットにフラストレーションを感じていることを示す場合、システムは、ライブエージェントがユーザと通信できるように、端末機器を用いてボットを自動的に切り替えることができる。2016年6月2日に出願された米国出願第15/171,525号を参照されたい。その開示は、あらゆる目的のためにその全体が参照により本明細書に組み込まれる。いくつかの例では、ボットと端末機器との間で切り替えるかどうかの決定は、ユーザからのプロンプトなしで実行され得る。決定は、通信セッション(例えば、チャット)における現在のメッセージの特徴、以前の通信セッションにおいてユーザによって送信された以前のメッセージの特徴、会話における複数のメッセージにわたる特徴(例えば、センチメント)のトラジェクトリ、またはユーザに関連付けられた追加の情報(例えば、プロファイル情報、嗜好情報、およびユーザに関連付けられた他の適切な情報)を含む、任意の数の要因に基づいて、通信サーバにおいて自動的に実行され得る。
[00104]図7は、通信セッション中にボットと端末機器とを動的に切り替えるためのネットワーク環境のブロック図である。いくつかの実装形態では、ネットワーク環境700は、ネットワークデバイス705、通信サーバ710、端末機器715、およびボット720を含むことができる。通信サーバ710は、少なくとも1つの記憶装置を有する1または複数のプロセッサを有するサーバであってもよく、ここで説明する方法および技術を実行するように構成することができる。例えば、通信サーバ710は、(例えば、ユーザによって操作される)ネットワークデバイスと(例えば、エージェントによって操作される)端末機器との間の通信セッションを管理することができる。通信サーバ710は、ネットワークデバイス705と端末機器715とが通信セッション中に互いに通信できるように、ネットワークデバイス705と端末機器715との間に通信チャネルを確立することができる。通信セッションは、ネットワークデバイス705と端末機器715との間の1または複数のメッセージの交換を容易にすることができる。本開示は、通信セッション中のメッセージの交換に限定されない。他の形態の通信が、例えば、ビデオ通信(例えば、ビデオフィード)およびオーディオ通信(例えば、ボイスオーバーIP接続)などの通信セッションによって容易にされ得る。
[00105]いくつかの実装形態では、通信サーバ710は、ネットワークデバイス705とボット720との間に通信チャネルを確立することができる。ボット720は、実行されると、ネットワークデバイス705と自律的に通信するように構成されるコードであってもよい。例えば、ボット720は、ネットワークデバイス705に関連付けられたユーザとの会話を開始するために、および/またはネットワークデバイス705からのメッセージに自動的に応答するために、メッセージを自動的に生成するボットであってもよい。さらに、通信サーバ710は、プラットフォームに関連付けられ得る。クライアント(例えば、プラットフォームの外部システム)は、プラットフォームを使用して、内部通信システムにボットを展開(deploy)することができる。いくつかの例では、クライアントは、プラットフォームにおいて自身のボットを使用することができ、これにより、クライアントは、ここで説明する方法および技術を内部通信システムに実装することができる。
[00106]いくつかの実装形態では、ボットは、1または複数のソースによって定義することができる。例えば、データストア730は、通信サーバのクライアントによって定義される(例えば、作成または符号化される)ボットを表すコードを記憶することができる。例えば、自身のボットを定義したクライアントは、通信サーバ710にボットをロードすることができる。クライアントによって定義されたボットは、クライアントボットデータストア730に記憶することができる。データストア740は、第三者システムによって定義されるボットを表すコードを記憶することができる。例えば、第三者システムは、独立したソフトウェアベンダを含むことができる。データストア750は、通信サーバ710に関連付けられたエンティティによって定義されるボットを表すコードを記憶することができる。例えば、エンティティによって符号化されたボットは、ボットが実行され、ユーザと自律的に通信することができるように、通信サーバ710にロードされるか、または通信サーバ710によってアクセス可能である。いくつかの実装形態では、通信サーバ710は、クラウドネットワーク760を使用して、データストア730、データストア740、および/またはデータストア750に記憶されたボットにアクセスすることができる。クラウドネットワーク760は、任意のネットワークであってもよく、インターネット、パーソナルエリアネットワーク、ローカルエリアネットワーク(LAN)、キャンパスエリアネットワーク(CAN)、メトロポリタンエリアネットワーク(MAN)、広域ネットワーク(WAN)、ワイヤレスローカルエリアネットワーク(WLAN)などのオープンネットワーク、イントラネット、エクストラネット、などのプライベートネットワーク、または他のバックボーンを含むことができる。
[00107]また、端末機器715は、エージェントにより操作可能である。端末機器715は、任意のポータブル(例えば、携帯電話、タブレット、ラップトップ)または非ポータブルデバイス(例えば、電子キオスク、デスクトップコンピュータなど)であってもよい。いくつかの例では、エージェントは、端末機器715上で実行しているブラウザを使用してウェブサイトにアクセスすることができる。例えば、ウェブサイトは、端末機器715のブラウザ上で実行されるコンソール又はプラットフォームを含むことができる。エージェントは、ブラウザを使用してプラットフォームにログインすることができる。エージェントがコンソールまたはコンソールに含まれるウェブアプリケーションにアクセスを許可する前に、エージェントのアイデンティティを認証するために、1または複数のログイン証明(credentials)(例えば、ユーザ名、パスワードなど)を使用することができる。コンソールの例は、1または複数のAPI(アプリケーションプログラミングインタフェース)を含むプラットフォーム、1または複数の機能を含むダッシュボード、通信セッションを確立または参加することができる(プラグインをダウンロードする必要なく)ウェブブラウザ上で実行されるウェブホストアプリケーション、および他の適切なインタフェースを含むことができる。さらに、コンソールは、実行可能な1または複数のウェブアプリケーションまたは機能を含むことができる。ウェブアプリケーションまたは機能は、ブラウザ、通信サーバ710、ローカルサーバ、リモートサーバ、または他の適切なコンピューティングデバイスで実行することができる。例えば、ウェブアプリケーション、ネイティブアプリケーション、または機能は、エージェントがユーザと通信し、ユーザと1または複数のボットとの間の通信を見る(view)ことを可能にすることができる。
[00108]いくつかの実装形態では、通信サーバ710は、特定の通信セッション中に、ボット720と端末機器715との間で動的に切り替えるように構成することができる。例えば、通信サーバ710は、ネットワークデバイス705とボット720との間の通信セッションを容易にすることができる。ボット720は、通信セッション中にネットワークデバイス705と1または複数のメッセージを交換することによって、ネットワークデバイス705と自律的に通信するように構成することができる。通信サーバ710は、ライブエージェントがボット720の代わりにネットワークデバイス705と通信できるように、ボット720を端末機器715と(または場合によっては逆に)切り替えるかどうかを動的に決定することができる。いくつかの実装形態では、切り替えは、ネットワークデバイス705または端末機器715からのプロンプトなしで実行することができる。例えば、切り替えは、ネットワークデバイス705に端末機器を要求するように促す(prompting)ことなく、ネットワークデバイス705とボット720との間で交換されるメッセージのメッセージパラメータ(例えば、メッセージ又は一連のメッセージのセンチメントを表すスコア)に基づくことができる。
[00109]いくつかの実装形態では、通信サーバ710は、ボット720とネットワークデバイス705との間で交換されるメッセージの特徴に基づいて、ボット720と端末機器715との間で自動的に切り替えることを決定することができる。いくつかの例では、特徴(例えば、メッセージパラメータ)を決定するためにメッセージのテキストを分析することは、メッセージに関連付けられたテキストまたは非テキスト属性の分析を含むことができる。例えば、通信サーバ710は、ネットワークデバイス705からのメッセージに含まれる1または複数のテキスト行(lines)を抽出することができる。通信サーバ710は、1または複数のテキスト行がアンカー(anchor)を含むかどうかを識別することができる。アンカーの例は、極性(polarity)(例えば、単語「フラストレーションを感じる(frustrated)」は、負の極性またはフラストレーションの極性に対応し、単語「幸せな(happy)」は、正の極性に対応するなどのセンチメントまたはインテント)に関連付けられたテキストのストリングを含む。例えば、「論争」という用語は、1人のクライアントにとっては否定的であり得るが、第2のクライアントに対しては、中立的または肯定的であり得る。いくつかの例では、アンカーは、教師あり機械学習技術を使用して動的に決定され得る。例えば、記憶されたメッセージ内のパターンを見つけるために、1または複数のクラスタリングアルゴリズムを、記憶されたメッセージに対して実行することができる。クラスタ化されたメッセージは、アンカーを決定するためにさらにフィルタリングされ、評価され得る。さらに、識別されたアンカーの近くの1または複数の単語を、増幅器のためにパースする(parsed)ことができる。増幅器の一例は、例えば、「本当に(really)」、「そうではない(not really)」、「あまり(kind of)」のような、アンカーの極性に関連付けられた強度を増加または減少させる用語である。この特徴は、例えば、タイピングの速度、メッセージで使用される特殊文字の数(例えば、感嘆符、疑問符など)、(例えば、キーワード、文構造、繰り返し単語、句読点文字、および/または非冠詞単語を識別することによる)メッセージの意味解析、(例えば、選択された1または複数のカテゴリを有する)ユーザ入力、および/またはメッセージ関連統計(例えば、応答レイテンシ)を含むことができる。
[00110]非限定的な例として、メッセージパラメータは、負の極性の高い強度を示す数値であってもよい(例えば、小さい数字は負の極性を示し、大きい数字は正の極性を示す、0−100のスケールで20のメッセージパラメータ)。アルゴリズムは、メッセージパラメータを計算するために使用することができる。例えば、アルゴリズムは、教師あり機械学習技術に基づくことができる。さらなる例では、(例えば、「私はあまり好きではない(I kind of don’t like)」という文において)「あまり(kindof)」という用語がアンカー「好きではない(don’t like)」の近くにある場合、「あまり(kind of)」という用語は、負の極性の中程度の強度を示す増幅器用語として識別され得る。この場合、負の極性の中程度の強度の識別に基づいてメッセージパラメータを生成することができる。非限定的な例として、メッセージパラメータは、負の極性の中程度の強度を示す数値であってもよい(例えば、メッセージパラメータ20に対してメッセージパラメータ40)。いくつかの例では、どの二次キューが通信を記憶すべきかを決定するために、メッセージパラメータを使用することができる。
[00111]いくつかの実装形態では、メッセージの特徴は、メッセージに関連付けられたセンチメントであり得る。メッセージパラメータは、メッセージのセンチメントを表すことができる。例えば、メッセージのセンチメントが「幸せ」である場合、メッセージパラメータは、特定の値または値の範囲であり得るが、一方、メッセージのセンチメントが「怒り」である場合、メッセージパラメータは、別の値または値の範囲であり得る。ボットと端末機器との間で切り替えるかどうかの決定は、通信サーバ710で受信された新しいメッセージの各々で連続的かつ自動的に更新されるメッセージパラメータに基づくことができる。
[00112]いくつかの実装形態では、通信サーバ710は、ネットワークデバイス705から受信したメッセージに対する応答を推薦または予測することができる。例えば、通信サーバ710は、受信したメッセージに対する応答を推薦するために、ネットワークデバイス705から受信したメッセージを評価し、機械学習モデルを使用することができるメッセージ推薦システム(図10に記載)を含むことができる。メッセージ推薦システムは、エージェントがネットワークデバイス705と通信するのを支援するために、推薦されたメッセージのセットを端末機器715上に表示することができる。
[00113]図8は、マルチ通信チャネルにわたってボットタスク処理を動的に提供するためのネットワーク環境800を表すブロック図である。いくつかの実装形態では、ネットワーク環境800は、ネットワークデバイス805、端末機器810、および通信サーバ820を含むことができる。ネットワークデバイス805は、ネットワークデバイス705と同様であってもよく、したがって、簡潔にするため、ここでは説明を省略する。端末機器810は、端末機器715と同様であってもよく、したがって、簡潔にするため、ここでは説明を省略する。通信サーバ820は、通信サーバ710と同様であってもよく、したがって、簡潔にするため、ここでは説明を省略する。
[00114]通信サーバ820は、ネットワークデバイス805と端末機器810間の通信チャネルの確立を確立または容易にすることができる。図8に示すように、通信サーバ820は、ネットワークデバイス805および端末機器810が1または複数のメッセージを交換することを可能にする通信チャネルC840を確立することができる。非限定的な例として、通信チャネルC840は、ウェブサイトのウェブチャット機能であってもよく、通信チャネルB835は、モバイルデバイス(例えば、スマートフォン)上で実行されるチャットアプリケーションであってもよく、通信チャネルA830は、エージェントがユーザと通信することを可能にするボイスオーバーインターネットプロトコル(VOIP)オーディオチャネルであってもよい。
[00115]通信サーバ820は、ネットワークデバイス805と自律的に通信するようにボット825を構成することができる。いくつかの実装形態では、ボット825は、ボット825が通信チャネルC840を使用してネットワークデバイス805と通信することを可能にする1または複数のプロトコルにアクセスし、実行することができる。上述の非限定的な例を続けると、ボット825は、ウェブサイトのウェブチャット機能を介して通信するためのプロトコルにアクセスし、実行することができる。この例では、プロトコルは、ウェブチャット機能を使用してメッセージを交換するためのウェブチャット機能特有の符号化言語を含むことができる。プロトコルは、実行されると、端末機器810でエージェントによって入力されたメッセージ(例えば、テキストのストリング又は他のコンテンツ)を構造化コンテンツ(例えば、独立したデータフィールドに分離されたコンテンツ)に変換し、構造化コンテンツをウェブサイトのウェブチャット機能の要素にマッピングするコードを含むことができる。入力が端末機器810で(例えば、エージェントによって)受信されると、ボット825は、メッセージがウェブチャット機能を使用して通信されることを可能にするように、構造化コンテンツをウェブチャット機能の要素に変換することができる。
[00116]いくつかの実装形態では、ボット825は、通信チャネルB835を使用してネットワークデバイス805と通信するように構成することもできる。通信チャネルB835は、通信チャネルC840とは異なる通信チャネルであり得る。さらに、通信チャネルB835は、通信を容易にするために、通信チャネルC840に必要な要素とは異なる要素を必要とし得る。ボット825は、構造化コンテンツを通信チャネルB835の要素に変換するように構成することができる。上述の非限定的な例を続けると、通信チャネルB835は、スマートフォン上で実行されるネイティブアプリケーションのアプリ内チャット機能であってもよい。通信チャネルB835を使用する通信を容易にするために、1または複数の要素が必要とされ得る。例えば、FACEBOOK(登録商標) MESSENGERは、スマートフォン上で実行されるネイティブアプリケーションであってもよい。この例では、FACEBOOK MESSENGERの1または複数の要素は、FACEBOOK MESSENGERを使用して通信を容易にするために必要とされるFACEBOOK MESSENGER特有のテンプレートであってもよい。ボット825が通信チャネルB835を使用して通信することを可能にするプロトコルは、構造化コンテンツをFACEBOOK MESSENGERアプリケーション内でメッセージとして送信するために、構造化コンテンツをFACEBOOK MESSENGERネイティブアプリケーションのテンプレートにマッピングすることができる。
[00117]いくつかの例では、モバイルアプリケーション(例えば、モバイルネイティブアプリケーション)は、ネットワークデバイス(例えば、スマートフォン)のオペレーティングシステムを使用して実行され得る(モバイルデバイスに、または1または複数の外部サーバに記憶される)実行可能コードを含んでもよい。いくつかの例では、モバイルアプリケーションは、(モバイルデバイスで生成され、記憶された)ネイティブユーザインタフェース(UI)コンポーネントから構成されるが、(例えば、ウェブベースの符号化言語を使用して)インタプリタ言語で書かれたハイブリッドモバイルアプリケーションを含んでもよい。本開示は、モバイルネイティブアプリケーションまたはハイブリッドアプリケーションに限定されず、したがって、任意のタイプのモバイルアプリケーションが、ここで説明される方法で使用され得る。
[00118]いくつかの実装形態では、ボット825は、通信チャネルA830を使用してネットワークデバイス805と通信するように構成することもできる。通信チャネルA835は、通信チャネルC840、通信チャネルB835とは異なる通信チャネルであり得る。さらに、通信チャネルA830は、通信を容易にするために、通信チャネルC840および通信チャネルB835に必要な要素とは異なる要素を必要とし得る。ボット825は、構造化コンテンツを通信チャネルA830の要素に変換するように構成することができる。上述の非限定的な例を続けると、通信チャネルA830は、ネットワークデバイス805と端末機器810との間のVOIP音声通信リンクであり得る。通信チャネルA830を使用する通信を容易にするために、1または複数の要素が必要とされ得る。プロトコルは、通信チャネルA830に関連付けられた要素への構造化コンテンツのマッピングを含むことができる。
[00119]いくつかの実装形態では、通信サーバ820は、ボット825が、通信チャネルにかかわらず、ネットワークデバイス805と連続的に通信することができるように、異なる通信チャネル間で通信セッションを動的に、自律的に、および/または自動的に転送するように構成され得る。例えば、ネットワークデバイス805は、第1の通信チャネル845(すなわち、通信チャネルC840)を使用して端末機器810と通信してもよい。ネットワークデバイス805は、ネットワークデバイス805を操作するユーザが、通信セッションのために現在使用されている通信チャネルを変更することを意図していることを示すメッセージを送信することができる。例えば、ネットワークデバイス805は、第2の通信チャネル850が、端末機器810との通信セッションを継続するためのターゲット通信チャネルであることを示すことができる。ボット825は、通信チャネルが第1の通信チャネル845から第2の通信チャネル850に変更されるべきであるという指示を自動的に検出することができる。例えば、ボット825は、通信チャネルが変更されるべきであることを検出するために、通信セッション中に交換されるメッセージを連続的に評価してもよい。通信チャネルが変更されるべきであるという指示を検出すると、通信サーバは、ネットワークデバイス805に関連付けられたユーザ識別子を識別してもよい。例えば、ユーザデータ・データベース815は、様々なユーザのユーザ識別子を記憶してもよい。ユーザ識別子は、ネットワークデバイスを一意に識別する数字および/またはテキストのストリングであってもよい。任意の所与の時間に、通信サーバ820が、同じユーザ識別子が2つのアクティブな通信チャネルに関連付けられていると決定した場合、通信サーバ820は、ネットワークデバイスが通信セッションを継続するが、通信チャネルを変更することを要求していることを認識することができる。
[00120]通信サーバ820は、異なる通信チャネル間の連続性をサポートするように構成され得る。例えば、ターゲット通信チャネル(例えば、第2の通信チャネル850)は、第1の通信チャネル845の代わりに第2の通信チャネル850を使用して、ネットワークデバイス805との通信セッションを継続するためにボット825によって自動的に使用され得る。いくつかの実装形態では、ボット825は、第2の通信チャネル850を使用してネットワークデバイス805にメッセージを自動的に送信してもよい。メッセージをネットワークデバイス805に送信することは、通信チャネルの転送が完了したことをネットワークデバイス805に示してもよい。いくつかの実装形態では、通信サーバ820は、通信チャネルが第1の通信チャネル845から第2の通信チャネル850に変更されたことを自動的に検出してもよい。例えば、通信サーバ820は、ネットワークデバイス805が第1の通信チャネル845を使用してボット825と通信しているときに、ネットワークデバイス805に関連付けられたユーザ識別子を認識してもよい。ネットワークデバイス805が第2の通信チャネル850を使用し始める場合(例えば、通信セッション中に通信チャネルを変更する意図を示すことなく)、通信サーバ820は、ネットワークデバイス805のユーザ識別子が現在2つのアクティブな通信チャネル(例えば、第1の通信チャネル845および第2の通信チャネル850)に関連付けられていることを自動的に検出することができる。通信サーバ820は、第1の通信チャネル845がメッセージの最近の履歴(例えば、直近の5分以内に送信または交換されたメッセージ)に関連付けられ、第2の通信チャネル850がメッセージの最近の履歴(例えば、直近の数分以内)に関連付けられていないことを検出することができる。その結果、通信サーバ820は、ネットワークデバイス805が第1の通信チャネル845から第2の通信チャネル850に通信セッションを転送することを要求していることを決定することができる。通信サーバ820は、第2の通信チャネル850に関連付けられたプロトコルにアクセスし、第1の通信チャネル845を使用する代わりに、第2の通信チャネル850を使用してボット825または端末機器810がネットワークデバイス805と通信することを可能にするためにアクセスされたプロトコルを使用してボット825を実行することによって、転送を実施することができる。
[00121]いくつかの実装形態では、ネットワークデバイス805の通信チャネル使用におけるパターンを識別するために、1または複数の機械学習技術を使用することができる。例えば、ネットワークデバイス805による通信チャネルの使用は、追跡および記録され得る(そして、履歴データとして記憶される)。特定のエンティティ(例えば、会社、端末機器、エージェントなど)と通信する場合にどの通信チャネルネットワークデバイス805が最も使用する可能性が高いかを識別するために、機械学習技術を履歴データに適用することができる。端末機器810(またはボット825または任意の他の端末機器)からネットワークデバイス805への通信を開始するとき、通信サーバ820は、(機械学習技術の結果に基づいて)ネットワークデバイス805が使用する可能性が最も高いタイプの通信チャネルを確立することができる。ネットワークデバイス805が異なる通信チャネルをより頻繁に使用し始めると、通信サーバ820は、この変化傾向を識別し、最も使用された、または最も頻繁に使用された通信チャネルを使用して通信セッションを開始することができる。
[00122]図9は、機械学習技術を使用してボットタスク処理を強化するためのネットワーク環境900を表すブロック図を示す。ネットワーク環境900は、(ユーザによって操作される)ネットワークデバイス905、通信サーバ910、ならびに端末機器915および920を含んでもよい。通信サーバ910は、ネットワークデバイス905と、端末機器915および920のうちの少なくとも1つとの通信を可能にする通信チャネルの確立を容易にすることができる。
[00123]通信サーバ910は、インテリジェント・ルーティングシステム925、メッセージ推薦システム930、およびメッセージデータストア935を含んでもよい。インテリジェント・ルーティングシステム925およびメッセージ推薦システム930の各々は、特定の動作を実施するための命令を実行するプロセッサおよびメモリを有する1または複数のコンピューティングデバイスを含むことができる。いくつかの実装形態では、インテリジェント・ルーティングシステム925は、ネットワークデバイスから受信した通信を適切な宛先にインテリジェントにルーティングするように構成されたボットであってもよい。インテリジェント・ルーティングシステム925は、1または複数の機械学習技術または人工知能技術にメッセージをインテリジェントにルーティングさせるコードを実行するように構成された1または複数のプロセッサを含んでもよい。いくつかの実装形態では、インテリジェント・ルーティングシステム925は、ネットワークデバイス905から受信したメッセージに関連付けられた宛先を予測するモデルをトレーニングするために1または複数の機械学習技術を実行することができる。
[00124]非限定的な例として、インテリジェント・ルーティングシステム925は、通信サーバ910(例えば、ユーザが様々なデバイスを介して互いに通信することを可能にするように構成されたネイティブアプリケーション)によって確立されたまたは容易にされた通信チャネルを介して、ネットワークデバイス905からメッセージを受信してもよい。インテリジェント・ルーティングシステム925は、上述のある実施形態に従って、着信メッセージを評価してもよい。例えば、インテリジェント・ルーティングシステム925は、トレーニングされた機械学習モデルを使用して、受信したメッセージに含まれるコンテンツ(例えば、テキスト、オーディオクリップ、画像、顔文字(emoticons)、または他の適切なコンテンツ)を評価することができる。予測された宛先(例えば、特定の端末機器)を生成するために、メッセージのコンテンツを機械学習モデルに入力することができる。機械学習モデルは、ネットワークデバイス905から受信されたフィードバック信号940に基づいて連続的にトレーニングされ得る。いくつかの実装形態では、インテリジェント・ルーティングシステム925は、予測された宛先のネットワークデバイス905からの肯定応答を要求してもよい。非限定的な例として、インテリジェント・ルーティングシステム925は、機械学習技術を使用してメッセージを評価してもよく、評価の結果は、端末機器915がメッセージの宛先であるという予測を含むことができる。確認のために、インテリジェント・ルーティングシステム925は、フィードバック信号940を自動的に要求してもよい。例えば、フィードバック信号940は、端末機器915がメッセージの正しい宛先であるかどうかをネットワークデバイス905が確認するための要求を含むことができる(例えば、「テクニカルサポートは正しい宛先ですか?(Is Technical Support the correct destination?)」)。ネットワークデバイス905が、端末機器915が正しい宛先(例えば、ネットワークデバイス905を操作するユーザによって意図された宛先)であるという肯定応答を送信した場合、インテリジェント・ルーティングシステム925は、受信されたメッセージと合致する(exact)、または類似のコンテンツ(例えば、コンテンツにおける10パーセントの差などの類似性の閾値)を含む将来のメッセージが端末機器915にルーティングされるべきであることを予測するために、機械学習モデルをトレーニングしてもよい。しかしながら、インテリジェント・ルーティングシステム925が、端末機器915は受信メッセージの正しい又は意図された宛先ではなく、端末機器920が正しい又は意図された宛先であったことを示すフィードバック信号940を受信した場合、インテリジェント・ルーティングシステム925は、受信メッセージと合致する、または類似のコンテンツを含む将来のメッセージが(端末機器915の代わりに)端末機器920にルーティングされるべきであるという機械学習モデルをトレーニングすることができる。いくつかの実装形態では、インテリジェント・ルーティングシステム925は、将来のメッセージを端末機器920にルーティングするために機械学習モデルを直ちに更新またはトレーニングしなくてもよく、むしろ、インテリジェント・ルーティングシステム925は、受信されたメッセージと全く同じまたは類似のコンテンツを有するすべての将来のメッセージを端末機器920にルーティングする前に、閾値数の端末機器915への不正確なルーティングを待ってもよい。非限定的な例として、インテリジェント・ルーティングシステム925は、端末機器915が正しい又は意図された宛先ではないことを示すフィードバック信号を送信するネットワークデバイスの5つのインスタンスの後に、端末機器915ではなく端末機器920に(端末機器915にルーティングされると予測された)将来のメッセージをルーティングし始めてもよい。
[00125]メッセージデータストア935は、1または複数のネットワークデバイスから過去に受信された(例えば、すべてではないが)いくつかのまたはすべてのメッセージを記憶してもよい。さらに、メッセージデータストア935は、ネットワークデバイスとの以前の通信セッション中に端末機器によって送信されたいくつかのまたはすべてのメッセージを記憶してもよい。メッセージデータストア935はまた、通信セッション中にネットワークデバイスによってボットに送信されるいくつかのまたはすべてのメッセージを記憶してもよい。さらに、メッセージデータストア935は、通信セッション中にボットによってネットワークデバイスに送信されるいくつかのまたはすべてのメッセージを記憶してもよい。いくつかの実装形態では、メッセージデータストア935は、通信サーバ910において処理された(例えば、送信された、または受信された)すべてのメッセージのデータベースであってもよい。
[00126]メッセージ推薦システム930は、メッセージデータストア935に記憶されたメッセージのデータベースを分析してもよい。いくつかの実装形態では、メッセージ推薦システム930は、1または複数の機械学習アルゴリズムまたは人工知能アルゴリズムを使用して、メッセージデータストア935に記憶されたメッセージを評価してもよい。例えば、メッセージ推薦システム930は、メッセージデータストア935に記憶されたメッセージのデータベース上で、K平均クラスタリング(K−means clustering)、平均シフトクラスタリング(means−shift clustering)、DBSCAN(Density−Based Spatial Clustering of Applications with Noise)クラスタリング、混合ガウスモデル(GMM:Gaussian Mixture Models)を使用するEM(Expectation−Maximization)クラスタリング、および他の適切な機械学習アルゴリズムなどの1または複数のクラスタリングアルゴリズムを実行してもよい。いくつかの実装形態では、リカレントニューラルネットワーク(RNN)または畳み込みニューラルネットワーク(CNN)を使用して、エージェントを支援するための応答メッセージを予測することができる。いくつかの実装形態では、メッセージ推薦システム930は、通信セッション中にネットワークデバイスから受信された着信メッセージに対する応答を予測するために、すべての以前のメッセージを評価するために、サポートベクターマシン(SVM)、教師あり、半教師あり、アンサンブル技術、または教師なし機械学習技術を使用してもよい。例えば、メッセージ推薦システム930は、ネットワークデバイスから受信されたメッセージ(またはボットまたは端末機器から通信サーバ910で受信されたメッセージ)のコンテンツを評価し、評価の結果を、メッセージデータストア935に記憶された以前のメッセージの1または複数のクラスタと比較することができる。クラスタが識別されると、メッセージ推薦システム930は、信頼閾値(confidence threshold)に基づいて最も関連性のある応答メッセージを識別することができる。例えば、(例えば、通信サーバ910においてネットワークデバイス905から受信される)着信メッセージは、着信メッセージのコンテンツに基づく技術的問題に対応し得る。メッセージ推薦システム930は、着信メッセージのコンテンツの評価(例えば、テキスト評価)に基づいて、着信メッセージが技術問題に対応することを識別することができる。メッセージ推薦システム930は、技術的問題に関連付けられたメッセージのクラスタを識別するために、メッセージデータストア935にアクセスすることができる。メッセージ推薦システム930は、信頼閾値に基づいて、メッセージのクラスタ内の1または複数の応答メッセージを選択することができる。非限定的な例として、信頼性スコアを生成するために、信頼性アルゴリズムを実行することができる。信頼性スコアは、パーセンテージが低いほど、応答が着信メッセージに対する良好な予測である可能性が低く、パーセンテージが高いほど、応答が着信メッセージに対する良好な予測である可能性が高いパーセンテージ値とすることができる。最小信頼閾値は、各発見されたパターンに関連付けられた確実性または信頼性(trustworthiness)の尺度として定義され得る。さらに、信頼性アルゴリズムの例は、アプリオリアルゴリズム、2つのデータセット間の類似性を示す類似性アルゴリズム、および他の適切な信頼性アルゴリズムであり得る。
[00127]図10は、通信セッション中にリアルタイムで応答を予測するためのネットワーク環境1000を表すブロック図である。いくつかの実装形態では、ネットワーク環境1000は、通信サーバ1010、予測システム1050、メッセージデータベース1040、および機械学習モデル1060を含んでもよい。ネットワークデバイス1030は、エージェントによって操作される端末機器1020と通信することができるユーザ(例えば、ウェブサイトビジタ(visitor)、モバイルウェブサイトビジタ、またはネイティブアプリケーションユーザ)によって操作されることができる。予測システム1050は、端末機器1020のディスプレイ上に提示されるメッセージを予測することができ、端末機器を操作するエージェントは、表示された予測メッセージを選択することができる。表示された予測メッセージを選択すると、その予測メッセージは、次のメッセージとしてチャットセッションに自動的に含まれ、ネットワークデバイス1030に送信される。
[00128]例示の目的で、非限定的な例として、通信サーバ1010は、ネットワークデバイス1030と端末機器1020との間の通信チャネルの確立を容易にすることができる。通信チャネルは、通信セッション(例えば、ユーザおよびエージェントが会話に従事している期間、または会話に従事していない期間、同期通信セッション、非同期通信セッション)中に、(例えば、メッセージ、オーディオ、ビデオ、または他の適切なデータを交換することによって)ネットワークデバイス1030が端末機器1020と通信することを可能にするように構成され得る。ネットワークデバイス1030は、通信セッション中にメッセージを送信することができる。メッセージは以下のテキストを含みうる。「新しいABCスマートフォンで起こっている技術的問題ついて助けてくれませんか。(Could you please help me with a technical issue I’m experiencing with the new ABC smartphone?)」メッセージ又はメッセージのテキストストリングがリアルタイムで通信サーバ1010で受信されると、予測システム1050は、リアルタイムで受信されたメッセージ又はメッセージの一部(例えば、メッセージのテキストの一部)を自動的に評価することができる。実質的に同時に(例えば、メッセージまたはメッセージの一部の受信と同時に、またはその受信の数秒以内に)、予測システム1050は、受信したメッセージに対する応答を予測するために、機械学習モデル1060にアクセスしてもよい。例えば、予測システム1050は、受信したメッセージに類似する以前のメッセージのクラスタを識別するために、機械学習モデル1060にアクセスしてもよい。例えば、予測システム1050は、以前のメッセージのクラスタにタグを関連付けることができる。非限定的な例として、メッセージのクラスタのうちの1つは、「ABCスマートフォンに関する技術的問題」というメッセージのクラスタとしてタグ付けされ得る。「技術的問題」のクラスタ内のメッセージの一部または全部は、ABCスマートフォンなどのアイテムに関する技術的問題に関するネットワークデバイスと端末機器またはボットとの間の以前の会話に関連付けられてもよい。例えば、予測システム1050は、受信したメッセージに含まれる同一または類似の質問に対する上位10個の以前の応答を識別するために、「技術的問題」のクラスタに対して信頼性分析を実行してもよい。信頼性分析は、受信されたメッセージと、識別されたクラスタに含まれる以前のエージェント応答との間の類似性を決定する信頼性アルゴリズムを実行することを含んでもよい。信頼閾値が閾値を超える(例えば、60%を超える)限り、予測システム1050は、一番高い信頼パーセンテージを有する上位のいくつか(例えば、5、10、または任意の他の数)の以前のエージェント応答を端末機器1020に表示させることができる。以前のエージェント応答が端末機器1020で選択されると、以前のエージェント応答は、現在の通信セッションの一部としてネットワークデバイス1030に自動的に送信され得る。いくつかの実装形態では、以前のエージェント応答が端末機器1020で選択され、以前のエージェント応答が選択されると、選択された応答を端末機器1020で表示することができ、選択された応答は、ネットワークデバイス1030に送信される前にエージェントによって修正することができる。
[00129]いくつかの実装形態では、メッセージが通信サーバ1010で受信されると(メッセージは既存の通信セッションの一部である)、予測システム1050は、追加のデータを端末機器1020上に自動的に表示することができる。例えば、メッセージがネットワークデバイス1030で入力されているとき、通信サーバ1010(したがって、端末機器1020)は、メッセージのテキストストリングをリアルタイムで受信する。予測システム1050は、追加のデータを検索するため、データベースに対するクエリを決定するために、受信されたメッセージまたはメッセージの受信された部分を連続的に評価してもよい。上述の非限定的な例を続けると、通信サーバ1010が「新しいABCスマートフォンで起こっている技術的問題ついて助けてくれませんか。」というメッセージ(またはメッセージの一部)をリアルタイムで受信すると、予測システム1050は、メッセージに応答する際にエージェントをサポートするために追加のデータのクエリを実行することができるかどうかを連続的に決定することができる。この例では、ネットワークデバイス1030が通信セッション中に端末機器1020と通信していても、メッセージがネットワークデバイス1030でタイプされると、動的に変化する追加データが端末機器1020で表示されるように、予測システム1050は、メッセージがネットワークデバイス1030でタイプされ、および/または通信サーバ1010で受信されると、ABCスマートフォンに関連付けられた追加データ(例えば、技術仕様、トラブルシューティングガイドなど)について1または複数のデータベース(図示せず)にクエリを実行することができる。いくつかの実装形態では、このクエリは、ネットワークデバイスが端末機器と通信しているときにリアルタイムで行われるが、本開示はそれに限定されない。クエリの結果は、エージェントが自身でクエリを行う必要性を減らすために、端末機器に表示される。
[00130]通信サーバ1010は、クエリの後に検索された追加データに基づいてワークフローを自動的に実行することができる。非限定的な例として、通信セッション中に、ネットワークデバイス1030は、問題を示すメッセージを送信することができる。メッセージが通信サーバ1010で受信されると、予測システム1050は、問題に関連付けられたデータについて1または複数のデータベースに(リアルタイムで)クエリを実行することができる。さらに、予測システム1050は、1または複数のワークフローを実行して、検索されたデータを自動的に分析することができる。例えば、予測システム1050は、データに含まれる値の標準偏差を決定するために、検索されたデータに対して標準偏差分析を行うことができる。予測システム1050は、1または複数のワークフローを自動的に実行し、検索されたデータおよび/または検索されたデータを分析した結果を端末機器1020において表示することができるため、ライブエージェントは、自身でそれらのクエリを実行したり、その分析を実行する必要がない。いくつかの実装形態では、ワークフローは、ユーザ定義され得るか、または人工知能または機械学習技術に基づいて自動的に生成され得る。さらに、ワークフローは、メッセージ内の特定のコンテンツ、例えば、メッセージ内の特定の用語に関連付けられ得る。メッセージが特定の用語または語句を含む場合、予測システム1050は、その特定の用語または語句に関連付けられたワークフローにアクセスすることができる。ワークフローは、他のネットワークデバイスからの履歴メッセージに対する機械学習分析の結果に基づいて最適化または自動的に修正され得る。例えば、予測システム1050は、他のユーザからの他の通信を評価するために、(メッセージデータストア935に類似する)メッセージデータベース1040にアクセスすることができる。予測システム1050は、他のエージェントが、ユーザによって提供されたデータに対して特定のワークフローを実行したことを決定するか、または特定の問題に対してユーザに代わってアクセスすることができる。次いで、予測システム1050は、将来の通信が特定の問題に関連付けられると決定されたときに、それらのワークフローを学習し、ユーザのためにそれらのワークフローを実行することができる。いくつかの実装形態では、予測されたメッセージは、メッセージのタグ付けされたクラスタに含まれる以前のエージェント応答と全く同じでなはいか、または類似していない可能性があるが、むしろ、いくつかのシステムにクエリを実行し、予測されたメッセージを組み立てることによって、予測されたメッセージを構築することができる。例えば、ABCスマートフォンに関する問題に対する予測された応答を生成するために、予測システム1050は、ABCスマートフォンに対応する技術文書について第1のデータベースにクエリを実行し、ABCスマートフォンに関連付けられたビデオコンテンツデータについて第2のデータベースにクエリを実行することができる。予測された応答は、クエリされた技術文書およびクエリされたビデオコンテンツデータと共にテキストを含めることによって構築することができる。
[00131]機械学習モデル1060は、人工知能または機械学習技術を使用して生成されるモデルであってもよい。例えば、機械学習モデル1060は、教師あり、半教師あり、または教師なし機械学習技術を使用して生成されるモデルであり得る。非限定的な例として、K平均クラスタリング、平均シフトクラスタリング、DBSCANクラスタリング、混合ガウスモデル(GMM)を使用するEMクラスタリング、および他の適切な機械学習アルゴリズムなどの1または複数のクラスタリングアルゴリズムを、メッセージデータストア935に記憶されたメッセージのデータベース上で使用することができる。いくつかの実装形態では、機械学習モデル1060は、通信セッション中にネットワークデバイスから受信された着信メッセージに対する応答を予測するために、すべての以前のメッセージを評価するために、サポートベクターマシン(SVM)、教師あり、半教師あり、または教師なし機械学習技術を使用してもよい。
[00132]図11は、エージェント応答を予測するための例示的なプロセス1100を示す。メッセージデータストア935に記憶された各候補メッセージは、例えば、メッセージに関連付けられた、および/またはメッセージが送信された通信セッションに関連付けられたベクトルパラメータを含むマトリクス(matrix)に対応することができる。ベクトルパラメータの例は、メッセージ内の単語数、通信セッション内で交換されるメッセージの数、メッセージ内で使用されるアンカー、メッセージのメッセージパラメータ、および他の適切なパラメータを含むことができる。これらのベクトルパラメータの各々は、そのメッセージおよび/または通信セッションのベクトル表現としてマトリクスに記憶することができる。ネットワークデバイスと端末機器との間の通信セッションが継続し、新しいメッセージが交換されると、マトリクスは連続的に更新され得る。
[00133]非限定的な例として、ユーザとエージェントとの間で交換される1または複数のメッセージを含む現在のチャット会話1110を、新しいメッセージマトリクス1120に変換することもできる。同様に、新しいメッセージマトリクス1120は、現在のチャット会話1110内の単語数、単語自体、および現在のチャット会話1110内のメッセージに関連付けられたベクトルパラメータの数を含むことができる。いくつかの実装形態では、新しいメッセージがチャット会話1110に入力されると、新しいメッセージマトリクス1120を連続的に更新することができる。例えば、新しいメッセージの各々は、新しいメッセージマトリクス1120に含まれ得る。候補メッセージマトリクス1130、1140、および1150は、メッセージデータストア935に記憶された各メッセージ(例えば、候補メッセージ)について生成され、記憶され得る。
[00134]有利なことに、新しいメッセージマトリクス1120は、ユーザとエージェントとの間の会話が継続するにつれて動的に更新することができる。新しいメッセージマトリクス1120は、各候補メッセージマトリクス(例えば、マトリクス1130、1140、および1150)と比較することができる。例えば、マトリクスの絶対値を比較し、類似性スコアを生成することができる。最も類似する候補メッセージマトリクスを選択することができ、選択された候補メッセージマトリクスに対応する候補メッセージを、エージェントの端末機器に表示される予測メッセージとして使用することができる。例えば、マトリックスは、メッセージ内の文字数、メッセージ内の単語数、メッセージ内の例えば、感嘆符及び疑問符のような非言語文字(non−word characters)の数、及び他の適切なデータを含む、メッセージに関するデータを含むことができる。マトリクスの各ベクトルパラメータに対して値を生成することができる。いくつかの実装形態では、値は、ベクトルパラメータの重大度(severity)または強度を表すことができる。例えば、値「85」は、メッセージに含まれる正のアンカーを表すことができ、値「−14」は、メッセージに含まれる負のアンカーを表すことができる。
[00135]図12は、ネットワークデバイスとの通信セッション中にボットと端末機器との間で切り替えるための例示的なプロセス1200を示す。ブロック1210で、ボットは、インタフェースを使用して1または複数のメッセージを交換することによって、ユーザに関連付けられたネットワークデバイスと通信することができる。いくつかの実装形態では、ボットは、複数のボットから選択することができる。例えば、各ボットは、特定の機能(例えば、データベースレコードの更新を支援する)を実行するように構成することができる。ボットは、(通信セッションを開始した可能性がある)ユーザのインテントに基づいて複数のボットから選択することができる。ユーザのインテントは、ユーザによって通信サーバに送信された1または複数のメッセージを分析することによって決定することができる。
[00136]ブロック1220において、(ネットワークデバイスとボットとの間でメッセージを往復してリレーする)通信サーバは、転送ルールがチャットセッション中に満たされたことを検出することができる。例えば、転送ルールは、チャットセッションがライブエージェントにいつハンドオーバされるべきかを決定する閾値であり得る。例えば、ボットとユーザとの間の会話のメッセージパラメータを連続的にモニタし、閾値と比較することができる。メッセージパラメータが閾値を満たす場合(例えば、以下、以上、等しい、より低い、より高いなど)、通信サーバは、転送ルールが満たされたと決定することができる。いくつかの実装形態では、転送ルールが満たされるかどうかの決定は、ユーザからのプロンプトなしで(例えば、ユーザがライブエージェントと通信したいことを示す必要なしに)決定することができる。いくつかの実装形態では、転送ルールが満たされるかどうかの決定は、条件を満たすユーザ入力に基づいて決定することができる。例えば、ユーザが、新しいアイテムに関するさらなる情報を望むことを示す場合(およびチャットセッションのメッセージにおいてアイテム名を使用する場合)、転送ルールを満たす条件を満たすアイテム名を検出することができる。
[00137]ブロック1230で、通信サーバは、ボットからライブエージェントによって操作される端末機器へのチャットセッションのハンドオーバ(例えば、ボットと端末機器との間の切り替え)を開始することができる。いくつかの実装形態では、ハンドオーバを開始することは、ネットワークデバイスと通信するためにどの端末機器を選択すべきかを評価することを含むことができる。端末機器は、エージェントの専門性によってグループ化することができる。いくつかの例では、ボットとユーザとの間の通信セッションのトピックを使用して、端末機器を選択することができる。他の例では、ボットに関連付けられた(例えば、管理を担当する)端末機器は、ハンドオーバを選択または通知されることができ、次いで、端末機器は、ユーザとシームレスに通信することができる。いくつかの例では、チャットセッションが端末機器にハンドオーバされるとき、エージェントがユーザを容易に支援することができるように、チャット情報、ユーザ情報、および任意の他の追加の情報を端末機器上に提示することができる。ブロック1240において、通信サーバは、ユーザとエージェントに関連付けられた端末機器との間のチャットセッションを容易にすることができる。
[00138]図13は、ボットのエンドツーエンド管理を実行するために通信サーバによって少なくとも部分的に実行される例示的なプロセスフローである。プロセスフロー1300は、少なくとも部分的に、通信サーバ(例えば、通信サーバ1010)によって実行され得る。プロセスフロー1300は、通信サーバにロードするためにボットおよび/または端末機器が識別されるブロック1310で開始することができる。例えば、ボットは、通信サーバによって端末機器と同じように扱われ得る。
[00139]ブロック1320で、ブロック1310で識別されたボットおよび端末機器の各々についてワークフローを定義することができる。例えば、各ボットは、特定の機能を実行するように割り当てられ、又は構成されることができる。ボットが実行するために定義されたワークフローまたはタスクは、ボットの機能に対応することができる。例えば、ボットに対して役割および責任を定義することができる(例えば、ボットは、アドレス更新、パスワード更新、ユーザ情報の支援を処理する)。ボットタスク管理は、ここで説明するように、ネットワークデバイスから受信したメッセージを端末機器またはボットにルーティングすることを含むことができる。
[00140]ブロック1330で、ボットに対してメッセージをルーティングするためのルーティングプロトコルを定義することができる。例えば、通信サーバは、ユーザからどのメッセージがボットにルーティングされるべきか、エスカレーションパス(例えば、ボットからライブエージェントへ、スーパーバイザへ)、ボット通信をいつトリガすべきか、およびライブエージェント通信をいつトリガすべきかを定義する特定のキャンペーン(campaigns)などを決定するためにルーティングプロトコルを実行することができる。
[00141]ブロック1340で、ボットのタスク完了パラメータ(例えば、性能メトリック)は、各ボットの品質スコアを生成することによって評価され得る。いくつかの実装形態では、ボットの性能は、ボットに関連付けられたメッセージパラメータ(例えば、意味のある接続スコア(MCS)スコア)を評価することによって評価することができる。例えば、ユーザが特定のボットに対して一貫してフラストレーションを感じている場合、ボットに関連付けられたメッセージパラメータは低くなり得る。低いメッセージパラメータは、ボットが再プログラムすべきであるか、またはオフラインにされるべきであることを示すことができる。ブロック1350では、ユーザと通信するためのプロトコルを強化することができる。例えば、ボットは、再プログラムされ得るか、またはボットがもはや目的を果たさない場合(例えば、専門家された機能がもはや必要とされない場合)には、デコミッション(decommissioned)され得る。ユーザとの通信のためのプロトコルを強化することは、自律型ボットを実装するために実行されるボットスクリプトを修正すること、ルーティングプロトコルまたは通信スクリプトを改善するなど、ボットの特徴または態様を最適化すること、および他の適切な強化を含むことができる。
[00142]具体的な詳細は、実施形態の完全な理解を提供するために上述の説明で与えられる。しかし、これらの実施形態は、これらの特定の詳細なしに実施され得ることが理解される。例えば、不必要に詳細な点で実施形態を不明瞭にしないために、回路をブロック図として示すことができる。他の例では、周知の回路、プロセス、アルゴリズム、構造、および技術は、実施形態を不明瞭にすることを避けるために、不必要に詳細な点を除いて示され得る。
[00143]上述の技術、ブロック、ステップ、および手段の実装は、様々な方法で行うことができる。例えば、これらの技術、ブロック、ステップ、および手段は、ハードウェア、ソフトウェア、またはそれらの組合せで実施することができる。ハードウェア実装の場合、処理ユニットは、1または複数の特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSPs)、デジタル信号処理デバイス(DSPDs)、プログラマブルロジックデバイス(PLDs)、フィールドプログラマブルゲートアレイ(FPGAs)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、上述の機能を実行するように設計された他の電子ユニット、および/またはそれらの組合せ内で実装することができる。
[00144]また、実施形態の一部は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして説明できることに留意されたい。フローチャートは、動作を順次プロセスとして説明することができるが、動作の多くは、並行して又は同時に実行することができる。さらに、動作の順序を並べ替えることができる。プロセスは、その動作が完了したときに終了するが、図に含まれない追加のステップを有することができる。プロセスは、方法、機能、手順、サブルーチン、サブプログラムなどに対応することができる。プロセスが関数に対応する場合、その終了は、その関数を呼び出し関数または主関数に戻すことに対応する。
[00145]さらに、実施形態は、ハードウェア、ソフトウェア、スクリプト言語、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、および/またはそれらの任意の組合せによって実装することができる。ソフトウェア、ファームウェア、ミドルウェア、スクリプト言語、および/またはマイクロコードで実装される場合、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、記憶媒体などの機械可読媒体に記憶することができる。コードセグメントまたは機械実行可能命令は、手順、機能、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、スクリプト、クラス、または命令、データ構造、および/またはプログラムステートメントの任意の組合せを表すことができる。コードセグメントは、情報、データ、引数、パラメータ、および/またはメモリコンテンツを渡すおよび/または受信することによって、別のコードセグメントまたはハードウェア回路に結合することができる。情報、引数、パラメータ、データなどは、メモリ共有、メッセージ引渡し、チケット引渡し、ネットワーク送信などを含む任意の適切な手段を介して、引渡し、転送、または送信することができる。
[00146]ファームウェアおよび/またはソフトウェア実装の場合、方法は、ここで説明される機能を実行するモジュール(例えば、プロシージャ、関数など)を用いて実装することができる。命令を有形に実施する任意の機械可読媒体を、ここに記載の方法を実施する際に使用することができる。例えば、ソフトウェアコードは、メモリに記憶され得る。メモリは、プロセッサ内またはプロセッサの外部に実装することができる。ここで使用される「メモリ」という用語は、任意のタイプの長期、短期、揮発性、不揮発性、または他の記憶媒体を指し、任意の特定のタイプのメモリまたはメモリの数、またはメモリが記憶される媒体のタイプに限定されない。
[00147]さらに、ここで開示されるように、「記憶媒体」、「ストレージ」、または「メモリ」という用語は、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気RAM、コアメモリ、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または情報を記憶するための他の機械可読媒体を含む、データを記憶するための1または複数のメモリを表すことができる。「機械可読媒体」という用語は、ポータブルまたは固定記憶デバイス、光記憶デバイス、ワイヤレスチャネル、および/または命令および/またはデータを含む、または搬送する、記憶することができる様々な他の記憶媒体を含むが、これらに限定されない。
[00148]本開示の原理は、特定の機器および方法に関連して上で説明されたが、この説明は、単に例としてなされたものであり、本開示の範囲を限定するものではないことを明確に理解されたい。